diff --git a/include/arena.h b/include/arena.h index 8933e7b..3978c7c 100644 --- a/include/arena.h +++ b/include/arena.h @@ -1,4 +1,39 @@ #ifndef ARENA_H #define ARENA_H +#include +#include +#include +#include + +typedef struct { + void *data; + size_t size; + size_t offset; +} Arena; + +typedef enum { + ARENA_OK, + ARENA_BAD_ALLOC, + ARENA_OUT_OF_SPACE, + ARENA_NULL_ARG, +} ArenaErr; + +typedef struct { + bool is_valid; + union { + ArenaErr err; + void *pointer; + }; +} ArenaPointer; + +Arena arena_init(void *buffer, size_t size); +void arena_destroy(Arena *arena); + +ArenaPointer arena_alloc(Arena *arena, size_t size, size_t alignment); +ArenaPointer arena_push(Arena *arena, void *data); +ArenaErr arena_realloc(Arena *arena, size_t new_size); + +size_t align_arena_offset(Arena *arena, size_t alignment); + #endif // !ARENA_H