diff options
| author | Mosder <xmosder12@gmail.com> | 2026-07-28 16:38:04 +0200 |
|---|---|---|
| committer | Mosder <xmosder12@gmail.com> | 2026-07-28 16:38:04 +0200 |
| commit | 9e874301350a70a1ba40b5508878d559f68f8f4a (patch) | |
| tree | 89f561b31bdda9bed936961dd7ef0268228a5b69 /analyzer/structures/hashmap.c | |
| parent | 95763527e73c0d06d3887e4a2da22f627f13bfaa (diff) | |
refactor: generalized dynamic arrays with structures/array.h
Diffstat (limited to 'analyzer/structures/hashmap.c')
| -rw-r--r-- | analyzer/structures/hashmap.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/analyzer/structures/hashmap.c b/analyzer/structures/hashmap.c index 5eb27ae..53fd5fc 100644 --- a/analyzer/structures/hashmap.c +++ b/analyzer/structures/hashmap.c @@ -7,25 +7,25 @@ HashMap *hashmap_new( size_t key_size, - size_t value_size, + size_t val_size, size_t (*hash)(void *key), int (*compare)(void *key1, void *key2), void (*key_cleanup)(void *key), - void (*value_cleanup)(void *key) + void (*val_cleanup)(void *val) ) { HashMap *map = safe_malloc(sizeof(HashMap)); // initialize NULLs memset(map->table, 0, HASHMAP_TABLE_SIZE * sizeof(HashMapNode *)); map->key_size = key_size; - map->value_size = value_size; + map->val_size = val_size; map->hash = hash; map->compare = compare; map->key_cleanup = key_cleanup; - map->value_cleanup = value_cleanup; + map->val_cleanup = val_cleanup; return map; } -void hashmap_put(HashMap *map, void *key, void *value) { +void hashmap_put(HashMap *map, void *key, void *val) { size_t key_hash = map->hash(key); HashMapNode *node = map->table[key_hash]; @@ -34,10 +34,10 @@ void hashmap_put(HashMap *map, void *key, void *value) { // if it exists - update node if (map->compare(key, node->key)) { // ensure no hanging memory allocation - if (map->value_cleanup) { - map->value_cleanup(node->value); + if (map->val_cleanup) { + map->val_cleanup(node->val); } - memcpy(node->value, value, map->value_size); + memcpy(node->val, val, map->val_size); return; } node = node->next; @@ -46,9 +46,9 @@ void hashmap_put(HashMap *map, void *key, void *value) { // if it doesn't exist - create new node HashMapNode *new_node = safe_malloc(sizeof(HashMapNode)); new_node->key = safe_malloc(map->key_size); - new_node->value = safe_malloc(map->value_size); + new_node->val = safe_malloc(map->val_size); memcpy(new_node->key, key, map->key_size); - memcpy(new_node->value, value, map->value_size); + memcpy(new_node->val, val, map->val_size); // put in front of the linked list new_node->next = map->table[key_hash]; @@ -63,7 +63,7 @@ void *hashmap_get(HashMap *map, void *key) { while (node) { // if it exists - return the value pointer if (map->compare(key, node->key)) { - return node->value; + return node->val; } node = node->next; } @@ -76,11 +76,11 @@ void free_node_without_next(HashMap *map, HashMapNode *node) { if (map->key_cleanup) { map->key_cleanup(node->key); } - if (map->value_cleanup) { - map->value_cleanup(node->value); + if (map->val_cleanup) { + map->val_cleanup(node->val); } free(node->key); - free(node->value); + free(node->val); free(node); } |
