LIBHASHKIT(3)
πΈ NAME πΈ
libhashkit β it's the libhashkit documentation, bestie. that's the whole name. slay π
β¨ SYNOPSIS β¨
#include <libhashkit-1.0/hashkit.h>
Compile and link with -lhashkit.
π DESCRIPTION π
okay so libhashkit is a small and thread-safe client library that hands you a whole collection of useful hashing algorithms β¨ like, it's little, it's safe to use from multiple threads, and it does hashing. main character energy fr fr π
and fun fact: libhashkit is distributed with libmemcached π«Ά iykyk
π Creating a hashkit structure π
πΈ SYNOPSIS πΈ
#include <libhashkit-1.0/hashkit.h>
Compile and link with -lhashkit
typedef struct hashkit_st hashkit_st
hashkit_st *hashkit_create(hashkit_st *hash)
Parameters
- hash -- memory address of a
hashkit_ststruct; if anullptris passed, the struct will be dynamically allocated by libhashkit
Returns
- pointer to initialized
hashkit_ststructure
hashkit_st *hashkit_clone(hashkit_st *destination, const hashkit_st *ptr)
Parameters
- destination -- memory address of a
hashkit_ststruct; if anullptris passed, the struct will be dynamically allocated by libhashkit - ptr -- pointer of the
hashkit_ststruct to copy
Returns
- pointer to a
hashkit_ststructure (destination, if notnullptr), initialized from ptr
void hashkit_free(hashkit_st *hash)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct
bool hashkit_is_allocated(const hashkit_st *hash)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct
Returns
bool, whether the hash struct was dynamically allocated
π¦ DESCRIPTION π¦
The hashkit_create() function initializes a hashkit object for use. If you pass a nullptr argument for hash, then the memory for the object is allocated. If you specify a pre-allocated piece of memory, that is initialized for use. π
The hashkit_clone() function initializes a hashkit object much like hashkit_create(), but instead of using default settings it will use the settings of the ptr hashkit object. it's giving "copy her whole vibe" β¨
The hashkit_free() frees any resources being consumed by the hashkit objects that were initialized with hashkit_create() or hashkit_clone(). let her go, bestie π«Ά
The hashkit_is_allocated() reports whether the memory was allocated for a hashkit object. detective mode π
π« RETURN VALUE π«
hashkit_create() and hashkit_clone() will return nullptr on failure or pointer to hashkit_st on success. π when it fails it fails fr
hashkit_is_allocated() returns true if the memory for the hashkit object was allocated inside of hashkit_create() or hashkit_clone(), otherwise it is false and was user-supplied memory.
π SEE ALSO π
libhashkit(3) hashkit_value(3) hashkit_function3)
yes bestie, hashkit_function3) is written exactly like that in here β missing paren, we don't fix it, we respect it π
π₯ Set Hash Function π₯
πΈ SYNOPSIS πΈ
#include <libhashkit-1.0/hashkit.h>
Compile and link with -lhashkit
typedef uint32_t (*hashkit_hash_fn)(const char *key, size_t key_length,
void *context)
Param key
- the key to generate a hash of
Param key_length
- the length of the key without any terminating zero byte
Param context
- the custom hash function context set through
hashkit_set_custom_function()orhashkit_set_custom_distribution_function()
Returns
- the custom hash function should return a hash value for key as an unsigned 32bit integer
typedef enum hashkit_return_t hashkit_return_t
enum hashkit_return_t
enumerator HASHKIT_SUCCESS
- Operation succeeded.
enumerator HASHKIT_FAILURE
- Operation failed.
enumerator HASHKIT_MEMORY_ALLOCATION_FAILURE
- Memory allocation failed.
enumerator HASHKIT_INVALID_HASH
- Invalid
hashkit_hash_algorithm_tpassed.
enumerator HASHKIT_INVALID_ARGUMENT
- Invalid argument passed.
typedef enum hashkit_hash_algorithm_t hashkit_hash_algorithm_t
enum hashkit_hash_algorithm_t
enumerator HASHKIT_HASH_DEFAULT
- Default hash algorithm (one_at_a_time).
enumerator HASHKIT_HASH_MD5
enumerator HASHKIT_HASH_CRC
enumerator HASHKIT_HASH_FNV1_64
enumerator HASHKIT_HASH_FNV1A_64
enumerator HASHKIT_HASH_FNV1_32
enumerator HASHKIT_HASH_FNV1A_32
enumerator HASHKIT_HASH_HSIEH
- Only available if libhashkit hash been built with HSIEH support.
enumerator HASHKIT_HASH_MURMUR
- Only available if libhashkit has been built with MURMUR support.
enumerator HASHKIT_HASH_MURMUR3
- Only available if libhashkit has been built with MURMUR support.
enumerator HASHKIT_HASH_JENKINS
enumerator HASHKIT_HASH_CUSTOM
- Use custom
hashkit_hash_fnfunction set throughhashkit_set_custom_function()orhashkit_set_custom_distribution_function().
hashkit_return_t hashkit_set_function(hashkit_st *hash, hashkit_hash_algorithm_t hash_algorithm)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct - hash_algorithm -- valid
hashkit_hash_algorithm_tconstant
Returns
hashkit_return_tindicating success or failure
hashkit_return_t hashkit_set_custom_function(hashkit_st *hash, hashkit_hash_fn function, void *context)
Parameters
- hash -- pointer to initialized
hashkit_ststruct - function --
hashkit_hash_fnfunction pointer to use as hash function forHASHKIT_HASH_CUSTOM - context -- pointer to an opaque user managed context for the custom hash function
Returns
hashkit_return_tindicating success or failure
hashkit_hash_algorithm_t hashkit_get_function(const hashkit_st *hash)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct
Returns
hashkit_hash_algorithm_tindicating the currently set hash algorithm to use
hashkit_return_t hashkit_set_distribution_function(hashkit_st *hash, hashkit_hash_algorithm_t hash_algorithm)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct - hash_algorithm -- valid
hashkit_hash_algrothm_tconstant
Returns
hashkit_return_tindicating success or failure
yes, hashkit_hash_algrothm_t β that's the spelling in here, keep it π
hashkit_return_t hashkit_set_custom_distribution_function(hashkit_st *hash, hashkit_hash_fn function, void *context)
Parameters
- hash -- pointer to initialized
hashkit_ststruct - function --
hashkit_hash_fnfunction pointer to use as distribution hash function forHASHKIT_HASH_CUSTOM - context -- pointer to an opaque user managed context for the custom distribution hash function
hashkit_hash_algorithm_t hashkit_get_distribution_function(const hashkit_st *hash)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct
Returns
hashkit_hash_algorithm_tindicating the currently set distribution hash algorithm to use
π¦ DESCRIPTION π¦
These functions are used to set and retrieve the key and distribution hash functions. pick your fave, set it, get it back, periodt π
π« RETURN VALUE π«
hashkit_set_function(), hashkit_set_custom_function() and the distribution equivalents return hashkit_return_t::HASHKIT_SUCCESS on success. β
hashkit_get_function() and hashkit_get_distribution_function() return hashkit_hash_algorithm_t indicating the hash function used. π
π SEE ALSO π
libhashkit(3) hashkit_create(3) hashkit_functions(3)
π§ Available Hashes π§
πΈ SYNOPSIS πΈ
#include <libhashkit-1.0/hashkit.h>
Compile and link with -lhashkit
uint32_t hashkit_default(const char *key, size_t key_length)
uint32_t hashkit_fnv1_64(const char *key, size_t key_length)
uint32_t hashkit_fnv1a_64(const char *key, size_t key_length)
uint32_t hashkit_fnv1_32(const char *key, size_t key_length)
uint32_t hashkit_fnv1a_32(const char *key, size_t key_length)
uint32_t hashkit_crc32(const char *key, size_t key_length)
uint32_t hashkit_hsieh(const char *key, size_t key_length)
uint32_t hashkit_murmur(const char *key, size_t key_length)
uint32_t hashkit_murmur3(const char *key, size_t key_length)
uint32_t hashkit_jenkins(const char *key, size_t key_length)
uint32_t hashkit_md5(const char *key, size_t key_length)
π¦ DESCRIPTION π¦
These functions generate hash values from a key using a variety of algorithms. These functions can be used standalone, or will be used according to the algorithm set with hashkit_set_function() or hashkit_set_distribution_function(). so you can call them yourself OR let the hashkit object pick for you β either way, slay β¨
The hashkit_hsieh(), hashkit_murmur() and hashkit_murmur3() functions are only available if the library is built with the appropriate flag enabled.
no flag, no function, bestie. it's giving conditional π
π« RETURN VALUE π«
A 32-bit hash value. π’
π SEE ALSO π
libhashkit(3) hashkit_create(3) hashkit_function(3)
π Generate hash value π
πΈ SYNOPSIS πΈ
#include <libhashkit-1.0/hashkit.h>
Compile and link with -lhashkit
uint32_t hashkit_value(hashkit_st *hash, const char *key, size_t
key_length)
Parameters
- hash -- pointer to an initialized
hashkit_ststruct - key -- the key to genereate a hash of
- key_length -- the length of the key without any terminating zero byte
"genereate" is exactly how it's spelled in here, we keep it, we love it π
π¦ DESCRIPTION π¦
The hashkit_value() function generates a 32-bit hash value from the given key and key_length. The hash argument is an initialized hashkit object, and distribution type and hash function is used from this object while generating the value. one call, whole vibe, obsessed π
π« RETURN VALUE π«
A 32-bit hash value. π’
π SEE ALSO π
libhashkit(3) hashkit_create(3) hashkit_function(3) hashkit_functions(3)
π SEE ALSO π
libmemcached(3) hashkit_create(3) hashkit_function(3) β
hashkit_functions(3) hashkit_value(3)
okay that's the whole page bestie, you're so welcome π β¨ this one came from libmemcached-awesome, version 1.1, dated Jul 24, 2025 β go hash something iconic π¦π
π¦ where this page comes from
- fedora 43: libmemcached-awesome-devel 1.1.4-7.fc43 Β· BSD-3-Clause
- fedora 43: libmemcached-awesome-devel 1.1.4-7.fc43 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms