From 26d8457a5da5d70226fdbba5ed92fda8cac735f6 Mon Sep 17 00:00:00 2001 From: Mosder Date: Fri, 10 Jul 2026 12:55:39 +0200 Subject: feat: added functions for iterating over a hashmap --- analyzer/utils/hashmap.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'analyzer/utils/hashmap.c') diff --git a/analyzer/utils/hashmap.c b/analyzer/utils/hashmap.c index 8af7630..2ab8bab 100644 --- a/analyzer/utils/hashmap.c +++ b/analyzer/utils/hashmap.c @@ -96,6 +96,27 @@ void hashmap_delete(HashMap *map, void *key) { } } +HashMapNode *hashmap_first(HashMap *map) { + for (size_t i = 0; i < HASHMAP_TABLE_SIZE; i++) { + HashMapNode *node = map->table[i]; + if (node) + return node; + } + return NULL; +} + +HashMapNode *hashmap_next(HashMap *map, HashMapNode *node) { + if (node->next) + return node->next; + + for (size_t i = map->hash(node->key) + 1; i < HASHMAP_TABLE_SIZE; i++) { + HashMapNode *node = map->table[i]; + if (node) + return node; + } + return NULL; +} + void hashmap_free(HashMap *map) { for (size_t i = 0; i < HASHMAP_TABLE_SIZE; i++) { HashMapNode *curr = map->table[i]; -- cgit v1.2.3