#ifndef ARENA_ALLOCATOR_SENTRY #define ARENA_ALLOCATOR_SENTRY #ifndef ARENA_ALIGNMENT #define ARENA_ALIGNMENT 2*sizeof(void *) #endif #define ARENA_ALLOC(a, t) (t *)arena_alloc(a, sizeof(t)) #define ARENA_DEALLOC(a, t) arena_dealloc(a, sizeof(t)) struct arena { unsigned long long size; unsigned long long used; void *memory; }; struct arena arena_init(void *backing_store, unsigned long long size); void arena_reset(struct arena *arena); void arena_tidy(struct arena *arena); void *arena_alloc(struct arena *arena, unsigned long long size); void arena_dealloc(struct arena *arena, unsigned long long size); struct arena temp_arena_begin(struct arena *arena); void temp_arena_end(struct arena *arena); #endif