aboutsummaryrefslogtreecommitdiff
path: root/nerv/lib/common.c
diff options
context:
space:
mode:
Diffstat (limited to 'nerv/lib/common.c')
-rw-r--r--nerv/lib/common.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/nerv/lib/common.c b/nerv/lib/common.c
index d977f8d..879ae9d 100644
--- a/nerv/lib/common.c
+++ b/nerv/lib/common.c
@@ -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;