Update file IO API

This commit is contained in:
2025-12-14 01:42:45 +00:00
parent e9aebeccbf
commit b51482057a
11 changed files with 85 additions and 87 deletions

View File

@@ -10,36 +10,42 @@
#define _array_header(DATA_PTR) (ArrayHeader *)((u8 *)DATA_PTR - sizeof(ArrayHeader))
u64 _array_count(u8 *array, u64 item_size) {
u64 _array_count(u8 *array) {
wapp_debug_assert(array != NULL, "`array` should not be NULL");
ArrayHeader *arr_header = _array_header(array);
wapp_runtime_assert(WAPP_ARRAY_MAGIC == arr_header->magic, "`array` is not a valid wapp array");
wapp_runtime_assert(item_size == arr_header->item_size, "Invalid item type provided");
return arr_header->count;
}
u64 _array_capacity(u8 *array, u64 item_size) {
u64 _array_capacity(u8 *array) {
wapp_debug_assert(array != NULL, "`array` should not be NULL");
ArrayHeader *arr_header = _array_header(array);
wapp_runtime_assert(WAPP_ARRAY_MAGIC == arr_header->magic, "`array` is not a valid wapp array");
wapp_runtime_assert(item_size == arr_header->item_size, "Invalid item type provided");
return arr_header->capacity;
}
u64 _array_item_size(u8 *array, u64 item_size) {
u64 _array_item_size(u8 *array) {
wapp_debug_assert(array != NULL, "`array` should not be NULL");
ArrayHeader *arr_header = _array_header(array);
wapp_runtime_assert(WAPP_ARRAY_MAGIC == arr_header->magic, "`array` is not a valid wapp array");
wapp_runtime_assert(item_size == arr_header->item_size, "Invalid item type provided");
return arr_header->item_size;
}
void _array_set_count(u8 *array, u64 count) {
wapp_debug_assert(array != NULL, "`array` should not be NULL");
ArrayHeader *arr_header = _array_header(array);
wapp_runtime_assert(WAPP_ARRAY_MAGIC == arr_header->magic, "`array` is not a valid wapp array");
arr_header->count = count;
}
u8 *_array_get(u8 *array, u64 index, u64 item_size) {
wapp_debug_assert(array != NULL, "`array` should not be NULL");

View File

@@ -51,7 +51,7 @@ BEGIN_C_LINKAGE
return (TYPE *)(header + 1); \
}())
#define wapp_array_pop(TYPE, ARRAY_PTR) \
(ARRAY_PTR != NULL && _array_count((u8 *)ARRAY_PTR, sizeof(TYPE)) > 0 ? \
(ARRAY_PTR != NULL && _array_count((u8 *)ARRAY_PTR) > 0 ? \
*((TYPE *)_array_pop((u8 *)ARRAY_PTR, sizeof(TYPE))) : \
TYPE{} \
)
@@ -82,18 +82,20 @@ BEGIN_C_LINKAGE
}.items \
)
#define wapp_array_pop(TYPE, ARRAY_PTR) \
(ARRAY_PTR != NULL && _array_count((u8 *)ARRAY_PTR, sizeof(TYPE)) > 0 ? \
(ARRAY_PTR != NULL && _array_count((u8 *)ARRAY_PTR) > 0 ? \
*((TYPE *)_array_pop((u8 *)ARRAY_PTR, sizeof(TYPE))) : \
(TYPE){0} \
)
#endif // !WAPP_PLATFORM_CPP
#define wapp_array_count(TYPE, ARRAY_PTR) \
_array_count((u8 *)ARRAY_PTR, sizeof(TYPE))
#define wapp_array_capacity(TYPE, ARRAY_PTR) \
_array_capacity((u8 *)ARRAY_PTR, sizeof(TYPE))
#define wapp_array_item_size(TYPE, ARRAY_PTR) \
_array_item_size((u8 *)ARRAY_PTR, sizeof(TYPE))
#define wapp_array_count(ARRAY_PTR) \
_array_count((u8 *)ARRAY_PTR)
#define wapp_array_capacity(ARRAY_PTR) \
_array_capacity((u8 *)ARRAY_PTR)
#define wapp_array_item_size(ARRAY_PTR) \
_array_item_size((u8 *)ARRAY_PTR)
#define wapp_array_set_count(ARRAY_PTR, COUNT) \
_array_set_count((u8 *)ARRAY_PTR, COUNT)
#define wapp_array_get(TYPE, ARRAY_PTR, INDEX) \
((TYPE *)_array_get((u8 *)ARRAY_PTR, INDEX, sizeof(TYPE)))
#define wapp_array_set(TYPE, ARRAY_PTR, INDEX, VALUE_PTR) \
@@ -127,9 +129,10 @@ struct GenericArray {
void *items;
};
u64 _array_count(u8 *array, u64 item_size);
u64 _array_capacity(u8 *array, u64 item_size);
u64 _array_item_size(u8 *array, u64 item_size);
u64 _array_count(u8 *array);
u64 _array_capacity(u8 *array);
u64 _array_item_size(u8 *array);
void _array_set_count(u8 *array, u64 count);
u8 *_array_get(u8 *array, u64 index, u64 item_size);
void _array_set(u8 *array, u64 index, u8 *value, u64 item_size);
void _array_append_capped(u8 *array, u8 *value, u64 item_size);

View File

@@ -264,7 +264,7 @@ void wapp_str8_to_upper(Str8 *dst, Str8RO *src) {
void wapp_str8_from_bytes(Str8 *dst, const u8 *src_byte_array) {
wapp_debug_assert(src_byte_array != NULL && dst != NULL, "`dst` and `src` should not be NULL");
u64 size = wapp_array_count(u8, src_byte_array) * wapp_array_item_size(u8, src_byte_array);
u64 size = wapp_array_count(src_byte_array) * wapp_array_item_size(src_byte_array);
wapp_debug_assert(dst->capacity >= size, "`dst` does not have enough capacity");