From f7041112f179aa79b6e315e7d57afbf76d3cd8bb Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Fri, 25 Dec 2015 17:28:09 -0500 Subject: implement child lookup via hash table --- src/hash.h | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/hash.h') 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 #include /* 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) \ { \ -- cgit v1.1