]>
git.datanom.net - hashtable.git/blob - hashtable.h
23c8838fcea51aa5c5123d4acf8cf7c159288c63
8 #define TABLESIZE (1<<20)
10 typedef uint64_t (*HashFunc
)(const void*);
11 typedef bool (*EqualFunc
)(const void*, const void*);
12 typedef void (*FreeFunc
)(void*);
13 typedef struct _Hashtable Hashtable
;
14 typedef void (*ForeachFunc
)(void*, void*, void*);
16 typedef struct _HashtableIter
{
25 typedef struct _List
{
31 uint64_t int_hash(const void*);
32 uint64_t str_hash(const void*);
33 uint64_t ptr_hash(const void*);
34 bool int_equal(const void*, const void*);
35 bool str_equal(const void*, const void*);
36 bool ptr_equal(const void*, const void*);
38 Hashtable
* hash_table_create(HashFunc hf
, EqualFunc ef
);
39 Hashtable
* hash_table_create_notify(HashFunc hf
, EqualFunc ef
, FreeFunc ff
);
40 Hashtable
* hash_table_create_full(HashFunc hf
, EqualFunc ef
, uint32_t size
, FreeFunc ff
);
41 void hash_table_destroy(Hashtable
* ht
);
42 void hash_table_print(Hashtable
* ht
);
43 bool hash_table_insert(Hashtable
* ht
, const void* key
, void* obj
);
44 void* hash_table_lookup(Hashtable
* ht
, const void* key
);
45 void* hash_table_delete(Hashtable
* ht
, const void* key
);
46 List
* hash_table_keys(Hashtable
* ht
);
47 List
* hash_table_values(Hashtable
* ht
);
48 void hash_table_list_free(List
* list
);
49 void hash_table_foreach(Hashtable
* ht
, ForeachFunc
, void* userdata
);
50 void hash_table_iter_init(HashtableIter
* iter
, Hashtable
* ht
);
51 bool hash_table_iter_next(HashtableIter
* iter
, void** key
, void** value
);
This page took 0.058945 seconds and 4 git commands to generate.