Hash functions for the use with tommy_hashtable, tommy_hashdyn and tommy_hashlin. More...
Go to the source code of this file.
Typedefs | |
typedef tommy_key_t | tommy_hash_t |
Hash type used in hashtables. More... | |
Functions | |
tommy_uint32_t | tommy_hash_u32 (tommy_uint32_t init_val, const void *void_key, tommy_size_t key_len) |
Hash function with a 32 bits result. More... | |
tommy_uint64_t | tommy_hash_u64 (tommy_uint64_t init_val, const void *void_key, tommy_size_t key_len) |
Hash function with a 64 bits result. More... | |
tommy_uint32_t | tommy_strhash_u32 (tommy_uint64_t init_val, const void *void_key) |
String hash function with a 32 bits result. More... | |
tommy_uint32_t | tommy_inthash_u32 (tommy_uint32_t key) |
Integer reversible hash function for 32 bits. More... | |
tommy_uint64_t | tommy_inthash_u64 (tommy_uint64_t key) |
Integer reversible hash function for 64 bits. More... | |
Hash functions for the use with tommy_hashtable, tommy_hashdyn and tommy_hashlin.
typedef tommy_key_t tommy_hash_t |
Hash type used in hashtables.
tommy_uint32_t tommy_hash_u32 | ( | tommy_uint32_t | init_val, |
const void * | void_key, | ||
tommy_size_t | key_len | ||
) |
Hash function with a 32 bits result.
Implementation of the Robert Jenkins "lookup3" hash 32 bits version, from http://www.burtleburtle.net/bob/hash/doobs.html, function hashlittle().
This hash is designed to provide a good overall performance in all platforms, including 32 bits. If you target only 64 bits, you can use faster hashes, like SpookyHash or FarmHash.
init_val | Initialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant. |
void_key | Pointer to the data to hash. |
key_len | Size of the data to hash. |
tommy_uint64_t tommy_hash_u64 | ( | tommy_uint64_t | init_val, |
const void * | void_key, | ||
tommy_size_t | key_len | ||
) |
Hash function with a 64 bits result.
Implementation of the Robert Jenkins "lookup3" hash 64 bits versions, from http://www.burtleburtle.net/bob/hash/doobs.html, function hashlittle2().
This hash is designed to provide a good overall performance in all platforms, including 32 bits. If you target only 64 bits, you can use faster hashes, like SpookyHash or FarmHash.
init_val | Initialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant. |
void_key | Pointer to the data to hash. |
key_len | Size of the data to hash. |
tommy_uint32_t tommy_strhash_u32 | ( | tommy_uint64_t | init_val, |
const void * | void_key | ||
) |
String hash function with a 32 bits result.
Implementation is based on the the Robert Jenkins "lookup3" hash 32 bits version, from http://www.burtleburtle.net/bob/hash/doobs.html, function hashlittle().
This hash is designed to handle strings with an unknown length. If you know the string length, the other hash functions are surely faster.
init_val | Initialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant. |
void_key | Pointer to the string to hash. It has to be 0 terminated. |
tommy_uint32_t tommy_inthash_u32 | ( | tommy_uint32_t | key | ) |
Integer reversible hash function for 32 bits.
Implementation of the Robert Jenkins "4-byte Integer Hashing", from http://burtleburtle.net/bob/hash/integer.html
tommy_uint64_t tommy_inthash_u64 | ( | tommy_uint64_t | key | ) |
Integer reversible hash function for 64 bits.
Implementation of the Thomas Wang "Integer Hash Function", from http://web.archive.org/web/20071223173210/http://www.concentric.net/~Ttwang/tech/inthash.htm