#ifndef WV_MEM_H #define WV_MEM_H #include #include /* Relative offset into the arena */ typedef uint32_t wv_ref; /* 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 */