Typedefs | Functions
tommyhash.h File Reference

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...
 

Detailed Description

Hash functions for the use with tommy_hashtable, tommy_hashdyn and tommy_hashlin.

Typedef Documentation

Hash type used in hashtables.

Function Documentation

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.

Parameters
init_valInitialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant.
void_keyPointer to the data to hash.
key_lenSize of the data to hash.
Note
This function is endianess independent.
Returns
The hash value of 32 bits.
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.

Parameters
init_valInitialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant.
void_keyPointer to the data to hash.
key_lenSize of the data to hash.
Note
This function is endianess independent.
Returns
The hash value of 64 bits.
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.

Parameters
init_valInitialization value. Using a different initialization value, you can generate a completely different set of hash values. Use 0 if not relevant.
void_keyPointer to the string to hash. It has to be 0 terminated.
Note
This function is endianess independent.
Returns
The hash value of 32 bits.
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