diff options
Diffstat (limited to 'include/memcached/genhash.h')
-rw-r--r-- | include/memcached/genhash.h | 256 |
1 files changed, 0 insertions, 256 deletions
diff --git a/include/memcached/genhash.h b/include/memcached/genhash.h deleted file mode 100644 index 235ef47..0000000 --- a/include/memcached/genhash.h +++ /dev/null @@ -1,256 +0,0 @@ -/* - * Generic hash table implementation. - * - * Copyright (c) 2006 Dustin Sallings <dustin@spy.net> - */ - -#ifndef GENHASH_H -#define GENHASH_H 1 - -#include <memcached/visibility.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/*! \mainpage genhash - * - * \section intro_sec Introduction - * - * genhash is a generic hash table implementation in C. It's - * well-tested, freely available (MIT-license) and does what you need. - * - * \section docs_sec API Documentation - * - * Jump right into <a href="group___core.html">the API docs</a> to get started. - */ - -/** - * \defgroup Core genhash core - */ - -/** - * \addtogroup Core - * @{ - */ - -/** - * Operations on keys and values in the hash table. - */ -struct hash_ops { - /** - * Function to compute a hash for the given value. - */ - int (*hashfunc)(const void *, size_t); - /** - * Function that returns true if the given keys are equal. - */ - int (*hasheq)(const void *, size_t, const void *, size_t); - /** - * Function to duplicate a key for storage. - */ - void* (*dupKey)(const void *, size_t); - /** - * Function to duplicate a value for storage. - */ - void* (*dupValue)(const void *, size_t); - /** - * Function to free a key. - */ - void (*freeKey)(void *); - /** - * Function to free a value. - */ - void (*freeValue)(void *); -}; - -/** - * The hash table structure. - */ -typedef struct _genhash genhash_t ; - -/** - * Type of update performed by an update function. - */ -enum update_type { - MODIFICATION, /**< This update is modifying an existing entry */ - NEW /**< This update is creating a new entry */ -}; - -/** - * Create a new generic hashtable. - * - * @param est the estimated number of items to store (must be > 0) - * @param ops the key and value operations - * - * @return the new genhash_t or NULL if one cannot be created - */ -MEMCACHED_PUBLIC_API -genhash_t* genhash_init(int est, struct hash_ops ops); - -/** - * Free a gen hash. - * - * @param h the genhash to free (may be NULL) - */ -MEMCACHED_PUBLIC_API -void genhash_free(genhash_t *h); - -/** - * Store an item. - * - * @param h the genhash - * @param k the key - * @param v the value - */ -MEMCACHED_PUBLIC_API -void genhash_store(genhash_t *h, const void *k, size_t klen, - const void *v, size_t vlen); - -/** - * Get the most recent value stored for the given key. - * - * @param h the genhash - * @param k the key - * - * @return the value, or NULL if one cannot be found - */ -MEMCACHED_PUBLIC_API -void* genhash_find(genhash_t *h, const void *k, size_t klen); - -/** - * Delete the most recent value stored for a key. - * - * @param h the genhash - * @param k the key - * - * @return the number of items deleted - */ -MEMCACHED_PUBLIC_API -int genhash_delete(genhash_t *h, const void *k, size_t klen); - -/** - * Delete all mappings of a given key. - * - * @param h the genhash - * @param k the key - * - * @return the number of items deleted - */ -MEMCACHED_PUBLIC_API -int genhash_delete_all(genhash_t *h, const void *k, size_t klen); - -/** - * Create or update an item in-place. - * - * @param h the genhash - * @param k the key - * @param v the new value to store for this key - * - * @return an indicator of whether this created a new item or updated - * an existing one - */ -MEMCACHED_PUBLIC_API -enum update_type genhash_update(genhash_t *h, const void *k, size_t klen, - const void *v, size_t vlen); - -/** - * Create or update an item in-place with a function. - * - * @param h hashtable - * @param key the key of the item - * @param upd function that will be called with the key and current - * value. Should return the new value. - * @param fr function to free the return value returned by the update - * function - * @param def default value - * - * @return an indicator of whether this created a new item or updated - * an existing one - */ -MEMCACHED_PUBLIC_API -enum update_type genhash_fun_update(genhash_t *h, const void *key, size_t klen, - void *(*upd)(const void *k, const void *oldv, - size_t *ns, void *a), - void (*fr)(void*), - void *arg, - const void *def, size_t deflen); - -/** - * Iterate all keys and values in a hash table. - * - * @param h the genhash - * @param iterfunc a function that will be called once for every k/v pair - * @param arg an argument to be passed to the iterfunc on each iteration - */ -MEMCACHED_PUBLIC_API -void genhash_iter(genhash_t *h, - void (*iterfunc)(const void* key, size_t nkey, - const void* val, size_t nval, - void *arg), - void *arg); - -/** - * Iterate all values for a given key in a hash table. - * - * @param h the genhash - * @param key the key to iterate - * @param iterfunc a function that will be called once for every k/v pair - * @param arg an argument to be passed to the iterfunc on each iteration - */ -MEMCACHED_PUBLIC_API -void genhash_iter_key(genhash_t *h, const void* key, size_t nkey, - void (*iterfunc)(const void* key, size_t inkey, - const void* val, size_t inval, - void *arg), - void *arg); - -/** - * Get the total number of entries in this hash table. - * - * @param h the genhash - * - * @return the number of entries in the hash table - */ -MEMCACHED_PUBLIC_API -int genhash_size(genhash_t *h); - -/** - * Remove all items from a genhash. - * - * @param h the genhash - * - * @return the number of items removed - */ -MEMCACHED_PUBLIC_API -int genhash_clear(genhash_t *h); - -/** - * Get the total number of entries in this hash table that map to the given - * key. - * - * @param h the genhash - * @param k a key - * - * @return the number of entries keyed with the given key - */ -MEMCACHED_PUBLIC_API -int genhash_size_for_key(genhash_t *h, const void *k, size_t nkey); - -/** - * Convenient hash function for strings. - * - * @param k a null-terminated string key. - * - * @return a hash value for this string. - */ -MEMCACHED_PUBLIC_API -int genhash_string_hash(const void *k, size_t nkey); - -/** - * @} - */ -#ifdef __cplusplus -} -#endif /* __cplusplus */ -#endif /* GENHASH_H */ |