From 5c0311ff3095a5dd30fb15db54aa394498dd2bcf Mon Sep 17 00:00:00 2001 From: 0scar Date: Mon, 30 Oct 2023 23:11:54 +0100 Subject: The great formattening! --- include/engine/hashmap.h | 81 ++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 41 deletions(-) (limited to 'include/engine/hashmap.h') diff --git a/include/engine/hashmap.h b/include/engine/hashmap.h index 4b97b8e..bf1d87c 100644 --- a/include/engine/hashmap.h +++ b/include/engine/hashmap.h @@ -3,53 +3,52 @@ #include "types.h" -#include #include "list.h" #include "memory.h" - +#include i32 lolhash(const usize s, i32 v); /* Define a linked list before using this */ /* Example: DEFINE_LLIST(i32) */ -#define DEFINE_HASHMAP(type, lsize, cmp, type_to_int) \ -typedef DEFINE_LLIST(type); \ -typedef struct hashmap_##type { \ - usize size; \ - List_##type elems[64]; \ -} hashmap_##type; \ - \ -type* hashmap_##type##_lookup(hashmap_##type* hmap, const type* val) { \ - const i32 idx = lolhash(64, type_to_int(val)); \ - List_##type *head = &hmap->elems[idx]; \ - while (head != NULL) { \ - if (!cmp(&(head->value), val)) return &(head->value); \ - head = head->next; \ - } \ - return NULL; \ -} \ - \ -void hashmap_##type##_insert(memory *m, hashmap_##type *hmap, const type *val) { \ - const i32 idx = lolhash(64, type_to_int(val)); \ - List_##type *head = &(hmap->elems[idx]); \ - \ - /* This is highly dependant on whether the memory is zero-initialized */ \ - if (!type_to_int(&(head->value))) \ - { \ - memcpy(&(head->value), val, sizeof(type)); \ - return; \ - } \ - \ - \ - while (head->next != NULL && cmp(&head->value, val)) { \ - head = head->next; \ - } \ - \ - if (!cmp(&head->value, val)) memcpy(&(head->value), val, sizeof(type)); \ - else { \ - head->next = memory_allocate(m, sizeof(List_##type)); \ - memcpy(&(head->next->value), val, sizeof(type)); \ - } \ -} +#define DEFINE_HASHMAP(type, lsize, cmp, type_to_int) \ + typedef DEFINE_LLIST(type); \ + typedef struct hashmap_##type { \ + usize size; \ + List_##type elems[64]; \ + } hashmap_##type; \ + \ + type* hashmap_##type##_lookup(hashmap_##type* hmap, const type* val) { \ + const i32 idx = lolhash(64, type_to_int(val)); \ + List_##type* head = &hmap->elems[idx]; \ + while (head != NULL) { \ + if (!cmp(&(head->value), val)) return &(head->value); \ + head = head->next; \ + } \ + return NULL; \ + } \ + \ + void hashmap_##type##_insert(memory* m, hashmap_##type* hmap, \ + const type* val) { \ + const i32 idx = lolhash(64, type_to_int(val)); \ + List_##type* head = &(hmap->elems[idx]); \ + \ + /* This is highly dependant on whether the memory is zero-initialized */ \ + if (!type_to_int(&(head->value))) { \ + memcpy(&(head->value), val, sizeof(type)); \ + return; \ + } \ + \ + while (head->next != NULL && cmp(&head->value, val)) { \ + head = head->next; \ + } \ + \ + if (!cmp(&head->value, val)) \ + memcpy(&(head->value), val, sizeof(type)); \ + else { \ + head->next = memory_allocate(m, sizeof(List_##type)); \ + memcpy(&(head->next->value), val, sizeof(type)); \ + } \ + } #endif -- cgit v1.3