26 lines
726 B
C
26 lines
726 B
C
#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
|