xxHash 0.8.2
Extremely fast noncryptographic hash function

Data Structures  
struct  XXH32_canonical_t 
Canonical (big endian) representation of XXH32_hash_t. More...  
Typedefs  
typedef struct XXH32_state_s  XXH32_state_t 
The opaque state struct for the XXH32 streaming API.  
Functions  
XXH32_hash_t  XXH32 (const void *input, size_t length, XXH32_hash_t seed) 
Calculates the 32bit hash of input using xxHash32.  
XXH32_state_t *  XXH32_createState (void) 
Allocates an XXH32_state_t.  
XXH_errorcode  XXH32_freeState (XXH32_state_t *statePtr) 
Frees an XXH32_state_t.  
void  XXH32_copyState (XXH32_state_t *dst_state, const XXH32_state_t *src_state) 
Copies one XXH32_state_t to another.  
XXH_errorcode  XXH32_reset (XXH32_state_t *statePtr, XXH32_hash_t seed) 
Resets an XXH32_state_t to begin a new hash.  
XXH_errorcode  XXH32_update (XXH32_state_t *statePtr, const void *input, size_t length) 
Consumes a block of input to an XXH32_state_t.  
XXH32_hash_t  XXH32_digest (const XXH32_state_t *statePtr) 
Returns the calculated hash value from an XXH32_state_t.  
void  XXH32_canonicalFromHash (XXH32_canonical_t *dst, XXH32_hash_t hash) 
Converts an XXH32_hash_t to a big endian XXH32_canonical_t.  
XXH32_hash_t  XXH32_hashFromCanonical (const XXH32_canonical_t *src) 
Converts an XXH32_canonical_t to a native XXH32_hash_t.  
Contains functions used in the classic 32bit xxHash algorithm.
struct XXH32_state_s XXH32_state_t 
The opaque state struct for the XXH32 streaming API.
Streaming functions generate the xxHash value from an incremental input. This method is slower than singlecall functions, due to state management. For small inputs, prefer XXH32()
and XXH64()
, which are better optimized.
An XXH state must first be allocated using XXH*_createState()
.
Start a new hash by initializing the state with a seed using XXH*_reset()
.
Then, feed the hash state by calling XXH*_update()
as many times as necessary.
The function returns an error code, with 0 meaning OK, and any other value meaning there is an error.
Finally, a hash value can be produced anytime, by using XXH*_digest()
. This function returns the nnbits hash as an int or long long.
It's still possible to continue inserting input into the hash state after a digest, and generate new hash values later on by invoking XXH*_digest()
.
When done, release the state using XXH*_freeState()
.
XXH32_hash_t XXH32  (  const void *  input, 
size_t  length,  
XXH32_hash_t  seed  
) 
Calculates the 32bit hash of input
using xxHash32.
Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s
See Single Shot Example for an example.
input  The block of data to be hashed, at least length bytes in size. 
length  The length of input , in bytes. 
seed  The 32bit seed to alter the hash's output predictably. 
input
and input
+ length
must be valid, readable, contiguous memory. However, if length
is 0
, input
may be NULL
. In C++, this also must be TriviallyCopyable.XXH32_state_t * XXH32_createState  (  void  ) 
Allocates an XXH32_state_t.
Must be freed with XXH32_freeState().
NULL
on failure. XXH_errorcode XXH32_freeState  (  XXH32_state_t *  statePtr  ) 
Frees an XXH32_state_t.
Must be allocated with XXH32_createState().
statePtr  A pointer to an XXH32_state_t allocated with XXH32_createState(). 
void XXH32_copyState  (  XXH32_state_t *  dst_state, 
const XXH32_state_t *  src_state  
) 
Copies one XXH32_state_t to another.
dst_state  The state to copy to. 
src_state  The state to copy from. 
dst_state
and src_state
must not be NULL
and must not overlap. XXH_errorcode XXH32_reset  (  XXH32_state_t *  statePtr, 
XXH32_hash_t  seed  
) 
Resets an XXH32_state_t to begin a new hash.
This function resets and seeds a state. Call it before XXH32_update().
statePtr  The state struct to reset. 
seed  The 32bit seed to alter the hash result predictably. 
statePtr
must not be NULL
.XXH_errorcode XXH32_update  (  XXH32_state_t *  statePtr, 
const void *  input,  
size_t  length  
) 
Consumes a block of input
to an XXH32_state_t.
Call this to incrementally consume blocks of data.
statePtr  The state struct to update. 
input  The block of data to be hashed, at least length bytes in size. 
length  The length of input , in bytes. 
statePtr
must not be NULL
. input
and input
+ length
must be valid, readable, contiguous memory. However, if length
is 0
, input
may be NULL
. In C++, this also must be TriviallyCopyable.XXH32_hash_t XXH32_digest  (  const XXH32_state_t *  statePtr  ) 
Returns the calculated hash value from an XXH32_state_t.
statePtr
, so you can update, digest, and update again.statePtr  The state struct to calculate the hash from. 
statePtr
must not be NULL
.void XXH32_canonicalFromHash  (  XXH32_canonical_t *  dst, 
XXH32_hash_t  hash  
) 
Converts an XXH32_hash_t to a big endian XXH32_canonical_t.
dst  The XXH32_canonical_t pointer to be stored to. 
hash  The XXH32_hash_t to be converted. 
dst
must not be NULL
.The default return values from XXH functions are unsigned 32 and 64 bit integers.
The canonical representation uses big endian convention, the same convention as humanreadable numbers (large digits first).
This way, hash values can be written into a file or buffer, remaining comparable across different systems.
The following functions allow transformation of hash values to and from their canonical format.
XXH32_hash_t XXH32_hashFromCanonical  (  const XXH32_canonical_t *  src  ) 
Converts an XXH32_canonical_t to a native XXH32_hash_t.
src  The XXH32_canonical_t to convert. 
src
must not be NULL
.