From bf330c19cd3813da8a9c0ae4f48316747f3fa93a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Sun, 28 Nov 2021 01:27:24 +0300 Subject: hashmap: hashma_destroy Added function to free all of a hashmap's content before freeing the hashmap's own memory. --- src/hashmap.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/hashmap.h') diff --git a/src/hashmap.h b/src/hashmap.h index 981c21b..52df625 100644 --- a/src/hashmap.h +++ b/src/hashmap.h @@ -19,6 +19,8 @@ #define HASHMAP_GROW_RATE 2 #endif +typedef void (hashmap_cb)(const void *key, void *value); + struct hashmap { struct node **buckets; size_t init_cap; @@ -49,9 +51,13 @@ void *hashmap_resolve(struct hashmap *hm, const char *key); */ void *hashmap_remove(struct hashmap *hm, const char *key); +/* Iterate over keys in the hashmap */ +void hashmap_walk(struct hashmap *hm, hashmap_cb); + +/* free hashmap related memory calling a function before freeing each node */ +void hashmap_destroy(struct hashmap *hm, hashmap_cb cb); + /* free hashmap related memory */ void hashmap_free(struct hashmap *hm); -void hashmap_walk(struct hashmap *hm, void (*fn)(const void *key, void *value)); - #endif -- cgit v1.2.3