aboutsummaryrefslogtreecommitdiff
path: root/src/hash.h
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-12-25 17:28:09 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-12-25 17:28:09 -0500
commitc949ff2ac3fca2bee3c3c6e97a63d151b7c31594 (patch)
treec1c419845c0838ae15afe1da0cc54bf6447a760e /src/hash.h
parentc8e8d7de47a829f9dbc18b1072453c7a48e67ddb (diff)
downloadnetcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.zip
netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.gz
netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.bz2
netcosm-c949ff2ac3fca2bee3c3c6e97a63d151b7c31594.tar.xz
implement child lookup via hash table
Diffstat (limited to 'src/hash.h')
-rw-r--r--src/hash.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/hash.h b/src/hash.h
index ae86b26..23586f4 100644
--- a/src/hash.h
+++ b/src/hash.h
@@ -1,3 +1,4 @@
+#include <stdbool.h>
#include <stddef.h>
/* simple, generic chained hash map implementation */
@@ -17,6 +18,12 @@ void *hash_insert(void*, const void *key, const void *data);
/* returns NULL if not found */
void *hash_lookup(void*, const void *key);
+bool hash_remove(void *ptr, void *key);
+
+/* use like you would strtok_r */
+/* allocates a buffer that's freed once all elements are processed */
+void *hash_iterate(void *map, void **saved, void **keyptr);
+
struct hash_pair {
void *key;
unsigned char value[0];
@@ -25,6 +32,9 @@ struct hash_pair {
/* insert n key->pair members of size pairsize */
void hash_insert_pairs(void*, const struct hash_pair*, size_t pairsize, size_t n);
+/* gets the original pointer used to store the tuple */
+void *hash_getkeyptr(void*, const void *key);
+
#define SIMP_HASH(TYPE, NAME) \
unsigned NAME (const void *key) \
{ \