Go to the source code of this file.
Macros | |
#define | FORCE_INLINE static |
#define | MEM_MODULE |
#define | XXH_CPU_LITTLE_ENDIAN (*(const char*)(&g_one)) |
#define | XXH_FORCE_ALIGN_CHECK 1 |
#define | XXH_FORCE_NATIVE_FORMAT 0 |
#define | XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) |
#define | XXH_get32bits(p) XXH_readLE32_align(p, endian, align) |
#define | XXH_get64bits(p) XXH_readLE64_align(p, endian, align) |
#define | XXH_rotl32(x, r) ((x << r) | (x >> (32 - r))) |
#define | XXH_rotl64(x, r) ((x << r) | (x >> (64 - r))) |
#define | XXH_STATIC_ASSERT(c) { enum { XXH_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */ |
#define | XXH_STATIC_LINKING_ONLY |
Typedefs | |
typedef unsigned char | BYTE |
typedef signed int | S32 |
typedef unsigned short | U16 |
typedef unsigned int | U32 |
typedef unsigned long long | U64 |
Enumerations | |
enum | XXH_alignment { XXH_aligned, XXH_unaligned, XXH_aligned, XXH_unaligned } |
enum | XXH_endianess { XXH_bigEndian =0, XXH_littleEndian =1, XXH_bigEndian =0, XXH_littleEndian =1 } |
Variables | |
static const int | g_one = 1 |
static const U32 | PRIME32_1 = 2654435761U |
static const U32 | PRIME32_2 = 2246822519U |
static const U32 | PRIME32_3 = 3266489917U |
static const U32 | PRIME32_4 = 668265263U |
static const U32 | PRIME32_5 = 374761393U |
static const U64 | PRIME64_1 = 11400714785074694791ULL |
static const U64 | PRIME64_2 = 14029467366897019727ULL |
static const U64 | PRIME64_3 = 1609587929392839161ULL |
static const U64 | PRIME64_4 = 9650029242287828579ULL |
static const U64 | PRIME64_5 = 2870177450012600261ULL |
#define FORCE_INLINE static |
Definition at line 125 of file lz4/xxhash.c.
#define MEM_MODULE |
Definition at line 526 of file lz4/xxhash.c.
#define XXH_CPU_LITTLE_ENDIAN (*(const char*)(&g_one)) |
Definition at line 212 of file lz4/xxhash.c.
#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 to 0 when the input data is guaranteed to be aligned.
Definition at line 90 of file lz4/xxhash.c.
#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.
Definition at line 77 of file lz4/xxhash.c.
#define XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) |
Definition at line 178 of file lz4/xxhash.c.
#define XXH_get32bits | ( | p | ) | XXH_readLE32_align(p, endian, align) |
#define XXH_get64bits | ( | p | ) | XXH_readLE64_align(p, endian, align) |
Definition at line 185 of file lz4/xxhash.c.
Definition at line 186 of file lz4/xxhash.c.
#define XXH_STATIC_ASSERT | ( | c | ) | { enum { XXH_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */ |
Definition at line 243 of file lz4/xxhash.c.
#define XXH_STATIC_LINKING_ONLY |
Definition at line 107 of file lz4/xxhash.c.
typedef unsigned char BYTE |
Definition at line 141 of file lz4/xxhash.c.
typedef signed int S32 |
Definition at line 144 of file lz4/xxhash.c.
typedef unsigned short U16 |
Definition at line 142 of file lz4/xxhash.c.
typedef unsigned int U32 |
Definition at line 143 of file lz4/xxhash.c.
typedef unsigned long long U64 |
Definition at line 531 of file lz4/xxhash.c.
enum XXH_alignment |
Enumerator | |
---|---|
XXH_aligned | |
XXH_unaligned | |
XXH_aligned | |
XXH_unaligned |
Definition at line 219 of file lz4/xxhash.c.
enum XXH_endianess |
Enumerator | |
---|---|
XXH_bigEndian | |
XXH_littleEndian | |
XXH_bigEndian | |
XXH_littleEndian |
Definition at line 207 of file lz4/xxhash.c.
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 321 of file lz4/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 504 of file lz4/xxhash.c.
XXH_PUBLIC_API void XXH32_copyState | ( | XXH32_state_t * | dstState, |
const XXH32_state_t * | srcState | ||
) |
Definition at line 361 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH32_state_t* XXH32_createState | ( | void | ) |
Definition at line 351 of file lz4/xxhash.c.
XXH_PUBLIC_API unsigned int XXH32_digest | ( | const XXH32_state_t * | state_in | ) |
Definition at line 485 of file lz4/xxhash.c.
FORCE_INLINE U32 XXH32_digest_endian | ( | const XXH32_state_t * | state, |
XXH_endianess | endian | ||
) |
Definition at line 449 of file lz4/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 264 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH32_freeState | ( | XXH32_state_t * | statePtr | ) |
Definition at line 355 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical | ( | const XXH32_canonical_t * | src | ) |
Definition at line 511 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH32_reset | ( | XXH32_state_t * | statePtr, |
unsigned int | seed | ||
) |
Definition at line 366 of file lz4/xxhash.c.
Definition at line 256 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH32_update | ( | XXH32_state_t * | state_in, |
const void * | input, | ||
size_t | len | ||
) |
Definition at line 437 of file lz4/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 379 of file lz4/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 693 of file lz4/xxhash.c.
XXH_PUBLIC_API void XXH64_canonicalFromHash | ( | XXH64_canonical_t * | dst, |
XXH64_hash_t | hash | ||
) |
Definition at line 877 of file lz4/xxhash.c.
XXH_PUBLIC_API void XXH64_copyState | ( | XXH64_state_t * | dstState, |
const XXH64_state_t * | srcState | ||
) |
Definition at line 731 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH64_state_t* XXH64_createState | ( | void | ) |
Definition at line 721 of file lz4/xxhash.c.
XXH_PUBLIC_API unsigned long long XXH64_digest | ( | const XXH64_state_t * | state_in | ) |
Definition at line 864 of file lz4/xxhash.c.
FORCE_INLINE U64 XXH64_digest_endian | ( | const XXH64_state_t * | state, |
XXH_endianess | endian | ||
) |
Definition at line 813 of file lz4/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 624 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH64_freeState | ( | XXH64_state_t * | statePtr | ) |
Definition at line 725 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical | ( | const XXH64_canonical_t * | src | ) |
Definition at line 884 of file lz4/xxhash.c.
Definition at line 616 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH64_reset | ( | XXH64_state_t * | statePtr, |
unsigned long long | seed | ||
) |
Definition at line 736 of file lz4/xxhash.c.
Definition at line 608 of file lz4/xxhash.c.
XXH_PUBLIC_API XXH_errorcode XXH64_update | ( | XXH64_state_t * | state_in, |
const void * | input, | ||
size_t | len | ||
) |
Definition at line 803 of file lz4/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 748 of file lz4/xxhash.c.
Definition at line 102 of file lz4/xxhash.c.
Modify the local functions below should you wish to use some other memory routines for malloc(), free()
Definition at line 101 of file lz4/xxhash.c.
and for memcpy()
Definition at line 105 of file lz4/xxhash.c.
Definition at line 165 of file lz4/xxhash.c.
Definition at line 554 of file lz4/xxhash.c.
Definition at line 234 of file lz4/xxhash.c.
Definition at line 594 of file lz4/xxhash.c.
FORCE_INLINE U32 XXH_readLE32 | ( | const void * | ptr, |
XXH_endianess | endian | ||
) |
Definition at line 229 of file lz4/xxhash.c.
FORCE_INLINE U32 XXH_readLE32_align | ( | const void * | ptr, |
XXH_endianess | endian, | ||
XXH_alignment | align | ||
) |
Definition at line 221 of file lz4/xxhash.c.
FORCE_INLINE U64 XXH_readLE64 | ( | const void * | ptr, |
XXH_endianess | endian | ||
) |
Definition at line 589 of file lz4/xxhash.c.
FORCE_INLINE U64 XXH_readLE64_align | ( | const void * | ptr, |
XXH_endianess | endian, | ||
XXH_alignment | align | ||
) |
Definition at line 581 of file lz4/xxhash.c.
Definition at line 194 of file lz4/xxhash.c.
Definition at line 568 of file lz4/xxhash.c.
XXH_PUBLIC_API unsigned XXH_versionNumber | ( | void | ) |
Definition at line 244 of file lz4/xxhash.c.
|
static |
Definition at line 211 of file lz4/xxhash.c.
|
static |
Definition at line 250 of file lz4/xxhash.c.
|
static |
Definition at line 251 of file lz4/xxhash.c.
|
static |
Definition at line 252 of file lz4/xxhash.c.
|
static |
Definition at line 253 of file lz4/xxhash.c.
|
static |
Definition at line 254 of file lz4/xxhash.c.
|
static |
Definition at line 602 of file lz4/xxhash.c.
|
static |
Definition at line 603 of file lz4/xxhash.c.
|
static |
Definition at line 604 of file lz4/xxhash.c.
|
static |
Definition at line 605 of file lz4/xxhash.c.
|
static |
Definition at line 606 of file lz4/xxhash.c.