diff --git a/src/lae_arena.c b/src/lae_arena.c index 4ea4bbc..559dec2 100644 --- a/src/lae_arena.c +++ b/src/lae_arena.c @@ -1,4 +1,5 @@ #include "lae_arena.h" +#include "lae_allocator.h" #include #include #include @@ -6,12 +7,12 @@ #include struct Arena { - uint8_t* buffer; - size_t capacity; - size_t offset; + uint8_t *buffer; + size_t capacity; + size_t offset; }; -ArenaErr arena_init(Arena** arena, size_t capacity) { +ArenaErr arena_init(Arena **arena, size_t capacity) { if (arena == NULL) { return ARENA_NULL_ARG; } @@ -20,20 +21,20 @@ ArenaErr arena_init(Arena** arena, size_t capacity) { return ARENA_INVALID_SIZE; } - Arena* new_arena = malloc(sizeof(Arena)); + Arena *new_arena = malloc(sizeof(Arena)); if (new_arena == NULL) { return ARENA_BAD_ALLOC; } - void* buffer = malloc(capacity); + void *buffer = malloc(capacity); if (buffer == NULL) { return ARENA_BAD_ALLOC; } *new_arena = (Arena){ - .buffer = buffer, + .buffer = buffer, .capacity = capacity, - .offset = 0, + .offset = 0, }; *arena = new_arena; @@ -41,14 +42,14 @@ ArenaErr arena_init(Arena** arena, size_t capacity) { return ARENA_OK; } -ArenaErr arena_destroy(Arena** arena) { +ArenaErr arena_destroy(Arena **arena) { if (arena == NULL || *arena == NULL) { return ARENA_NULL_ARG; } free((*arena)->buffer); - (*arena)->buffer = NULL; - (*arena)->offset = 0; + (*arena)->buffer = NULL; + (*arena)->offset = 0; (*arena)->capacity = 0; free(*arena); *arena = NULL; @@ -56,7 +57,7 @@ ArenaErr arena_destroy(Arena** arena) { return ARENA_OK; } -ArenaPointer arena_alloc(Arena* arena, size_t size, size_t alignment) { +ArenaPointer arena_alloc(Arena *arena, size_t size, size_t alignment) { if (arena == NULL) { return (ArenaPointer){.is_valid = false, .err = ARENA_NULL_ARG}; } @@ -85,18 +86,18 @@ ArenaPointer arena_alloc(Arena* arena, size_t size, size_t alignment) { if (arena->offset > SIZE_MAX - padding.val - size) { return (ArenaPointer){.is_valid = false, - .err = ARENA_CAPACITY_OVERFLOW}; + .err = ARENA_CAPACITY_OVERFLOW}; } size_t aligned_offset = arena->offset + padding.val; arena->offset = aligned_offset + size; return (ArenaPointer){.is_valid = true, - .offset = aligned_offset, - .arena = arena}; + .offset = aligned_offset, + .arena = arena}; } -ArenaErr arena_ensure_capacity(Arena* arena, size_t size, size_t alignment) { +ArenaErr arena_ensure_capacity(Arena *arena, size_t size, size_t alignment) { if (arena == NULL) { return ARENA_NULL_ARG; } @@ -153,7 +154,7 @@ ArenaErr arena_ensure_capacity(Arena* arena, size_t size, size_t alignment) { } ArenaPointer -arena_push(Arena* arena, void* data, size_t size, size_t alignment) { +arena_push(Arena *arena, void *data, size_t size, size_t alignment) { if (arena == NULL || data == NULL) { return (ArenaPointer){.is_valid = false, .err = ARENA_NULL_ARG}; } @@ -181,7 +182,7 @@ arena_push(Arena* arena, void* data, size_t size, size_t alignment) { return pointer; } -ArenaErr arena_realloc(Arena* arena, size_t new_capacity) { +ArenaErr arena_realloc(Arena *arena, size_t new_capacity) { if (arena == NULL) { return ARENA_NULL_ARG; } @@ -190,17 +191,17 @@ ArenaErr arena_realloc(Arena* arena, size_t new_capacity) { return ARENA_INVALID_SIZE; } - uint8_t* tmp = realloc(arena->buffer, new_capacity); + uint8_t *tmp = realloc(arena->buffer, new_capacity); if (tmp == NULL) { return ARENA_BAD_ALLOC; } - arena->buffer = tmp; + arena->buffer = tmp; arena->capacity = new_capacity; return ARENA_OK; } -ArenaSizeResult arena_get_align_padding(Arena* arena, size_t alignment) { +ArenaSizeResult arena_get_align_padding(Arena *arena, size_t alignment) { if (arena == NULL) { return (ArenaSizeResult){.is_valid = false, .err = ARENA_NULL_ARG}; } @@ -211,13 +212,13 @@ ArenaSizeResult arena_get_align_padding(Arena* arena, size_t alignment) { uintptr_t current_address = (uintptr_t)(arena->buffer + arena->offset); - size_t mask = alignment - 1; + size_t mask = alignment - 1; size_t padding = (size_t)(-current_address) & mask; return (ArenaSizeResult){.is_valid = true, .val = padding}; } -void* arena_unwrap_pointer(ArenaPointer p) { +void *arena_unwrap_pointer(ArenaPointer p) { if (!p.is_valid) { return NULL; } diff --git a/xmake.lua b/xmake.lua index 0f0c677..67afb3b 100644 --- a/xmake.lua +++ b/xmake.lua @@ -31,7 +31,11 @@ option_end() -- Packages -- ========================================================= +-- Run xmake repo --add lae-repo https://laentropia-homelab.tail7368da.ts.net/laentropia/xmake-repo.git +-- to add my repo :) + add_requires("cmocka", { optional = true }) -- For tests +add_requires("lae_allocator") -- ========================================================= -- Library @@ -40,6 +44,8 @@ add_requires("cmocka", { optional = true }) -- For tests target("lae_arena") set_kind("static") +add_packages("lae_allocator") + add_files("src/lae_arena.c") add_headerfiles("include/*.h")