ATLAS Offline Software
|
Classes | |
struct | XXH32_canonical_t |
Canonical (big endian) representation of XXH32_hash_t. More... | |
Macros | |
#define | XXH_HAS_ATTRIBUTE(x) 0 |
#define | XXH_C23_VN 201711L |
#define | XXH_HAS_C_ATTRIBUTE(x) 0 |
#define | XXH_HAS_CPP_ATTRIBUTE(x) 0 |
#define | XXH_FALLTHROUGH /* fallthrough */ |
#define | XXH_NOESCAPE |
Typedefs | |
typedef struct XXH32_state_s | XXH32_state_t |
Streaming functions generate the xxHash value from an incremental input. More... | |
Contains functions used in the classic 32-bit xxHash algorithm.
struct XXH32_state_s XXH32_state_t |
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()
.
The opaque state struct for the XXH32 streaming API.
XXH_PUBLIC_API XXH_PUREF 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
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 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 XXH_MALLOCF XXH32_state_t* XXH32_createState | ( | void | ) |
Allocates an XXH32_state_t.
Must be freed with XXH32_freeState().
NULL
on failure. XXH_PUBLIC_API XXH_PUREF 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 XXH_PUREF 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.