]> git.datanom.net - hashtable.git/blobdiff - hashtable.h
almost complete
[hashtable.git] / hashtable.h
index f51018275ca3d83d877d42c9d0328c52f2f63a3f..23c8838fcea51aa5c5123d4acf8cf7c159288c63 100644 (file)
@@ -9,7 +9,24 @@
 
 typedef uint64_t (*HashFunc)(const void*);
 typedef bool (*EqualFunc)(const void*, const void*);
+typedef void (*FreeFunc)(void*);
 typedef struct _Hashtable Hashtable;
+typedef void (*ForeachFunc)(void*, void*, void*);
+
+typedef struct _HashtableIter {
+       /* Private */
+       void* dummy1;
+       void* dummy2;
+       void* dummy3;
+       int64_t dummy4;
+} HashtableIter;
+
+
+typedef struct _List {
+       void* data;
+       struct _List* next;
+} List;
+
 
 uint64_t int_hash(const void*);
 uint64_t str_hash(const void*);
@@ -19,12 +36,19 @@ bool str_equal(const void*, const void*);
 bool ptr_equal(const void*, const void*);
 
 Hashtable* hash_table_create(HashFunc hf, EqualFunc ef);
-Hashtable* hash_table_create_full(HashFunc hf, EqualFunc ef, uint32_t size);
+Hashtable* hash_table_create_notify(HashFunc hf, EqualFunc ef, FreeFunc ff);
+Hashtable* hash_table_create_full(HashFunc hf, EqualFunc ef, uint32_t size, FreeFunc ff);
 void hash_table_destroy(Hashtable* ht);
 void hash_table_print(Hashtable* ht);
 bool hash_table_insert(Hashtable* ht, const void* key, void* obj);
 void* hash_table_lookup(Hashtable* ht, const void* key);
 void* hash_table_delete(Hashtable* ht, const void* key);
+List* hash_table_keys(Hashtable* ht);
+List* hash_table_values(Hashtable* ht);
+void hash_table_list_free(List* list);
+void hash_table_foreach(Hashtable* ht, ForeachFunc, void* userdata);
+void hash_table_iter_init(HashtableIter* iter, Hashtable* ht);
+bool hash_table_iter_next(HashtableIter* iter, void** key, void** value);
 
 #endif
 
This page took 0.029033 seconds and 5 git commands to generate.