// Copyright (C) 2011 Davis E. King ([email protected]) | |
// License: Boost Software License See LICENSE.txt for the full license. | |
namespace dlib | |
{ | |
// ---------------------------------------------------------------------------------------- | |
uint32 murmur_hash3 ( | |
const void* key, | |
const int len, | |
const uint32 seed = 0 | |
); | |
/*! | |
requires | |
- key == a pointer to a block of memory len bytes long | |
ensures | |
- returns a 32bit hash of the len bytes pointed to by key. | |
- Each value of seed results in a different hash function being used. | |
(e.g. murmur_hash3(key,len,0) should generally not be equal to murmur_hash3(key,len,1)) | |
- This function is machine architecture agnostic and should always give the same | |
hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x86_32. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
inline uint32 murmur_hash3_2 ( | |
const uint32 v1, | |
const uint32 v2 | |
); | |
/*! | |
ensures | |
- returns a 32bit hash of the two integers given to this function. | |
- This function is machine architecture agnostic and should always give the same | |
hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x86_32. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
inline uint32 murmur_hash3_3 ( | |
const uint32 v1, | |
const uint32 v2, | |
const uint32 v3 | |
); | |
/*! | |
ensures | |
- returns a 32bit hash of the three integers given to this function. | |
- This function is machine architecture agnostic and should always give the same | |
hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x86_32. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
std::pair<uint64,uint64> murmur_hash3_128bit ( | |
const void* key, | |
const int len, | |
const uint64 seed = 0 | |
); | |
/*! | |
requires | |
- key == a pointer to a block of memory len bytes long | |
ensures | |
- returns a 128bit hash (as two 64bit numbers) of the len bytes pointed to by key. | |
- Each value of seed results in a different hash function being used. | |
(e.g. murmur_hash3_128bit(key,len,0) should generally not be equal to | |
murmur_hash3_128bit(key,len,1)) | |
- This function is machine architecture agnostic and should always give the same | |
hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x64_128. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
std::pair<uint64,uint64> murmur_hash3_128bit ( | |
const uint32& v1, | |
const uint32& v2, | |
const uint32& v3, | |
const uint32& v4 | |
); | |
/*! | |
ensures | |
- returns a 128bit hash (as two 64bit numbers) of the 4 integers given to this | |
function. | |
- This function is machine architecture agnostic and should always give the | |
same hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x64_128. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
std::pair<uint64,uint64> murmur_hash3_128bit_3 ( | |
uint64 k1, | |
uint64 k2, | |
uint64 k3 | |
); | |
/*! | |
ensures | |
- returns a 128bit hash (as two 64bit numbers) of the 3 integers given to this | |
function. | |
- This function is machine architecture agnostic and should always give the | |
same hash value when presented with the same inputs. | |
- This hashing algorithm is Austin Appleby's excellent MurmurHash3_x64_128. | |
See: http://code.google.com/p/smhasher/ | |
!*/ | |
// ---------------------------------------------------------------------------------------- | |
} | |