diff options
Diffstat (limited to 'nerv/lib/common.c')
-rw-r--r-- | nerv/lib/common.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/nerv/lib/common.c b/nerv/lib/common.c index d977f8d..7fd2331 100644 --- a/nerv/lib/common.c +++ b/nerv/lib/common.c @@ -4,7 +4,7 @@ int nerv_error(lua_State *L, const char *err_mesg_fmt, ...) { va_list ap; va_start(ap, err_mesg_fmt); lua_pushstring(L, "[nerv] internal error: "); - lua_pushvfstring(L, err_mesg_fmt, ap); + lua_pushvfstring(L, err_mesg_fmt, ap); lua_concat(L, 2); lua_error(L); va_end(ap); @@ -56,7 +56,7 @@ void luaN_append_methods(lua_State *L, const luaL_Reg *mlist) { } } -HashMap *hashmap_create(size_t size, HashKey_t hfunc, HashMapCmp_t cmp) { +HashMap *nerv_hashmap_create(size_t size, HashKey_t hfunc, HashMapCmp_t cmp) { HashMap *res = (HashMap *)malloc(sizeof(HashMap)); res->bucket = calloc(size, sizeof(HashNode)); res->cmp = cmp; @@ -65,7 +65,7 @@ HashMap *hashmap_create(size_t size, HashKey_t hfunc, HashMapCmp_t cmp) { return res; } -void *hashmap_getval(HashMap *h, const char *key) { +void *nerv_hashmap_getval(HashMap *h, const char *key) { size_t idx = h->hfunc(key) % h->size; HashNode *ptr; for (ptr = h->bucket[idx]; ptr; ptr = ptr->next) @@ -76,7 +76,7 @@ void *hashmap_getval(HashMap *h, const char *key) { return NULL; } -void hashmap_setval(HashMap *h, const char *key, void *val) { +void nerv_hashmap_setval(HashMap *h, const char *key, void *val) { size_t idx = h->hfunc(key) % h->size; HashNode *ptr = malloc(sizeof(HashNode)); ptr->next = h->bucket[idx]; @@ -85,7 +85,7 @@ void hashmap_setval(HashMap *h, const char *key, void *val) { ptr->val = val; } -void hashmap_clear(HashMap *h) { +void nerv_hashmap_clear(HashMap *h) { size_t i; for (i = 0; i < h->size; i++) { @@ -100,6 +100,11 @@ void hashmap_clear(HashMap *h) { } } +void nerv_hashmap_destroy(HashMap *h) { + nerv_hashmap_clear(h); + free(h); +} + size_t bkdr_hash(const char *key) { unsigned int seed = 131; unsigned int res = 0; |