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