feat: Added align_arena_offset

Added it, it should work, no testing by now so damn, but its fine,
used aformula from stack overflow :)
This commit is contained in:
2026-03-29 21:08:34 -06:00
parent a8423ca80f
commit d6b613df10
2 changed files with 26 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ typedef enum {
ARENA_OUT_OF_SPACE,
ARENA_NULL_ARG,
ARENA_INVALID_SIZE,
ARENA_INVALID_ALIGN,
} ArenaErr;
typedef struct {

View File

@@ -125,4 +125,29 @@ ArenaErr arena_realloc(Arena *arena, size_t new_size) {
return ARENA_OK;
}
SizeResult align_arena_offset(Arena *arena, size_t alignment) {
if (arena == NULL) {
SizeResult err = {
.is_valid = false,
.err = ARENA_NULL_ARG,
};
return err;
}
if (alignment < 1) {
SizeResult err = {
.is_valid = false,
.err = ARENA_INVALID_ALIGN,
};
return err;
}
SizeResult val = {
.is_valid = true,
.val = ((arena->offset + (alignment - 1)) & ~(alignment - 1)),
// Formula for alignment, found at stackoverflow, i came up with one
// but it involved 3 divisions, this one is way faster :)
};
return val;
}