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:
33
src/arena.c
33
src/arena.c
@@ -1 +1,34 @@
|
||||
#include "arena.h"
|
||||
#include <stdbool.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
ArenaResult arena_init(void *buffer, size_t size) {
|
||||
if (buffer == NULL) {
|
||||
ArenaResult err = {
|
||||
.is_valid = false,
|
||||
.err = ARENA_NULL_ARG,
|
||||
};
|
||||
return err;
|
||||
}
|
||||
|
||||
if (size < 1) {
|
||||
ArenaResult err = {
|
||||
.is_valid = false,
|
||||
.err = ARENA_INVALID_SIZE,
|
||||
};
|
||||
return err;
|
||||
}
|
||||
|
||||
Arena new_arena = {
|
||||
.data = buffer,
|
||||
.size = size,
|
||||
.offset = 0,
|
||||
};
|
||||
|
||||
ArenaResult val = {
|
||||
.is_valid = true,
|
||||
.arena = new_arena,
|
||||
};
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user