From 2a81620aa5b740d7f77aff8177a983b7492b8ea0 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Fri, 25 Dec 2015 14:25:16 -0500 Subject: tons of stuff --- src/hash.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'src/hash.c') diff --git a/src/hash.c b/src/hash.c index 2ca757c..52a5b93 100644 --- a/src/hash.c +++ b/src/hash.c @@ -1,4 +1,6 @@ #include "hash.h" +#include +#include struct hash_node { const void *key; @@ -13,8 +15,9 @@ struct hash_map { size_t table_sz; }; -unsigned hash_djb(const char *str) +unsigned hash_djb(const void *ptr) { + const char *str = ptr; unsigned hash = 5381; char c; while((c = *str++)) @@ -25,6 +28,12 @@ unsigned hash_djb(const char *str) return hash; } +/* wrapper to supress warnings */ +int compare_strings(const void *a, const void *b) +{ + return strcmp(a,b); +} + void *hash_init(size_t sz, unsigned (*hash_fn)(const void*), int (*compare_keys)(const void*, const void*)) { @@ -98,3 +107,15 @@ void *hash_lookup(void *ptr, const void *key) } return NULL; } + +void hash_insert_pairs(void *ptr, const struct hash_pair *pairs, + size_t pairsize, size_t n) +{ + const char *iter = (const char*)pairs; + for(unsigned i = 0; i < n; ++i) + { + const struct hash_pair *pair = (const struct hash_pair*)iter; + hash_insert(ptr, pair->key, pair); + iter += pairsize; + } +} -- cgit v1.1