Mercurial
diff dowa/dowa.h @ 2:8a43dedbe530
[Dowa] Added HashMap and Updated Arena naming.
| author | June Park <parkjune1995@gmail.com> |
|---|---|
| date | Wed, 24 Sep 2025 13:15:32 -0700 |
| parents | adcfad6e86fb |
| children | 2758f5527d2b |
line wrap: on
line diff
--- a/dowa/dowa.h Wed Sep 24 09:11:20 2025 -0700 +++ b/dowa/dowa.h Wed Sep 24 13:15:32 2025 -0700 @@ -2,9 +2,13 @@ #define DOWA #include <stdio.h> +#include <string.h> // stdup #include <stdlib.h> // only for malloc, free, stuff +#include <assert.h> #include "dowa_internal.h" +#define HASH_KEY_NUMBER 5381 // DJD hash number + typedef unsigned int uint32; typedef int int32; typedef unsigned short uint16; @@ -21,10 +25,29 @@ char *buffer; size_t offset; size_t capacity; -} Areana, *PArena; +} Dowa_Areana, *Dowa_PArena; + +extern Dowa_PArena Dowa_Arena_Initialize(size_t capacity); +extern void *Dowa_Arena_Allocate(Dowa_PArena p_arena, size_t size); +extern void Dowa_Arena_Free(Dowa_PArena p_arena); -void Dowa_ArenaIntialize(PArena p_arena, size_t capacity); -void *Dowa_ArenaAllocate(PArena p_arena, size_t size); -void Dowa_ArenaFree(PArena p_arena); +// --- Map --- // +typedef struct { + char *key; + void *buffer; + size_t capacity; +} Dowa_HashEntry, *Dowa_PHashEntry; + +typedef struct { + Dowa_PHashEntry *entries; + size_t capacity; + uint32 current_capacity; +} Dowa_HashMap, *Dowa_PHashMap; + +extern Dowa_PHashMap Dowa_HashMap_Create(size_t capacity); +extern int32 Dowa_HashMap_GetPosition(Dowa_PHashMap p_hash_map, char *key); +extern void Dowa_HashMap_PushValue(Dowa_PHashMap p_hash_map, char *key, void *value, size_t value_size); +extern void Dowa_HashMap_PopKey(Dowa_PHashMap p_hash_map, char *key); + #endif