From c8ab69ee1bb07ddd74b3332c65229d22681804e8 Mon Sep 17 00:00:00 2001 From: Yann Collet <yann.collet.73@gmail.com> Date: Tue, 21 Jun 2016 08:29:40 +0200 Subject: [PATCH] reverted to XXH_PRIVATE_API macro to get all functions in "static" mode still need to include `xxhash.h` --- Makefile | 2 +- xxhash.h | 45 +++++++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 8069e89..eac72fb 100644 --- a/Makefile +++ b/Makefile @@ -59,7 +59,7 @@ xxhsum32: xxhash.c xxhsum.c $(CC) -m32 $(FLAGS) $^ -o $@$(EXT) xxhsum_inlinedXXH: xxhsum.c - $(CC) $(FLAGS) -DXXHSUM_INCLUDE_XXHC $^ -o $@$(EXT) + $(CC) $(FLAGS) -DXXH_PRIVATE_API $^ -o $@$(EXT) test: clean xxhsum # stdin diff --git a/xxhash.h b/xxhash.h index ce7084f..27337c1 100644 --- a/xxhash.h +++ b/xxhash.h @@ -82,16 +82,16 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; /* **************************** * API modifier ******************************/ -/** XXH_INCLUDE_BODY +/** XXH_PRIVATE_API * This is useful if you want to include xxhash functions in `static` mode * in order to inline them, and remove their symbol from the public list. * Methodology : -* #define XXH_INCLUDE_BODY +* #define XXH_PRIVATE_API * #include "xxhash.h" * `xxhash.c` will also be included, so this file is still needed, * but it's not useful to compile and link it anymore. */ -#ifdef XXH_INCLUDE_BODY +#ifdef XXH_PRIVATE_API # ifndef XXH_STATIC_LINKING_ONLY # define XXH_STATIC_LINKING_ONLY # endif @@ -106,7 +106,7 @@ typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; # endif #else # define XXH_PUBLIC_API /* do nothing */ -#endif /* XXH_INCLUDE_BODY */ +#endif /* XXH_PRIVATE_API */ /*!XXH_NAMESPACE, aka Namespace Emulation : @@ -176,8 +176,7 @@ XXH64() : typedef struct XXH32_state_s XXH32_state_t; /* incomplete type */ typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ -/*! Dynamic allocation of states - Compatible with dynamic libraries */ +/*! State allocation, compatible with dynamic libraries */ XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); @@ -196,29 +195,35 @@ XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned lon XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); -/*! -These functions generate the xxHash of an input of any length provided in multiple segments. -Note that they are slower than single-direct-call functions, due to state management. -For small keys with known size, prefer `XXH32()` and `XXH64()` . +/* +These functions generate the xxHash of an input provided in multiple segments. +Note that, for small input, they are slower than single-call functions, due to state management. +For small input, prefer `XXH32()` and `XXH64()` . -XXH state must first be allocated, using XXHnn_createState() . +XXH state must first be allocated, using XXH*_createState() . -Start a new hash by initializing state with a seed, using XXHnn_reset(). +Start a new hash by initializing state with a seed, using XXH*_reset(). -Then, feed the hash state by calling XXHnn_update() as many times as necessary. +Then, feed the hash state by calling XXH*_update() as many times as necessary. Obviously, input must be allocated and read accessible. 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 XXHnn_digest(). +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 some new hashes later on, by calling again XXHnn_digest(). +and generate some new hashes later on, by calling again XXH*_digest(). When done, free XXH state space if it was allocated dynamically. */ +/* ************************** +* Utils +****************************/ + + + /* ************************** * Canonical representation ****************************/ @@ -231,10 +236,10 @@ XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); -/*! Default result type for XXH functions are primitive unsigned 32 and 64 bits. -* The canonical representation uses 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 / memory, and remain comparable on different systems and programs. +/* Default result type for XXH functions are primitive unsigned 32 and 64 bits. +* The canonical representation uses 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 / memory, and remain comparable on different systems and programs. */ @@ -269,7 +274,7 @@ XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src }; /* typedef'd to XXH64_state_t */ -# ifdef XXH_INCLUDE_BODY +# ifdef XXH_PRIVATE_API # include "xxhash.c" /* include xxhash functions as `static`, for inlining */ # endif