#ifndef ARENA_H #define ARENA_H #include typedef struct { uint8_t *buffer; size_t capacity; size_t offset; } Arena; Arena *ArenaInit(size_t capacity); void ArenaDestroy(Arena *arena); void *ArenaAlloc(Arena *arena, size_t size); void *ArenaAllocZero(Arena *arena, size_t size); void ArenaFree(Arena *arena, size_t size); void ArenaFreeAndNullify(Arena *arena, size_t size, void **ptrAddress); // Fundamentally returns how many bytes have been allocated size_t ArenaGetOffset(Arena *arena); void ArenaSetOffsetBack(Arena *arena, size_t offset); void ArenaClear(Arena *arena); #endif // ARENA_H