diff options
| author | Mosder <xmosder12@gmail.com> | 2026-07-10 16:31:08 +0200 |
|---|---|---|
| committer | Mosder <xmosder12@gmail.com> | 2026-07-10 16:31:08 +0200 |
| commit | f75a39e4c476c266efff6cff44d03d6afff3a4f7 (patch) | |
| tree | fd95845b2dd935bfeb49bc93ef9e6868629b62bd /analyzer/utils/hashmap.h | |
| parent | 26d8457a5da5d70226fdbba5ed92fda8cac735f6 (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.h | 98 |
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); |
