Update file IO API
This commit is contained in:
@@ -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");
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user