Wire Sysio Wire Sysion 1.0.0
|
Go to the source code of this file.
Macros | |
#define | XXH_FORCE_NATIVE_FORMAT 0 |
#define | XXH_FORCE_ALIGN_CHECK 1 |
#define | XXH_STATIC_LINKING_ONLY |
#define | FORCE_INLINE static |
#define | XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) |
#define | XXH_rotl32(x, r) |
#define | XXH_rotl64(x, r) |
#define | XXH_CPU_LITTLE_ENDIAN (*(const char*)(&g_one)) |
#define | XXH_STATIC_ASSERT(c) |
#define | XXH_get32bits(p) |
#define | MEM_MODULE |
#define | XXH_get64bits(p) |
Typedefs | |
typedef unsigned char | BYTE |
typedef unsigned short | U16 |
typedef unsigned int | U32 |
typedef unsigned long long | U64 |
Enumerations | |
enum | XXH_endianess { XXH_bigEndian =0 , XXH_littleEndian =1 } |
enum | XXH_alignment { XXH_aligned , XXH_unaligned } |
#define XXH_FORCE_ALIGN_CHECK 1 |
XXH_FORCE_ALIGN_CHECK : This is a minor performance trick, only useful with lots of very small keys. It means : check for aligned/unaligned input. The check costs one initial branch per hash; set it to 0 when the input is guaranteed to be aligned, or when alignment doesn't matter for performance.
#define XXH_FORCE_NATIVE_FORMAT 0 |
XXH_FORCE_MEMORY_ACCESS : By default, access to unaligned memory is controlled by memcpy()
, which is safe and portable. Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. The below switch allow to select different access method for improved performance. Method 0 (default) : use memcpy()
. Safe and portable. Method 1 : __packed
statement. It depends on compiler extension (ie, not portable). This method is safe if your compiler supports it, and generally as fast or faster than memcpy
. Method 2 : direct access. This method doesn't depend on compiler but violate C standard. It can generate buggy code on targets which do not support unaligned memory accesses. But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) See http://stackoverflow.com/a/32095106/646947 for details. Prefer these methods in priority order (0 > 1 > 2)
XXH_ACCEPT_NULL_INPUT_POINTER : If the input pointer is a null pointer, xxHash default behavior is to trigger a memory access error, since it is a bad pointer. When this option is enabled, xxHash output for null input pointers will be the same as a null-length input. By default, this option is disabled. To enable it, uncomment below define :
XXH_FORCE_NATIVE_FORMAT : By default, xxHash library provides endian-independent Hash values, based on little-endian convention. Results are therefore identical for little-endian and big-endian CPU. This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. Should endian-independence be of no importance for your application, you may set the #define below to 1, to improve speed for Big-endian CPU. This option has no impact on Little_Endian CPU.
#define XXH_get32bits | ( | p | ) |
#define XXH_get64bits | ( | p | ) |
#define XXH_rotl32 | ( | x, | |
r ) |
#define XXH_rotl64 | ( | x, | |
r ) |
#define XXH_STATIC_ASSERT | ( | c | ) |
enum XXH_alignment |
enum XXH_endianess |
XXH_PUBLIC_API unsigned int XXH32 | ( | const void * | input, |
size_t | length, | ||
unsigned int | seed ) |
XXH32() : Calculate the 32-bits hash of sequence "length" bytes stored at memory address "input". The memory between input & input+length must be valid (allocated and read-accessible). "seed" can be used to alter the result predictably. Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s
Definition at line 320 of file xxhash.c.
XXH_PUBLIC_API void XXH32_canonicalFromHash | ( | XXH32_canonical_t * | dst, |
XXH32_hash_t | hash ) |
Default XXH result types are basic unsigned 32 and 64 bits. The canonical representation follows human-readable write convention, aka big-endian (large digits first). These functions allow transformation of hash result into and from its canonical format. This way, hash values can be written into a file or buffer, and remain comparable across different systems and programs.
Definition at line 503 of file xxhash.c.
XXH_PUBLIC_API void XXH32_copyState | ( | XXH32_state_t * | dstState, |
const XXH32_state_t * | srcState ) |
XXH_PUBLIC_API XXH32_state_t * XXH32_createState | ( | void | ) |
XXH_PUBLIC_API unsigned int XXH32_digest | ( | const XXH32_state_t * | state_in | ) |
Definition at line 484 of file xxhash.c.
FORCE_INLINE U32 XXH32_digest_endian | ( | const XXH32_state_t * | state, |
XXH_endianess | endian ) |
Definition at line 448 of file xxhash.c.
FORCE_INLINE U32 XXH32_endian_align | ( | const void * | input, |
size_t | len, | ||
U32 | seed, | ||
XXH_endianess | endian, | ||
XXH_alignment | align ) |
Definition at line 263 of file xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH32_freeState | ( | XXH32_state_t * | statePtr | ) |
XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical | ( | const XXH32_canonical_t * | src | ) |
XXH_PUBLIC_API XXH_errorcode XXH32_reset | ( | XXH32_state_t * | statePtr, |
unsigned int | seed ) |
Definition at line 365 of file xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH32_update | ( | XXH32_state_t * | state_in, |
const void * | input, | ||
size_t | len ) |
Definition at line 436 of file xxhash.c.
FORCE_INLINE XXH_errorcode XXH32_update_endian | ( | XXH32_state_t * | state, |
const void * | input, | ||
size_t | len, | ||
XXH_endianess | endian ) |
Definition at line 378 of file xxhash.c.
XXH_PUBLIC_API unsigned long long XXH64 | ( | const void * | input, |
size_t | length, | ||
unsigned long long | seed ) |
XXH64() : Calculate the 64-bits hash of sequence of length "len" stored at memory address "input". "seed" can be used to alter the result predictably. This function runs faster on 64-bits systems, but slower on 32-bits systems (see benchmark).
Definition at line 692 of file xxhash.c.
XXH_PUBLIC_API void XXH64_canonicalFromHash | ( | XXH64_canonical_t * | dst, |
XXH64_hash_t | hash ) |
Definition at line 876 of file xxhash.c.
XXH_PUBLIC_API void XXH64_copyState | ( | XXH64_state_t * | dstState, |
const XXH64_state_t * | srcState ) |
XXH_PUBLIC_API XXH64_state_t * XXH64_createState | ( | void | ) |
XXH_PUBLIC_API unsigned long long XXH64_digest | ( | const XXH64_state_t * | state_in | ) |
Definition at line 863 of file xxhash.c.
FORCE_INLINE U64 XXH64_digest_endian | ( | const XXH64_state_t * | state, |
XXH_endianess | endian ) |
Definition at line 812 of file xxhash.c.
FORCE_INLINE U64 XXH64_endian_align | ( | const void * | input, |
size_t | len, | ||
U64 | seed, | ||
XXH_endianess | endian, | ||
XXH_alignment | align ) |
Definition at line 623 of file xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH64_freeState | ( | XXH64_state_t * | statePtr | ) |
XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical | ( | const XXH64_canonical_t * | src | ) |
XXH_PUBLIC_API XXH_errorcode XXH64_reset | ( | XXH64_state_t * | statePtr, |
unsigned long long | seed ) |
Definition at line 735 of file xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH64_update | ( | XXH64_state_t * | state_in, |
const void * | input, | ||
size_t | len ) |
Definition at line 802 of file xxhash.c.
FORCE_INLINE XXH_errorcode XXH64_update_endian | ( | XXH64_state_t * | state, |
const void * | input, | ||
size_t | len, | ||
XXH_endianess | endian ) |
Definition at line 747 of file xxhash.c.
FORCE_INLINE U32 XXH_readLE32 | ( | const void * | ptr, |
XXH_endianess | endian ) |
FORCE_INLINE U32 XXH_readLE32_align | ( | const void * | ptr, |
XXH_endianess | endian, | ||
XXH_alignment | align ) |
FORCE_INLINE U64 XXH_readLE64 | ( | const void * | ptr, |
XXH_endianess | endian ) |
FORCE_INLINE U64 XXH_readLE64_align | ( | const void * | ptr, |
XXH_endianess | endian, | ||
XXH_alignment | align ) |
XXH_PUBLIC_API unsigned XXH_versionNumber | ( | void | ) |