Passo intermediario, ainda falta um longo caminho
[pspdecompiler.git] / hash.h
blob093c31074b8fd8efd3dea235d0c0b43cde11c849
1 #ifndef __HASH_H
2 #define __HASH_H
4 #include <stddef.h>
6 struct _hashtable;
7 typedef struct _hashtable *hashtable;
9 struct _hashpool;
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);
41 #endif /* __HASH_H */