7 typedef struct _hashtable
*hashtable
;
10 typedef struct _hashpool
*hashpool
;
12 typedef unsigned int (*hashfn
) (void *key
);
13 typedef int (*hashequalsfn
) (void *key1
, void *key2
, unsigned int hash
);
14 typedef void (*hashtraversefn
) (void *key
, void *value
, unsigned int hash
, void *arg
);
16 hashpool
hashpool_create (size_t numtables
, size_t numentries
);
17 void hashpool_destroy (hashpool pool
);
19 hashtable
hashtable_alloc (hashpool pool
, unsigned int size
, hashfn hashfn
, hashequalsfn eqfn
);
20 void hashtable_free (hashtable ht
, hashtraversefn destroyfn
, void *arg
);
22 unsigned int hashtable_count (hashtable ht
);
24 void hashtable_insert (hashtable ht
, void *key
, void *value
);
25 void hashtable_inserthash (hashtable ht
, void *key
, void *value
, unsigned int hash
);
26 void *hashtable_search (hashtable ht
, void *key
, void **key_found
);
27 void *hashtable_searchhash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
28 int hashtable_haskey (hashtable ht
, void *key
, void **key_found
);
29 int hashtable_haskeyhash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
30 void *hashtable_remove (hashtable ht
, void *key
, void **key_found
);
31 void *hashtable_removehash (hashtable ht
, void *key
, void **key_found
, unsigned int hash
);
33 void hashtable_traverse (hashtable ht
, hashtraversefn traversefn
, void *arg
);
35 int hashtable_string_compare (void *key1
, void *key2
, unsigned int hash
);
36 int hashtable_pointer_compare (void *key1
, void *key2
, unsigned int hash
);
38 unsigned int hashtable_hash_bytes (unsigned char *key
, size_t len
);
39 unsigned int hashtable_hash_string (void *key
);