feat(arena.c): Added arena init and added ArenaResult
Want to handle errors with results, even if it meas boilerplate
This commit is contained in:
@@ -17,6 +17,7 @@ typedef enum {
|
||||
ARENA_BAD_ALLOC,
|
||||
ARENA_OUT_OF_SPACE,
|
||||
ARENA_NULL_ARG,
|
||||
ARENA_INVALID_SIZE,
|
||||
} ArenaErr;
|
||||
|
||||
typedef struct {
|
||||
@@ -27,11 +28,19 @@ typedef struct {
|
||||
};
|
||||
} ArenaPointer;
|
||||
|
||||
Arena arena_init(void *buffer, size_t size);
|
||||
typedef struct {
|
||||
bool is_valid;
|
||||
union {
|
||||
ArenaErr err;
|
||||
Arena arena;
|
||||
};
|
||||
} ArenaResult;
|
||||
|
||||
ArenaResult 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_push(Arena *arena, void *data, size_t size);
|
||||
ArenaErr arena_realloc(Arena *arena, size_t new_size);
|
||||
|
||||
size_t align_arena_offset(Arena *arena, size_t alignment);
|
||||
|
||||
Reference in New Issue
Block a user