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