refactor-xmake #2

Merged
laentropia merged 5 commits from refactor-xmake into main 2026-06-10 10:30:26 -06:00
2 changed files with 30 additions and 23 deletions
Showing only changes of commit f3a5ecf807 - Show all commits

View File

@@ -1,4 +1,5 @@
#include "lae_arena.h" #include "lae_arena.h"
#include "lae_allocator.h"
#include <stdbool.h> #include <stdbool.h>
#include <stddef.h> #include <stddef.h>
#include <stdint.h> #include <stdint.h>
@@ -6,12 +7,12 @@
#include <string.h> #include <string.h>
struct Arena { struct Arena {
uint8_t* buffer; uint8_t *buffer;
size_t capacity; size_t capacity;
size_t offset; size_t offset;
}; };
ArenaErr arena_init(Arena** arena, size_t capacity) { ArenaErr arena_init(Arena **arena, size_t capacity) {
if (arena == NULL) { if (arena == NULL) {
return ARENA_NULL_ARG; return ARENA_NULL_ARG;
} }
@@ -20,12 +21,12 @@ ArenaErr arena_init(Arena** arena, size_t capacity) {
return ARENA_INVALID_SIZE; return ARENA_INVALID_SIZE;
} }
Arena* new_arena = malloc(sizeof(Arena)); Arena *new_arena = malloc(sizeof(Arena));
if (new_arena == NULL) { if (new_arena == NULL) {
return ARENA_BAD_ALLOC; return ARENA_BAD_ALLOC;
} }
void* buffer = malloc(capacity); void *buffer = malloc(capacity);
if (buffer == NULL) { if (buffer == NULL) {
return ARENA_BAD_ALLOC; return ARENA_BAD_ALLOC;
} }
@@ -41,7 +42,7 @@ ArenaErr arena_init(Arena** arena, size_t capacity) {
return ARENA_OK; return ARENA_OK;
} }
ArenaErr arena_destroy(Arena** arena) { ArenaErr arena_destroy(Arena **arena) {
if (arena == NULL || *arena == NULL) { if (arena == NULL || *arena == NULL) {
return ARENA_NULL_ARG; return ARENA_NULL_ARG;
} }
@@ -56,7 +57,7 @@ ArenaErr arena_destroy(Arena** arena) {
return ARENA_OK; 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) { if (arena == NULL) {
return (ArenaPointer){.is_valid = false, .err = ARENA_NULL_ARG}; return (ArenaPointer){.is_valid = false, .err = ARENA_NULL_ARG};
} }
@@ -96,7 +97,7 @@ ArenaPointer arena_alloc(Arena* arena, size_t size, size_t alignment) {
.arena = arena}; .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) { if (arena == NULL) {
return ARENA_NULL_ARG; return ARENA_NULL_ARG;
} }
@@ -153,7 +154,7 @@ ArenaErr arena_ensure_capacity(Arena* arena, size_t size, size_t alignment) {
} }
ArenaPointer 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) { if (arena == NULL || data == NULL) {
return (ArenaPointer){.is_valid = false, .err = ARENA_NULL_ARG}; 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; return pointer;
} }
ArenaErr arena_realloc(Arena* arena, size_t new_capacity) { ArenaErr arena_realloc(Arena *arena, size_t new_capacity) {
if (arena == NULL) { if (arena == NULL) {
return ARENA_NULL_ARG; return ARENA_NULL_ARG;
} }
@@ -190,7 +191,7 @@ ArenaErr arena_realloc(Arena* arena, size_t new_capacity) {
return ARENA_INVALID_SIZE; return ARENA_INVALID_SIZE;
} }
uint8_t* tmp = realloc(arena->buffer, new_capacity); uint8_t *tmp = realloc(arena->buffer, new_capacity);
if (tmp == NULL) { if (tmp == NULL) {
return ARENA_BAD_ALLOC; return ARENA_BAD_ALLOC;
} }
@@ -200,7 +201,7 @@ ArenaErr arena_realloc(Arena* arena, size_t new_capacity) {
return ARENA_OK; 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) { if (arena == NULL) {
return (ArenaSizeResult){.is_valid = false, .err = ARENA_NULL_ARG}; return (ArenaSizeResult){.is_valid = false, .err = ARENA_NULL_ARG};
} }
@@ -217,7 +218,7 @@ ArenaSizeResult arena_get_align_padding(Arena* arena, size_t alignment) {
return (ArenaSizeResult){.is_valid = true, .val = padding}; return (ArenaSizeResult){.is_valid = true, .val = padding};
} }
void* arena_unwrap_pointer(ArenaPointer p) { void *arena_unwrap_pointer(ArenaPointer p) {
if (!p.is_valid) { if (!p.is_valid) {
return NULL; return NULL;
} }

View File

@@ -31,7 +31,11 @@ option_end()
-- Packages -- 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("cmocka", { optional = true }) -- For tests
add_requires("lae_allocator")
-- ========================================================= -- =========================================================
-- Library -- Library
@@ -40,6 +44,8 @@ add_requires("cmocka", { optional = true }) -- For tests
target("lae_arena") target("lae_arena")
set_kind("static") set_kind("static")
add_packages("lae_allocator")
add_files("src/lae_arena.c") add_files("src/lae_arena.c")
add_headerfiles("include/*.h") add_headerfiles("include/*.h")