From d15022603fbea913f599bd89937fc6b4014f5e49 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Wed, 17 Dec 2025 04:34:49 +0000 Subject: [PATCH] Refactor array validation to function --- src/base/array/array.c | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/base/array/array.c b/src/base/array/array.c index b838e50..8d036ea 100644 --- a/src/base/array/array.c +++ b/src/base/array/array.c @@ -9,10 +9,11 @@ #define _offset_pointer(PTR, OFFSET) ((void *)((uptr)(PTR) + (OFFSET))) +wapp_persist inline void _array_validate(const GenericArray *array, u64 item_size); + void *_array_get(GenericArray *array, u64 index, u64 item_size) { wapp_runtime_assert(array != NULL, "`array` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); - wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); + _array_validate(array, item_size); wapp_runtime_assert(index < array->count, "`index` is out of bounds"); return _offset_pointer(array->items, array->item_size * index); @@ -25,8 +26,7 @@ void _array_set(GenericArray *array, u64 index, void *value, u64 item_size) { void _array_append_capped(GenericArray *array, void *value, u64 item_size) { wapp_runtime_assert(array != NULL, "`array` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); - wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); + _array_validate(array, item_size); if (array->count >= array->capacity) { return; } @@ -36,9 +36,8 @@ void _array_append_capped(GenericArray *array, void *value, u64 item_size) { void _array_extend_capped(GenericArray *dst, const GenericArray *src, u64 item_size) { wapp_runtime_assert(dst != NULL && src != NULL, "`dst` and `src` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == dst->magic, "`dst` is not a valid wapp array"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == src->magic, "`src` is not a valid wapp array"); - wapp_runtime_assert(item_size == dst->item_size && item_size == src->item_size, "Invalid item type provided"); + _array_validate(dst, item_size); + _array_validate(src, item_size); u64 remaining_capacity = dst->capacity - dst->count; @@ -50,9 +49,8 @@ void _array_extend_capped(GenericArray *dst, const GenericArray *src, u64 item_s void _array_copy_capped(GenericArray *dst, const GenericArray *src, u64 item_size) { wapp_runtime_assert(dst != NULL && src != NULL, "`dst` and `src` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == dst->magic, "`dst` is not a valid wapp array"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == src->magic, "`src` is not a valid wapp array"); - wapp_runtime_assert(item_size == dst->item_size && item_size == src->item_size, "Invalid item type provided"); + _array_validate(dst, item_size); + _array_validate(src, item_size); _array_clear(dst, item_size); u64 copy_count = src->count < dst->capacity ? src->count : dst->capacity; @@ -62,8 +60,7 @@ void _array_copy_capped(GenericArray *dst, const GenericArray *src, u64 item_siz GenericArray *_array_append_alloc(const Allocator *allocator, GenericArray *array, void *value, u64 item_size) { wapp_runtime_assert(allocator != NULL && array != NULL, "`allocator` and `array` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); - wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); + _array_validate(array, item_size); GenericArray *output = array; @@ -85,9 +82,8 @@ RETURN_ARRAY_APPEND_ALLOC: GenericArray *_array_extend_alloc(const Allocator *allocator, GenericArray *dst, const GenericArray *src, u64 item_size) { wapp_runtime_assert(allocator != NULL && dst != NULL && src != NULL, "`allocator`, `dst` and `src` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == dst->magic, "`dst` is not a valid wapp array"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == src->magic, "`src` is not a valid wapp array"); - wapp_runtime_assert(item_size == dst->item_size && item_size == src->item_size, "Invalid item type provided"); + _array_validate(dst, item_size); + _array_validate(src, item_size); GenericArray *output = dst; @@ -110,9 +106,8 @@ RETURN_ARRAY_EXTEND_ALLOC: GenericArray *_array_copy_alloc(const Allocator *allocator, GenericArray *dst, const GenericArray *src, u64 item_size) { wapp_runtime_assert(allocator != NULL && dst != NULL && src != NULL, "`allocator`, `dst` and `src` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == dst->magic, "`dst` is not a valid wapp array"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == src->magic, "`src` is not a valid wapp array"); - wapp_runtime_assert(item_size == dst->item_size && item_size == src->item_size, "Invalid item type provided"); + _array_validate(dst, item_size); + _array_validate(src, item_size); GenericArray *output = dst; @@ -133,8 +128,7 @@ RETURN_ARRAY_COPY_ALLOC: void *_array_pop(GenericArray *array, u64 item_size) { wapp_runtime_assert(array != NULL, "`array` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); - wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); + _array_validate(array, item_size); if (array->count == 0) { return NULL; } @@ -146,8 +140,7 @@ void *_array_pop(GenericArray *array, u64 item_size) { void _array_clear(GenericArray *array, u64 item_size) { wapp_runtime_assert(array != NULL, "`array` should not be NULL"); - wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); - wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); + _array_validate(array, item_size); array->count = 0; } @@ -173,3 +166,8 @@ GenericArray *_array_alloc_capacity(const Allocator *allocator, u64 capacity, u6 RETURN_ARRAY_ALLOC: return output; } + +wapp_persist inline void _array_validate(const GenericArray *array, u64 item_size) { + wapp_runtime_assert(WAPP_ARRAY_MAGIC == array->magic, "`array` is not a valid wapp array"); + wapp_runtime_assert(item_size == array->item_size, "Invalid item type provided"); +}