2 * Author: Humberto Naves (hsnaves@gmail.com)
11 typedef struct _hashtable
*hashtable
;
14 typedef struct _hashpool
*hashpool
;
16 typedef unsigned int (*hashfn
) (void *key
);
17 typedef int (*hashequalsfn
) (void *key1
, void *key2
, unsigned int hash
);
18 typedef void (*hashtraversefn
) (void *key
, void *value
, unsigned int hash
, void *arg
);
20 hashpool
hashpool_create (size_t numtables
, size_t numentries
);
21 void hashpool_destroy (hashpool pool
);
23 hashtable
hashtable_alloc (hashpool pool
, unsigned int size
, hashfn hashfn
, hashequalsfn eqfn
);
24 void hashtable_free (hashtable ht
, hashtraversefn destroyfn
, void *arg
);
26 unsigned int hashtable_count (hashtable ht
);
28 void hashtable_insert (hashtable ht
, void *key
, void *value
);
29 void hashtable_inserthash (hashtable ht
, void *key
, void *value
, unsigned int hash
);
30 void *hashtable_search (hashtable ht
, void *key
, void **key_found
);
31 void *hashtable_searchhash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
32 int hashtable_haskey (hashtable ht
, void *key
, void **key_found
);
33 int hashtable_haskeyhash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
34 void *hashtable_remove (hashtable ht
, void *key
, void **key_found
);
35 void *hashtable_removehash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
37 void hashtable_traverse (hashtable ht
, hashtraversefn traversefn
, void *arg
);
39 int hashtable_string_compare (void *key1
, void *key2
, unsigned int hash
);
40 int hashtable_pointer_compare (void *key1
, void *key2
, unsigned int hash
);
42 unsigned int hashtable_hash_bytes (unsigned char *key
, size_t len
);
43 unsigned int hashtable_hash_string (void *key
);