From b3bd3df103a5a75d267b2b79e85558768b1dc4bb Mon Sep 17 00:00:00 2001 From: "@syxhe" Date: Sun, 23 Mar 2025 22:11:15 -0500 Subject: Fix a whole bunch of shit, create an arena implementation --- src/arena.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/arena.h (limited to 'src/arena.h') diff --git a/src/arena.h b/src/arena.h new file mode 100644 index 0000000..23dc664 --- /dev/null +++ b/src/arena.h @@ -0,0 +1,23 @@ +#ifndef __VXGG_REWRITE___ARENA_H___25077218513438___ +#define __VXGG_REWRITE___ARENA_H___25077218513438___ + +#include + +typedef struct arena arena; +typedef arena simplearena; + +#define ISPOWOF2(x) (((x) & ((x) - 1)) == 0) +const size_t MEM_ALIGN_BYTES = (2 * sizeof(void*)); +#define MEM_ALIGN(x) ((x) + (((x) & (MEM_ALIGN_BYTES - 1)) != 0) * (MEM_ALIGN_BYTES - ((x) & (MEM_ALIGN_BYTES - 1)))) + +int arena_init(arena **a, size_t bytes); +void* arena_alloc(arena * const arena, size_t bytes); +int arena_free(arena **arena); +int arena_clear(arena **arena); + +int simplearena_init(simplearena **a, size_t bytes); +void* simplearena_alloc(simplearena * const a, size_t bytes); +int simplearena_free(simplearena **a); +int simplearena_free(simplearena **a); + +#endif \ No newline at end of file -- cgit v1.2.3