From a1acf425cfb00a41c7862c915eb024207658c814 Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Mon, 25 Jan 2016 16:10:46 -0500 Subject: inventory works --- src/hash.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/hash.c') diff --git a/src/hash.c b/src/hash.c index a34e530..da15157 100644 --- a/src/hash.c +++ b/src/hash.c @@ -260,3 +260,26 @@ size_t hash_size(void *ptr) struct hash_map *map = ptr; return map->n_entries; } + +void *hash_dup(void *ptr) +{ + struct hash_map *map = ptr; + + struct hash_map *ret = calloc(1, sizeof(struct hash_map)); + memcpy(ret, map, sizeof(*ret)); + + ret->table = calloc(ret->table_sz, sizeof(struct hash_node*)); + ret->n_entries = 0; + + void *save; + while(1) + { + void *key; + void *data = hash_iterate(ptr, &save, &key); + if(!data) + break; + ptr = NULL; + hash_insert(ret, key, data); + } + return ret; +} -- cgit v1.1