Browse Source

plString Hash for unordered containers

Adam Johnson 11 years ago committed by Michael Hansen
parent
commit
249f26c53f
  1. 29
      Sources/Plasma/CoreLib/plString.h

29
Sources/Plasma/CoreLib/plString.h

@ -598,6 +598,35 @@ public:
static plString Fill(size_t count, char c); static plString Fill(size_t count, char c);
public: public:
/** Functor that hashes a string for unordered containers.
* \note The hash is case sensitive.
*/
struct hash
{
size_t operator()(const plString& str) const
{
uint32_t hash = 0;
for (size_t i = 0; i < str.GetSize(); ++i) {
hash += str.CharAt(i);
hash += (hash << 10);
hash ^= (hash >> 6);
}
hash += (hash << 3);
hash ^= (hash >> 11);
hash += (hash << 15);
return hash;
}
};
/** Functor that hashes a string for unordered containers.
* \remarks This returns the hash of the lower-case variant of the string.
*/
struct hash_i : hash
{
size_t operator()(const plString& str) const
{ return hash::operator()(str.ToLower()); }
};
/** Functor which compares two strings case-insensitively for sorting. */ /** Functor which compares two strings case-insensitively for sorting. */
struct less_i struct less_i
{ {

Loading…
Cancel
Save