From 92850237f42cecfeba519bc15f7f5bb7a76cde5f Mon Sep 17 00:00:00 2001 From: pryazha Date: Thu, 27 Mar 2025 08:29:28 +0500 Subject: renaming (mostly) --- prb_arena.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 prb_arena.c (limited to 'prb_arena.c') diff --git a/prb_arena.c b/prb_arena.c new file mode 100644 index 0000000..1938dec --- /dev/null +++ b/prb_arena.c @@ -0,0 +1,48 @@ +Arena *alloc_arena(U64 cap) +{ + Arena *a; + + /* TODO(pryazha): Use OS specific memory allocator + * (like VirtualAlloc on Windows or mmap on Linux) + */ + a = malloc(sizeof(Arena)); + ASSERT(a); + + if (!cap) + cap = PRB_DEFAULT_ALLOC_SIZE; + + a->mem = malloc(cap); + ASSERT(a->mem); + a->cap = cap; + a->used = 0; + + return a; +} + +void release_arena(Arena *a) +{ + free(a->mem); + MEM0STRUCT(a); + free(a); +} + +void *push_arena(Arena *a, U64 size) +{ + ASSERT(a); + ASSERT(a->used+size <= a->cap); + + void *r; + + r = a->mem+a->used; + a->used += size; + + return r; +} + +void pop_arena(Arena *a, U64 size) +{ + ASSERT(a); + U64 clamped; + clamped = CLAMPTOP(size, a->used); + a->used = a->used-clamped; +} -- cgit v1.2.3-70-g09d2