aboutsummaryrefslogtreecommitdiff
path: root/analyzer/utils/hashmap.h
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-07-10 16:31:08 +0200
committerMosder <xmosder12@gmail.com>2026-07-10 16:31:08 +0200
commitf75a39e4c476c266efff6cff44d03d6afff3a4f7 (patch)
treefd95845b2dd935bfeb49bc93ef9e6868629b62bd /analyzer/utils/hashmap.h
parent26d8457a5da5d70226fdbba5ed92fda8cac735f6 (diff)
refactor: moved hashmap implementation from utils to new directory utils/structures and removed unnecessary functionality from it
Diffstat (limited to 'analyzer/utils/hashmap.h')
-rw-r--r--analyzer/utils/hashmap.h98
1 files changed, 0 insertions, 98 deletions
diff --git a/analyzer/utils/hashmap.h b/analyzer/utils/hashmap.h
deleted file mode 100644
index 22c71c6..0000000
--- a/analyzer/utils/hashmap.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// utils/hashmap.h
-// a simple implementation of hashmap using linked list
-
-#include <stddef.h>
-
-#define HASHMAP_TABLE_SIZE 1024
-
-typedef struct HashMapNode {
- void *key;
- void *value;
- struct HashMapNode *next;
-} HashMapNode;
-
-typedef struct {
- HashMapNode *table[HASHMAP_TABLE_SIZE];
- size_t key_size;
- size_t value_size;
- size_t (*hash)(void *key);
- int (*compare)(void *key1, void *key2);
- void (*key_cleanup)(void *key);
- void (*value_cleanup)(void *value);
-} HashMap;
-
-// create a new hash map
-// params:
-// - key_size - size of the key type
-// - value_size - size of the value type
-// - hash - function for hashing keys
-// params:
-// - key - pointer to the key to hash
-// returns:
-// hash of the key (size_t in [0; HASHMAP_TABLE_SIZE))
-// - compare - function for comparing keys
-// params:
-// - key1 - pointer to the first of the keys to compare
-// - key2 - pointer to the second of the keys to compare
-// returns:
-// truthy if the keys are identical, falsy if they are different
-// - key_cleanup - function for cleaning up any internal allocations inside node->key (not the key itself)
-// if it has no heap allocations, this should be NULL
-// params:
-// - key - pointer to the key to cleanup
-// - value_cleanup - function for cleaning up any internal allocations inside node->value (not the value itself)
-// if it has no heap allocations, this should be NULL
-// params:
-// - value - pointer to the value to cleanup
-// returns:
-// pointer to the new hash map
-extern HashMap *hashmap_new(
- size_t key_size, size_t value_size, size_t (*hash)(void *key), int (*compare)(void *key1, void *key2), void (*key_cleanup)(void *key),
- void (*value_cleanup)(void *value)
-);
-
-// create/update an entry in a hash map
-// params:
-// - map - hash map to insert to
-// - key - pointer to the key
-// - value - pointer to the value
-extern void hashmap_put(HashMap *map, void *key, void *value);
-
-// get the value of given key from a hash map
-// params:
-// - map - hash map to get from
-// - key - pointer to the key of the value to get
-// returns:
-// pointer to the value of specified key or NULL if it doesn't exist
-extern void *hashmap_get(HashMap *map, void *key);
-
-// delete an entry from a hash map
-// params:
-// - map - hash map to delete from
-// - key - pointer to the key of the entry to delete
-extern void hashmap_delete(HashMap *map, void *key);
-
-// get first node in the hashmap, use with hashmap_next to iterate over hashmap
-// params:
-// - map - hash map to get the first node from
-// returns:
-// pointer to the first node in the hashmap or NULL if there's no entries in it
-extern HashMapNode *hashmap_first(HashMap *map);
-
-// get next node in the hashmap, use with hashmap_first to iterate over hashmap
-// params:
-// - map - hash map to get the next node from
-// - node - the node preceeding the one we search for
-// returns:
-// pointer to the next node in the hashmap or NULL if there's no next
-extern HashMapNode *hashmap_next(HashMap *map, HashMapNode *node);
-
-// free the hash map
-// - map - hash map to free
-extern void hashmap_free(HashMap *map);
-
-// hash uint32_t key
-extern size_t hash_uint32(void *key);
-
-// compare uint32_t keys
-extern int compare_uint32(void *key1, void *key2);