From e786c2e12add1aa3078cba4c367764e4252748e9 Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Mon, 4 May 2026 12:58:31 +0800 Subject: Defined arena for memory management. --- wv_mem.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 wv_mem.h (limited to 'wv_mem.h') diff --git a/wv_mem.h b/wv_mem.h new file mode 100644 index 0000000..9d23ae8 --- /dev/null +++ b/wv_mem.h @@ -0,0 +1,27 @@ +#ifndef WV_MEM_H +#define WV_MEM_H + +#include +#include + +/* Relative offset into the arena */ +typedef uint32_t wv_ref; + +/* 0 is our 'NULL' */ +#define WV_REF_NULL 0 + +/* Resolve a ref into a memory address */ +#define WV_ADDR(arena, ref) ((void *)((arena)->buf + (ref))) + +struct wv_arena { + size_t size; + size_t offset; + unsigned char *buf; +}; + +struct wv_arena* wv_arena_create(size_t n); +wv_ref wv_alloc(struct wv_arena *arena, size_t n); +void wv_arena_reset(struct wv_arena *arena); +void wv_arena_destroy(struct wv_arena *arena); + +#endif /* WV_MEM_H */ -- cgit v1.2.3