diff options
| author | Sadeep Madurange <sadeep@asciimx.com> | 2026-05-04 12:58:31 +0800 |
|---|---|---|
| committer | Sadeep Madurange <sadeep@asciimx.com> | 2026-05-04 17:42:39 +0800 |
| commit | e786c2e12add1aa3078cba4c367764e4252748e9 (patch) | |
| tree | 07461ccfd8cab329ce779d989bc712a2300da537 /wv_mem.h | |
| download | web-view-e786c2e12add1aa3078cba4c367764e4252748e9.tar.gz | |
Defined arena for memory management.
Diffstat (limited to 'wv_mem.h')
| -rw-r--r-- | wv_mem.h | 27 |
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 */ |
