35 lines
983 B
C
35 lines
983 B
C
|
/* Copyright 2006 David Crawshaw, released under the new BSD license.
|
||
|
* Version 2, from http://www.zentus.com/c/hash.html */
|
||
|
|
||
|
/* Changed from just "hash" to "hive_hash" to reduce collisions when linked
|
||
|
* in with erlang
|
||
|
*
|
||
|
* Dave Smith (dsmith@thehive.com) 12/08
|
||
|
*/
|
||
|
|
||
|
#ifndef __HIVE_HASH__
|
||
|
#define __HIVE_HASH__
|
||
|
|
||
|
/* Opaque structure used to represent hashtable. */
|
||
|
typedef struct hive_hash hive_hash;
|
||
|
|
||
|
/* Create new hashtable. */
|
||
|
hive_hash * hive_hash_new(unsigned int size);
|
||
|
|
||
|
/* Free hashtable. */
|
||
|
void hive_hash_destroy(hive_hash *h);
|
||
|
|
||
|
/* Add key/value pair. Returns non-zero value on error (eg out-of-memory). */
|
||
|
int hive_hash_add(hive_hash *h, const char *key, void *value);
|
||
|
|
||
|
/* Return value matching given key. */
|
||
|
void * hive_hash_get(hive_hash *h, const char *key);
|
||
|
|
||
|
/* Remove key from table, returning value. */
|
||
|
void * hive_hash_remove(hive_hash *h, const char *key);
|
||
|
|
||
|
/* Returns total number of keys in the hashtable. */
|
||
|
unsigned int hive_hash_size(hive_hash *h);
|
||
|
|
||
|
#endif
|