
Classes | |
| struct | XXH32_canonical_t |
| Canonical (big endian) representation of XXH32_hash_t. More... | |
Macros | |
| #define | XXH_FALLTHROUGH |
| #define | XXH_HAS_ATTRIBUTE(x) 0 |
| #define | XXH_HAS_C_ATTRIBUTE(x) 0 |
| #define | XXH_HAS_CPP_ATTRIBUTE(x) 0 |
Typedefs | |
| typedef struct XXH32_state_s | XXH32_state_t |
| The opaque state struct for the XXH32 streaming API. More... | |
Contains functions used in the classic 32-bit 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 single-call 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 nn-bits 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().
Example code for incrementally hashing a file:
| XXH_PUBLIC_API XXH32_hash_t XXH32 | ( | const void * | input, |
| size_t | length, | ||
| XXH32_hash_t | seed | ||
| ) |
Calculates the 32-bit hash of input using xxHash32.
Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark): 5.4 GB/s
| input | The block of data to be hashed, at least length bytes in size. |
| length | The length of input, in bytes. |
| seed | The 32-bit 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.| XXH_PUBLIC_API 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. | XXH_PUBLIC_API 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_PUBLIC_API XXH32_state_t* XXH32_createState | ( | void | ) |
Allocates an XXH32_state_t.
Must be freed with XXH32_freeState().
NULL on failure. | XXH_PUBLIC_API 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.| XXH_PUBLIC_API 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(). |
| XXH_PUBLIC_API 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.| XXH_PUBLIC_API 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 32-bit seed to alter the hash result predictably. |
statePtr must not be NULL.| XXH_PUBLIC_API 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.