Scroll to navigation

LIBHASHKIT(3) libmemcached-awesome LIBHASHKIT(3)

NAME

libhashkit - libhashkit Documentation

SYNOPSIS

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

DESCRIPTION

libhashkit is a small and thread-safe client library that provides a collection of useful hashing algorithms.

libhashkit is distributed with libmemcached.

Creating a hashkit structure

SYNOPSIS

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


hash -- memory address of a hashkit_st struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit
pointer to initialized hashkit_st structure


  • destination -- memory address of a hashkit_st struct; if a nullptr is passed, the struct will be dynamically allocated by libhashkit
  • ptr -- pointer of the hashkit_st struct to copy

pointer to a hashkit_st structure (destination, if not nullptr), initialized from ptr


hash -- pointer to an initialized hashkit_st struct


hash -- pointer to an initialized hashkit_st struct
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.

The hashkit_free() frees any resources being consumed by the hashkit objects that were initialized with hashkit_create() or hashkit_clone().

The hashkit_is_allocated() reports whether the memory was allocated for a hashkit object.

RETURN VALUE

hashkit_create() and hashkit_clone() will return nullptr on failure or pointer to hashkit_st on success.

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)

Set Hash Function

SYNOPSIS

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

the key to generate a hash of
the length of the key without any terminating zero byte
the custom hash function context set through hashkit_set_custom_function() or hashkit_set_custom_distribution_function()
the custom hash function should return a hash value for key as an unsigned 32bit integer



Operation succeeded.

Operation failed.


Invalid hashkit_hash_algorithm_t passed.

Invalid argument passed.



Default hash algorithm (one_at_a_time).







Only available if libhashkit hash been built with HSIEH support.

Only available if libhashkit has been built with MURMUR support.

Only available if libhashkit has been built with MURMUR support.


Use custom hashkit_hash_fn function set through hashkit_set_custom_function() or hashkit_set_custom_distribution_function().


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

hashkit_return_t indicating success or failure


  • 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

hashkit_return_t indicating success or failure


hash -- pointer to an initialized hashkit_st struct
hashkit_hash_algorithm_t indicating the currently set hash algorithm to use


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

hashkit_return_t indicating success or failure


  • 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



hash -- pointer to an initialized hashkit_st struct
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.

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












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().

The hashkit_hsieh(), hashkit_murmur() and hashkit_murmur3() functions are only available if the library is built with the appropriate flag enabled.

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

  • hash -- pointer to an initialized hashkit_st struct
  • key -- the key to genereate a hash of
  • key_length -- the length of the key without any terminating zero byte



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.

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)

March 6, 2023 1.1