15#ifndef CXXUTILS_MURMURHASH2_H
16#define CXXUTILS_MURMURHASH2_H
29#define MurmurHash_mmix(h,k) { k *= M; k ^= k >> R; k *= M; h *= M; h ^= k; }
35uint32_t
MurmurHash2 (
const void * key,
int len, uint32_t seed );
36uint64_t
MurmurHash64A (
const void * key,
int len, uint64_t seed );
37uint64_t
MurmurHash64B (
const void * key,
int len, uint64_t seed );
38uint32_t
MurmurHash2A (
const void * key,
int len, uint32_t seed );
63 void Begin ( uint32_t seed = 0 )
71 void Add (
const unsigned char *
data,
int len )
79 uint32_t k = *
reinterpret_cast<const uint32_t*
>(
data);
104 static constexpr uint32_t
M = 0x5bd1e995;
105 static constexpr int R = 24;
109 while( len && ((len<4) ||
m_count) )
char data[hepevt_bytes_allocation_ATLAS]
#define MurmurHash_mmix(h, k)
void Add(const unsigned char *data, int len)
static constexpr uint32_t M
void MixTail(const unsigned char *&data, int &len)
void Begin(uint32_t seed=0)
uint32_t MurmurHash2A(const void *key, int len, uint32_t seed)
uint32_t MurmurHash2(const void *key, int len, uint32_t seed)
uint64_t MurmurHash64B(const void *key, int len, uint64_t seed)
uint32_t MurmurHashAligned2(const void *key, int len, uint32_t seed)
uint32_t MurmurHashNeutral2(const void *key, int len, uint32_t seed)
uint64_t MurmurHash64A(const void *key, int len, uint64_t seed)