summaryrefslogtreecommitdiffstats
path: root/wv_mem.h
diff options
context:
space:
mode:
authorSadeep Madurange <sadeep@asciimx.com>2026-05-04 12:58:31 +0800
committerSadeep Madurange <sadeep@asciimx.com>2026-05-04 17:42:39 +0800
commite786c2e12add1aa3078cba4c367764e4252748e9 (patch)
tree07461ccfd8cab329ce779d989bc712a2300da537 /wv_mem.h
downloadweb-view-e786c2e12add1aa3078cba4c367764e4252748e9.tar.gz
Defined arena for memory management.
Diffstat (limited to 'wv_mem.h')
-rw-r--r--wv_mem.h27
1 files changed, 27 insertions, 0 deletions
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 <stddef.h>
+#include <stdint.h>
+
+/* 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 */