27 lines
623 B
C
27 lines
623 B
C
#ifndef ARENA_H
|
|
#define ARENA_H
|
|
|
|
#include <stdint.h>
|
|
|
|
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
|