Add ability to fill array with capacity
This commit is contained in:
@@ -43,13 +43,13 @@ BEGIN_C_LINKAGE
|
||||
items, \
|
||||
}; \
|
||||
}())
|
||||
#define wapp_array_with_capacity(ELEM_TYPE, ARRAY_TYPE, CAPACITY) ([&]() { \
|
||||
#define wapp_array_with_capacity(ELEM_TYPE, ARRAY_TYPE, CAPACITY, FILL) ([&]() { \
|
||||
wapp_persist ELEM_TYPE items[sizeof(ELEM_TYPE) == sizeof(*((ARRAY_TYPE{}).items)) ? \
|
||||
CAPACITY : -1] = {}; \
|
||||
\
|
||||
return ARRAY_TYPE{ \
|
||||
WAPP_ARRAY_MAGIC, \
|
||||
0, \
|
||||
FILL ? CAPACITY : 0, \
|
||||
CAPACITY, \
|
||||
sizeof(ELEM_TYPE), \
|
||||
items, \
|
||||
@@ -74,10 +74,10 @@ BEGIN_C_LINKAGE
|
||||
_calc_array_capacity(ELEM_TYPE, __VA_ARGS__) : \
|
||||
-1]){__VA_ARGS__} \
|
||||
})
|
||||
#define wapp_array_with_capacity(ELEM_TYPE, ARRAY_TYPE, CAPACITY) \
|
||||
#define wapp_array_with_capacity(ELEM_TYPE, ARRAY_TYPE, CAPACITY, FILL) \
|
||||
((ARRAY_TYPE){ \
|
||||
.magic = WAPP_ARRAY_MAGIC, \
|
||||
.count = 0, \
|
||||
.count = FILL ? CAPACITY : 0, \
|
||||
.capacity = CAPACITY, \
|
||||
.item_size = sizeof(ELEM_TYPE), \
|
||||
.items = (ELEM_TYPE[sizeof(ELEM_TYPE) == sizeof(*((ARRAY_TYPE){0}.items)) ? \
|
||||
|
||||
@@ -25,8 +25,11 @@ TestFuncResult test_i32_array(void) {
|
||||
TestFuncResult test_i32_array_with_capacity(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64);
|
||||
result = array.count == 0 && array.capacity == 64;
|
||||
I32Array array1 = wapp_array_with_capacity(i32, I32Array, 64, false);
|
||||
result = array1.count == 0 && array1.capacity == 64;
|
||||
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 64, true);
|
||||
result = array2.count == 64 && array2.capacity == 64;
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
@@ -76,7 +79,7 @@ TestFuncResult test_i32_array_set(void) {
|
||||
TestFuncResult test_i32_array_append_capped(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64);
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64, false);
|
||||
wapp_array_append_capped(i32, &array, &((i32){10}));
|
||||
|
||||
result = array.count == 1;
|
||||
@@ -246,7 +249,7 @@ TestFuncResult test_i32_array_pop(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array1 = wapp_array(i32, I32Array, 0, 1, 2, 3, 4, 5, 6, 7, 8);
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 32);
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 32, false);
|
||||
|
||||
i32 item1 = wapp_array_pop(i32, &array1);
|
||||
i32 item2 = wapp_array_pop(i32, &array2);
|
||||
|
||||
@@ -25,8 +25,11 @@ TestFuncResult test_i32_array(void) {
|
||||
TestFuncResult test_i32_array_with_capacity(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64);
|
||||
result = array.count == 0 && array.capacity == 64;
|
||||
I32Array array1 = wapp_array_with_capacity(i32, I32Array, 64, false);
|
||||
result = array1.count == 0 && array1.capacity == 64;
|
||||
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 64, true);
|
||||
result = array2.count == 64 && array2.capacity == 64;
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
@@ -76,7 +79,7 @@ TestFuncResult test_i32_array_set(void) {
|
||||
TestFuncResult test_i32_array_append_capped(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64);
|
||||
I32Array array = wapp_array_with_capacity(i32, I32Array, 64, false);
|
||||
i32 item1 = 10;
|
||||
wapp_array_append_capped(i32, &array, &item1);
|
||||
|
||||
@@ -262,7 +265,7 @@ TestFuncResult test_i32_array_pop(void) {
|
||||
b8 result;
|
||||
|
||||
I32Array array1 = wapp_array(i32, I32Array, 0, 1, 2, 3, 4, 5, 6, 7, 8);
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 32);
|
||||
I32Array array2 = wapp_array_with_capacity(i32, I32Array, 32, false);
|
||||
|
||||
i32 item1 = wapp_array_pop(i32, &array1);
|
||||
i32 item2 = wapp_array_pop(i32, &array2);
|
||||
|
||||
Reference in New Issue
Block a user