Bug in var->Def
[pspdecompiler.git] / hash.h
blob68832a56239409d45821b243e8e1f667a1bce9de
1 /**
2 * Author: Humberto Naves (hsnaves@gmail.com)
3 */
5 #ifndef __HASH_H
6 #define __HASH_H
8 #include <stddef.h>
10 struct _hashtable;
11 typedef struct _hashtable *hashtable;
13 struct _hashpool;
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);
45 #endif /* __HASH_H */