ezEngine  Milestone 7
Hashing.h
1 
2 #pragma once
3 
4 #include <Foundation/Basics.h>
5 
6 
8 class EZ_FOUNDATION_DLL ezHashing
9 {
10 public:
13  {
14  EZ_FORCE_INLINE StringWrapper(const char* str) : m_str(str) {}
15  const char* m_str;
16  };
17 
19  static ezUInt32 CRC32Hash(const void* pKey, size_t uiSizeInBytes); // [tested]
20 
22  static ezUInt32 MurmurHash(const void* pKey, size_t uiSizeInByte, ezUInt32 uiSeed = 0); // [tested]
23 
25  static ezUInt64 MurmurHash64(const void* pKey, size_t uiSizeInByte, ezUInt64 uiSeed = 0); // [tested]
26 
28  template <size_t N>
29  static ezUInt32 MurmurHash(const char (&str)[N], ezUInt32 uiSeed = 0); // [tested]
30 
34  static ezUInt32 MurmurHash(StringWrapper str, ezUInt32 uiSeed = 0); // [tested]
35 };
36 
40 template <typename T>
42 {
43  static ezUInt32 Hash(const T& value);
44  static bool Equal(const T& a, const T& b);
45 };
46 
47 #include <Foundation/Algorithm/Implementation/Hashing_inl.h>
48 #include <Foundation/Algorithm/Implementation/HashingMurmur_inl.h>
49