view 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 source

#ifndef DOWA
#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;
typedef short int16;
typedef unsigned char uint8;
typedef char int8;
typedef char boolean;

// --- Misc --- //
char *Dowa_Int32ToString(uint32 int32, char *buffer);

// --- Arena --- //
typedef struct {
  char   *buffer;
  size_t offset;
  size_t capacity;
} 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);

// --- 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