HASHKIT_SET...ON_FUNCTION(3)

ok bestie, sit DOWN πŸ’… we're doing HASHKIT_SET...ON_FUNCTION(3) from libmemcached-awesome and it's literally all about picking which hash function your hashkit is gonna use. no cap. let's get into it 🫢

✨ NAME ✨

hashkit_set_custom_distribution_function β€” libhashkit Documentation 🌸


✨ SYNOPSIS ✨

First things first, plug it in:

#include <libhashkit-1.0/hashkit.h>
       Compile and link with -lhashkit

Okay so here's the function pointer type you'll be passing around like it's a hall pass:

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() or hashkit_set_custom_distribution_function()
  • Returns β€” the custom hash function should return a hash value for key as an unsigned 32bit integer

Then the return type, iconic, no notes:

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_t passed.
  • enumerator HASHKIT_INVALID_ARGUMENT β€” Invalid argument passed.

And now the algorithm menu, the whole vibe:

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). the main character tbh
  • 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_fn function set through hashkit_set_custom_function() or hashkit_set_custom_distribution_function().

okay now the actual functions, one by one, bestie, don't scroll 🧚

hashkit_return_t hashkit_set_function(hashkit_st *hash,
hashkit_hash_algorithm_t hash_algorithm)

Parameters

  • hash -- pointer to an initialized hashkit_st struct
  • hash_algorithm -- valid hashkit_hash_algorithm_t constant

Returns

hashkit_return_t indicating 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_st struct
  • function -- hashkit_hash_fn function pointer to use as hash function for HASHKIT_HASH_CUSTOM
  • context -- pointer to an opaque user managed context for the custom hash function

Returns

hashkit_return_t indicating success or failure


hashkit_hash_algorithm_t hashkit_get_function(const hashkit_st *hash)

Parameters

  • hash -- pointer to an initialized hashkit_st struct

Returns

hashkit_hash_algorithm_t indicating 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_st struct
  • hash_algorithm -- valid hashkit_hash_algrothm_t constant

Returns

hashkit_return_t indicating success or failure


hashkit_return_t hashkit_set_custom_distribution_function(hashkit_st
*hash, hashkit_hash_fn function, void *context)

Parameters

  • hash -- pointer to initialized hashkit_st struct
  • function -- hashkit_hash_fn function pointer to use as distribution hash function for HASHKIT_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_st struct

Returns

hashkit_hash_algorithm_t indicating the currently set distribution hash algorithm to use


✨ DESCRIPTION ✨

These functions are used to set and retrieve the key and distribution hash functions. that's it, that's the whole thing πŸ’– you set 'em, you get 'em.


✨ 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) β€” go read these next bestie, fr fr πŸ“š


and that's the whole page!! this was version 1.1, dated Jul 24, 2025, straight from the libmemcached-awesome girlies πŸ’œ slay, go hash something responsibly πŸ‘‘

πŸ“¦ where this page comes from