972 lines
46 KiB
C
972 lines
46 KiB
C
/**
|
|
* THIS FILE IS AUTOMATICALLY GENERATED. ANY MODIFICATIONS TO IT WILL BE OVERWRITTEN
|
|
*/
|
|
|
|
#ifndef ARRAY_H
|
|
#define ARRAY_H
|
|
|
|
#include "../../common/aliases/aliases.h"
|
|
#include "../mem_allocator/mem_allocator.h"
|
|
#include "../../common/misc/misc_utils.h"
|
|
#include "../../common/aliases/aliases.h"
|
|
#include "../../common/platform/platform.h"
|
|
|
|
#ifdef WAPP_PLATFORM_CPP
|
|
BEGIN_C_LINKAGE
|
|
#endif // !WAPP_PLATFORM_CPP
|
|
|
|
#define wapp_str8_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((Str8Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(Str8)))
|
|
#define wapp_void_ptr_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((VoidPArray *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(void *)))
|
|
#define wapp_b32_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((B32Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(b32)))
|
|
#define wapp_char_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((CharArray *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(char)))
|
|
#define wapp_c8_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((C8Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(c8)))
|
|
#define wapp_c16_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((C16Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(c16)))
|
|
#define wapp_c32_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((C32Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(c32)))
|
|
#define wapp_i8_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((I8Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(i8)))
|
|
#define wapp_i16_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((I16Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(i16)))
|
|
#define wapp_i32_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((I32Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(i32)))
|
|
#define wapp_i64_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((I64Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(i64)))
|
|
#define wapp_u8_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((U8Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(u8)))
|
|
#define wapp_u16_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((U16Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(u16)))
|
|
#define wapp_u32_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((U32Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(u32)))
|
|
#define wapp_u64_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((U64Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(u64)))
|
|
#define wapp_f32_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((F32Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(f32)))
|
|
#define wapp_f64_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((F64Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(f64)))
|
|
#define wapp_f128_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((F128Array *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(f128)))
|
|
#define wapp_iptr_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((IptrArray *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(iptr)))
|
|
#define wapp_uptr_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY) ((UptrArray *)_array_alloc_capacity(ALLOCATOR_PTR, CAPACITY, sizeof(uptr)))
|
|
|
|
#ifdef WAPP_PLATFORM_CPP
|
|
#define wapp_str8_array(...) ([&]() { \
|
|
persistent Str8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return Str8Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(Str8, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2), \
|
|
sizeof(Str8) \
|
|
}; \
|
|
}())
|
|
#define wapp_str8_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent Str8 buf[CAPACITY] = {}; \
|
|
return Str8Array{buf, 0, CAPACITY, sizeof(Str8)}; \
|
|
}())
|
|
#define wapp_str8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_str8_array_pop(ARRAY_PTR) : \
|
|
Str8{} \
|
|
)
|
|
#define wapp_void_ptr_array(...) ([&]() { \
|
|
persistent void * buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(void *, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return VoidPArray{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(void *, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(void *, __VA_ARGS__) * 2), \
|
|
sizeof(void *) \
|
|
}; \
|
|
}())
|
|
#define wapp_void_ptr_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent void * buf[CAPACITY] = {}; \
|
|
return VoidPArray{buf, 0, CAPACITY, sizeof(void *)}; \
|
|
}())
|
|
#define wapp_void_ptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_void_ptr_array_pop(ARRAY_PTR) : \
|
|
void *{} \
|
|
)
|
|
#define wapp_b32_array(...) ([&]() { \
|
|
persistent b32 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(b32, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return B32Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(b32, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(b32, __VA_ARGS__) * 2), \
|
|
sizeof(b32) \
|
|
}; \
|
|
}())
|
|
#define wapp_b32_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent b32 buf[CAPACITY] = {}; \
|
|
return B32Array{buf, 0, CAPACITY, sizeof(b32)}; \
|
|
}())
|
|
#define wapp_b32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_b32_array_pop(ARRAY_PTR) : \
|
|
b32{} \
|
|
)
|
|
#define wapp_char_array(...) ([&]() { \
|
|
persistent char buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(char, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return CharArray{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(char, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(char, __VA_ARGS__) * 2), \
|
|
sizeof(char) \
|
|
}; \
|
|
}())
|
|
#define wapp_char_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent char buf[CAPACITY] = {}; \
|
|
return CharArray{buf, 0, CAPACITY, sizeof(char)}; \
|
|
}())
|
|
#define wapp_char_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_char_array_pop(ARRAY_PTR) : \
|
|
char{} \
|
|
)
|
|
#define wapp_c8_array(...) ([&]() { \
|
|
persistent c8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return C8Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(c8, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c8, __VA_ARGS__) * 2), \
|
|
sizeof(c8) \
|
|
}; \
|
|
}())
|
|
#define wapp_c8_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent c8 buf[CAPACITY] = {}; \
|
|
return C8Array{buf, 0, CAPACITY, sizeof(c8)}; \
|
|
}())
|
|
#define wapp_c8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c8_array_pop(ARRAY_PTR) : \
|
|
c8{} \
|
|
)
|
|
#define wapp_c16_array(...) ([&]() { \
|
|
persistent c16 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c16, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return C16Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(c16, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c16, __VA_ARGS__) * 2), \
|
|
sizeof(c16) \
|
|
}; \
|
|
}())
|
|
#define wapp_c16_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent c16 buf[CAPACITY] = {}; \
|
|
return C16Array{buf, 0, CAPACITY, sizeof(c16)}; \
|
|
}())
|
|
#define wapp_c16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c16_array_pop(ARRAY_PTR) : \
|
|
c16{} \
|
|
)
|
|
#define wapp_c32_array(...) ([&]() { \
|
|
persistent c32 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c32, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return C32Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(c32, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c32, __VA_ARGS__) * 2), \
|
|
sizeof(c32) \
|
|
}; \
|
|
}())
|
|
#define wapp_c32_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent c32 buf[CAPACITY] = {}; \
|
|
return C32Array{buf, 0, CAPACITY, sizeof(c32)}; \
|
|
}())
|
|
#define wapp_c32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c32_array_pop(ARRAY_PTR) : \
|
|
c32{} \
|
|
)
|
|
#define wapp_i8_array(...) ([&]() { \
|
|
persistent i8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return I8Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(i8, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i8, __VA_ARGS__) * 2), \
|
|
sizeof(i8) \
|
|
}; \
|
|
}())
|
|
#define wapp_i8_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent i8 buf[CAPACITY] = {}; \
|
|
return I8Array{buf, 0, CAPACITY, sizeof(i8)}; \
|
|
}())
|
|
#define wapp_i8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i8_array_pop(ARRAY_PTR) : \
|
|
i8{} \
|
|
)
|
|
#define wapp_i16_array(...) ([&]() { \
|
|
persistent i16 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i16, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return I16Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(i16, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i16, __VA_ARGS__) * 2), \
|
|
sizeof(i16) \
|
|
}; \
|
|
}())
|
|
#define wapp_i16_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent i16 buf[CAPACITY] = {}; \
|
|
return I16Array{buf, 0, CAPACITY, sizeof(i16)}; \
|
|
}())
|
|
#define wapp_i16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i16_array_pop(ARRAY_PTR) : \
|
|
i16{} \
|
|
)
|
|
#define wapp_i32_array(...) ([&]() { \
|
|
persistent i32 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i32, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return I32Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(i32, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i32, __VA_ARGS__) * 2), \
|
|
sizeof(i32) \
|
|
}; \
|
|
}())
|
|
#define wapp_i32_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent i32 buf[CAPACITY] = {}; \
|
|
return I32Array{buf, 0, CAPACITY, sizeof(i32)}; \
|
|
}())
|
|
#define wapp_i32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i32_array_pop(ARRAY_PTR) : \
|
|
i32{} \
|
|
)
|
|
#define wapp_i64_array(...) ([&]() { \
|
|
persistent i64 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i64, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return I64Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(i64, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i64, __VA_ARGS__) * 2), \
|
|
sizeof(i64) \
|
|
}; \
|
|
}())
|
|
#define wapp_i64_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent i64 buf[CAPACITY] = {}; \
|
|
return I64Array{buf, 0, CAPACITY, sizeof(i64)}; \
|
|
}())
|
|
#define wapp_i64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i64_array_pop(ARRAY_PTR) : \
|
|
i64{} \
|
|
)
|
|
#define wapp_u8_array(...) ([&]() { \
|
|
persistent u8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return U8Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(u8, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u8, __VA_ARGS__) * 2), \
|
|
sizeof(u8) \
|
|
}; \
|
|
}())
|
|
#define wapp_u8_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent u8 buf[CAPACITY] = {}; \
|
|
return U8Array{buf, 0, CAPACITY, sizeof(u8)}; \
|
|
}())
|
|
#define wapp_u8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u8_array_pop(ARRAY_PTR) : \
|
|
u8{} \
|
|
)
|
|
#define wapp_u16_array(...) ([&]() { \
|
|
persistent u16 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u16, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return U16Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(u16, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u16, __VA_ARGS__) * 2), \
|
|
sizeof(u16) \
|
|
}; \
|
|
}())
|
|
#define wapp_u16_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent u16 buf[CAPACITY] = {}; \
|
|
return U16Array{buf, 0, CAPACITY, sizeof(u16)}; \
|
|
}())
|
|
#define wapp_u16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u16_array_pop(ARRAY_PTR) : \
|
|
u16{} \
|
|
)
|
|
#define wapp_u32_array(...) ([&]() { \
|
|
persistent u32 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u32, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return U32Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(u32, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u32, __VA_ARGS__) * 2), \
|
|
sizeof(u32) \
|
|
}; \
|
|
}())
|
|
#define wapp_u32_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent u32 buf[CAPACITY] = {}; \
|
|
return U32Array{buf, 0, CAPACITY, sizeof(u32)}; \
|
|
}())
|
|
#define wapp_u32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u32_array_pop(ARRAY_PTR) : \
|
|
u32{} \
|
|
)
|
|
#define wapp_u64_array(...) ([&]() { \
|
|
persistent u64 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u64, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return U64Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(u64, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u64, __VA_ARGS__) * 2), \
|
|
sizeof(u64) \
|
|
}; \
|
|
}())
|
|
#define wapp_u64_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent u64 buf[CAPACITY] = {}; \
|
|
return U64Array{buf, 0, CAPACITY, sizeof(u64)}; \
|
|
}())
|
|
#define wapp_u64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u64_array_pop(ARRAY_PTR) : \
|
|
u64{} \
|
|
)
|
|
#define wapp_f32_array(...) ([&]() { \
|
|
persistent f32 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f32, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return F32Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(f32, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f32, __VA_ARGS__) * 2), \
|
|
sizeof(f32) \
|
|
}; \
|
|
}())
|
|
#define wapp_f32_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent f32 buf[CAPACITY] = {}; \
|
|
return F32Array{buf, 0, CAPACITY, sizeof(f32)}; \
|
|
}())
|
|
#define wapp_f32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f32_array_pop(ARRAY_PTR) : \
|
|
f32{} \
|
|
)
|
|
#define wapp_f64_array(...) ([&]() { \
|
|
persistent f64 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f64, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return F64Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(f64, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f64, __VA_ARGS__) * 2), \
|
|
sizeof(f64) \
|
|
}; \
|
|
}())
|
|
#define wapp_f64_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent f64 buf[CAPACITY] = {}; \
|
|
return F64Array{buf, 0, CAPACITY, sizeof(f64)}; \
|
|
}())
|
|
#define wapp_f64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f64_array_pop(ARRAY_PTR) : \
|
|
f64{} \
|
|
)
|
|
#define wapp_f128_array(...) ([&]() { \
|
|
persistent f128 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f128, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return F128Array{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(f128, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f128, __VA_ARGS__) * 2), \
|
|
sizeof(f128) \
|
|
}; \
|
|
}())
|
|
#define wapp_f128_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent f128 buf[CAPACITY] = {}; \
|
|
return F128Array{buf, 0, CAPACITY, sizeof(f128)}; \
|
|
}())
|
|
#define wapp_f128_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f128_array_pop(ARRAY_PTR) : \
|
|
f128{} \
|
|
)
|
|
#define wapp_iptr_array(...) ([&]() { \
|
|
persistent iptr buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(iptr, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return IptrArray{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(iptr, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(iptr, __VA_ARGS__) * 2), \
|
|
sizeof(iptr) \
|
|
}; \
|
|
}())
|
|
#define wapp_iptr_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent iptr buf[CAPACITY] = {}; \
|
|
return IptrArray{buf, 0, CAPACITY, sizeof(iptr)}; \
|
|
}())
|
|
#define wapp_iptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_iptr_array_pop(ARRAY_PTR) : \
|
|
iptr{} \
|
|
)
|
|
#define wapp_uptr_array(...) ([&]() { \
|
|
persistent uptr buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(uptr, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
|
return UptrArray{ \
|
|
buf, \
|
|
wapp_misc_utils_va_args_count(uptr, __VA_ARGS__), \
|
|
wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(uptr, __VA_ARGS__) * 2), \
|
|
sizeof(uptr) \
|
|
}; \
|
|
}())
|
|
#define wapp_uptr_array_with_capacity(CAPACITY) ([&]() { \
|
|
persistent uptr buf[CAPACITY] = {}; \
|
|
return UptrArray{buf, 0, CAPACITY, sizeof(uptr)}; \
|
|
}())
|
|
#define wapp_uptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_uptr_array_pop(ARRAY_PTR) : \
|
|
uptr{} \
|
|
)
|
|
#else
|
|
#define wapp_str8_array(...) ((Str8Array){ \
|
|
.items = (Str8[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(Str8, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(Str8) \
|
|
})
|
|
#define wapp_str8_array_with_capacity(CAPACITY) ((Str8Array){.items = (Str8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(Str8)})
|
|
#define wapp_str8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_str8_array_pop(ARRAY_PTR) : \
|
|
(Str8){0} \
|
|
)
|
|
#define wapp_void_ptr_array(...) ((VoidPArray){ \
|
|
.items = (void *[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(void *, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(void *, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(void *, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(void *) \
|
|
})
|
|
#define wapp_void_ptr_array_with_capacity(CAPACITY) ((VoidPArray){.items = (void *[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(void *)})
|
|
#define wapp_void_ptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_void_ptr_array_pop(ARRAY_PTR) : \
|
|
(void *){0} \
|
|
)
|
|
#define wapp_b32_array(...) ((B32Array){ \
|
|
.items = (b32[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(b32, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(b32, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(b32, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(b32) \
|
|
})
|
|
#define wapp_b32_array_with_capacity(CAPACITY) ((B32Array){.items = (b32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(b32)})
|
|
#define wapp_b32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_b32_array_pop(ARRAY_PTR) : \
|
|
(b32){0} \
|
|
)
|
|
#define wapp_char_array(...) ((CharArray){ \
|
|
.items = (char[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(char, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(char, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(char, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(char) \
|
|
})
|
|
#define wapp_char_array_with_capacity(CAPACITY) ((CharArray){.items = (char[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(char)})
|
|
#define wapp_char_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_char_array_pop(ARRAY_PTR) : \
|
|
(char){0} \
|
|
)
|
|
#define wapp_c8_array(...) ((C8Array){ \
|
|
.items = (c8[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c8, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(c8, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c8, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(c8) \
|
|
})
|
|
#define wapp_c8_array_with_capacity(CAPACITY) ((C8Array){.items = (c8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(c8)})
|
|
#define wapp_c8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c8_array_pop(ARRAY_PTR) : \
|
|
(c8){0} \
|
|
)
|
|
#define wapp_c16_array(...) ((C16Array){ \
|
|
.items = (c16[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c16, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(c16, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c16, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(c16) \
|
|
})
|
|
#define wapp_c16_array_with_capacity(CAPACITY) ((C16Array){.items = (c16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(c16)})
|
|
#define wapp_c16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c16_array_pop(ARRAY_PTR) : \
|
|
(c16){0} \
|
|
)
|
|
#define wapp_c32_array(...) ((C32Array){ \
|
|
.items = (c32[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c32, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(c32, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(c32, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(c32) \
|
|
})
|
|
#define wapp_c32_array_with_capacity(CAPACITY) ((C32Array){.items = (c32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(c32)})
|
|
#define wapp_c32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_c32_array_pop(ARRAY_PTR) : \
|
|
(c32){0} \
|
|
)
|
|
#define wapp_i8_array(...) ((I8Array){ \
|
|
.items = (i8[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i8, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(i8, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i8, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(i8) \
|
|
})
|
|
#define wapp_i8_array_with_capacity(CAPACITY) ((I8Array){.items = (i8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(i8)})
|
|
#define wapp_i8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i8_array_pop(ARRAY_PTR) : \
|
|
(i8){0} \
|
|
)
|
|
#define wapp_i16_array(...) ((I16Array){ \
|
|
.items = (i16[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i16, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(i16, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i16, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(i16) \
|
|
})
|
|
#define wapp_i16_array_with_capacity(CAPACITY) ((I16Array){.items = (i16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(i16)})
|
|
#define wapp_i16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i16_array_pop(ARRAY_PTR) : \
|
|
(i16){0} \
|
|
)
|
|
#define wapp_i32_array(...) ((I32Array){ \
|
|
.items = (i32[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i32, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(i32, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i32, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(i32) \
|
|
})
|
|
#define wapp_i32_array_with_capacity(CAPACITY) ((I32Array){.items = (i32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(i32)})
|
|
#define wapp_i32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i32_array_pop(ARRAY_PTR) : \
|
|
(i32){0} \
|
|
)
|
|
#define wapp_i64_array(...) ((I64Array){ \
|
|
.items = (i64[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i64, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(i64, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(i64, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(i64) \
|
|
})
|
|
#define wapp_i64_array_with_capacity(CAPACITY) ((I64Array){.items = (i64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(i64)})
|
|
#define wapp_i64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_i64_array_pop(ARRAY_PTR) : \
|
|
(i64){0} \
|
|
)
|
|
#define wapp_u8_array(...) ((U8Array){ \
|
|
.items = (u8[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u8, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(u8, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u8, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(u8) \
|
|
})
|
|
#define wapp_u8_array_with_capacity(CAPACITY) ((U8Array){.items = (u8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(u8)})
|
|
#define wapp_u8_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u8_array_pop(ARRAY_PTR) : \
|
|
(u8){0} \
|
|
)
|
|
#define wapp_u16_array(...) ((U16Array){ \
|
|
.items = (u16[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u16, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(u16, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u16, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(u16) \
|
|
})
|
|
#define wapp_u16_array_with_capacity(CAPACITY) ((U16Array){.items = (u16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(u16)})
|
|
#define wapp_u16_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u16_array_pop(ARRAY_PTR) : \
|
|
(u16){0} \
|
|
)
|
|
#define wapp_u32_array(...) ((U32Array){ \
|
|
.items = (u32[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u32, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(u32, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u32, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(u32) \
|
|
})
|
|
#define wapp_u32_array_with_capacity(CAPACITY) ((U32Array){.items = (u32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(u32)})
|
|
#define wapp_u32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u32_array_pop(ARRAY_PTR) : \
|
|
(u32){0} \
|
|
)
|
|
#define wapp_u64_array(...) ((U64Array){ \
|
|
.items = (u64[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u64, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(u64, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(u64, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(u64) \
|
|
})
|
|
#define wapp_u64_array_with_capacity(CAPACITY) ((U64Array){.items = (u64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(u64)})
|
|
#define wapp_u64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_u64_array_pop(ARRAY_PTR) : \
|
|
(u64){0} \
|
|
)
|
|
#define wapp_f32_array(...) ((F32Array){ \
|
|
.items = (f32[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f32, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(f32, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f32, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(f32) \
|
|
})
|
|
#define wapp_f32_array_with_capacity(CAPACITY) ((F32Array){.items = (f32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(f32)})
|
|
#define wapp_f32_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f32_array_pop(ARRAY_PTR) : \
|
|
(f32){0} \
|
|
)
|
|
#define wapp_f64_array(...) ((F64Array){ \
|
|
.items = (f64[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f64, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(f64, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f64, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(f64) \
|
|
})
|
|
#define wapp_f64_array_with_capacity(CAPACITY) ((F64Array){.items = (f64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(f64)})
|
|
#define wapp_f64_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f64_array_pop(ARRAY_PTR) : \
|
|
(f64){0} \
|
|
)
|
|
#define wapp_f128_array(...) ((F128Array){ \
|
|
.items = (f128[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f128, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(f128, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(f128, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(f128) \
|
|
})
|
|
#define wapp_f128_array_with_capacity(CAPACITY) ((F128Array){.items = (f128[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(f128)})
|
|
#define wapp_f128_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_f128_array_pop(ARRAY_PTR) : \
|
|
(f128){0} \
|
|
)
|
|
#define wapp_iptr_array(...) ((IptrArray){ \
|
|
.items = (iptr[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(iptr, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(iptr, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(iptr, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(iptr) \
|
|
})
|
|
#define wapp_iptr_array_with_capacity(CAPACITY) ((IptrArray){.items = (iptr[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(iptr)})
|
|
#define wapp_iptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_iptr_array_pop(ARRAY_PTR) : \
|
|
(iptr){0} \
|
|
)
|
|
#define wapp_uptr_array(...) ((UptrArray){ \
|
|
.items = (uptr[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(uptr, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
|
.count = wapp_misc_utils_va_args_count(uptr, __VA_ARGS__), \
|
|
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(uptr, __VA_ARGS__) * 2), \
|
|
.item_size = sizeof(uptr) \
|
|
})
|
|
#define wapp_uptr_array_with_capacity(CAPACITY) ((UptrArray){.items = (uptr[CAPACITY]){0}, .count = 0, .capacity = CAPACITY, .item_size = sizeof(uptr)})
|
|
#define wapp_uptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
|
*_uptr_array_pop(ARRAY_PTR) : \
|
|
(uptr){0} \
|
|
)
|
|
#endif // !WAPP_PLATFORM_CPP
|
|
|
|
typedef struct str8 Str8;
|
|
|
|
typedef struct Str8Array Str8Array;
|
|
struct Str8Array {
|
|
Str8 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct VoidPArray VoidPArray;
|
|
struct VoidPArray {
|
|
void * *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct B32Array B32Array;
|
|
struct B32Array {
|
|
b32 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct CharArray CharArray;
|
|
struct CharArray {
|
|
char *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct C8Array C8Array;
|
|
struct C8Array {
|
|
c8 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct C16Array C16Array;
|
|
struct C16Array {
|
|
c16 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct C32Array C32Array;
|
|
struct C32Array {
|
|
c32 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct I8Array I8Array;
|
|
struct I8Array {
|
|
i8 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct I16Array I16Array;
|
|
struct I16Array {
|
|
i16 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct I32Array I32Array;
|
|
struct I32Array {
|
|
i32 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct I64Array I64Array;
|
|
struct I64Array {
|
|
i64 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct U8Array U8Array;
|
|
struct U8Array {
|
|
u8 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct U16Array U16Array;
|
|
struct U16Array {
|
|
u16 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct U32Array U32Array;
|
|
struct U32Array {
|
|
u32 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct U64Array U64Array;
|
|
struct U64Array {
|
|
u64 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct F32Array F32Array;
|
|
struct F32Array {
|
|
f32 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct F64Array F64Array;
|
|
struct F64Array {
|
|
f64 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct F128Array F128Array;
|
|
struct F128Array {
|
|
f128 *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct IptrArray IptrArray;
|
|
struct IptrArray {
|
|
iptr *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
typedef struct UptrArray UptrArray;
|
|
struct UptrArray {
|
|
uptr *items;
|
|
u64 count;
|
|
u64 capacity;
|
|
u64 item_size;
|
|
};
|
|
|
|
Str8 *wapp_str8_array_get(const Str8Array *array, u64 index);
|
|
void wapp_str8_array_set(Str8Array *array, u64 index, Str8 *item);
|
|
void wapp_str8_array_append_capped(Str8Array *array, Str8 *item);
|
|
void wapp_str8_array_extend_capped(Str8Array *array, const Str8Array *other);
|
|
void wapp_str8_array_clear(Str8Array *array);
|
|
void wapp_str8_array_copy_capped(const Str8Array *src, Str8Array *dst);
|
|
Str8Array *wapp_str8_array_append_alloc(const Allocator *allocator, Str8Array *array, Str8 *item);
|
|
Str8Array *wapp_str8_array_extend_alloc(const Allocator *allocator, Str8Array *array, const Str8Array *other);
|
|
Str8Array *wapp_str8_array_copy_alloc(const Allocator *allocator, const Str8Array *src, Str8Array *dst);
|
|
Str8 *_str8_array_pop(Str8Array *array);
|
|
void * *wapp_void_ptr_array_get(const VoidPArray *array, u64 index);
|
|
void wapp_void_ptr_array_set(VoidPArray *array, u64 index, void * *item);
|
|
void wapp_void_ptr_array_append_capped(VoidPArray *array, void * *item);
|
|
void wapp_void_ptr_array_extend_capped(VoidPArray *array, const VoidPArray *other);
|
|
void wapp_void_ptr_array_clear(VoidPArray *array);
|
|
void wapp_void_ptr_array_copy_capped(const VoidPArray *src, VoidPArray *dst);
|
|
VoidPArray *wapp_void_ptr_array_append_alloc(const Allocator *allocator, VoidPArray *array, void * *item);
|
|
VoidPArray *wapp_void_ptr_array_extend_alloc(const Allocator *allocator, VoidPArray *array, const VoidPArray *other);
|
|
VoidPArray *wapp_void_ptr_array_copy_alloc(const Allocator *allocator, const VoidPArray *src, VoidPArray *dst);
|
|
void * *_void_ptr_array_pop(VoidPArray *array);
|
|
b32 *wapp_b32_array_get(const B32Array *array, u64 index);
|
|
void wapp_b32_array_set(B32Array *array, u64 index, b32 *item);
|
|
void wapp_b32_array_append_capped(B32Array *array, b32 *item);
|
|
void wapp_b32_array_extend_capped(B32Array *array, const B32Array *other);
|
|
void wapp_b32_array_clear(B32Array *array);
|
|
void wapp_b32_array_copy_capped(const B32Array *src, B32Array *dst);
|
|
B32Array *wapp_b32_array_append_alloc(const Allocator *allocator, B32Array *array, b32 *item);
|
|
B32Array *wapp_b32_array_extend_alloc(const Allocator *allocator, B32Array *array, const B32Array *other);
|
|
B32Array *wapp_b32_array_copy_alloc(const Allocator *allocator, const B32Array *src, B32Array *dst);
|
|
b32 *_b32_array_pop(B32Array *array);
|
|
char *wapp_char_array_get(const CharArray *array, u64 index);
|
|
void wapp_char_array_set(CharArray *array, u64 index, char *item);
|
|
void wapp_char_array_append_capped(CharArray *array, char *item);
|
|
void wapp_char_array_extend_capped(CharArray *array, const CharArray *other);
|
|
void wapp_char_array_clear(CharArray *array);
|
|
void wapp_char_array_copy_capped(const CharArray *src, CharArray *dst);
|
|
CharArray *wapp_char_array_append_alloc(const Allocator *allocator, CharArray *array, char *item);
|
|
CharArray *wapp_char_array_extend_alloc(const Allocator *allocator, CharArray *array, const CharArray *other);
|
|
CharArray *wapp_char_array_copy_alloc(const Allocator *allocator, const CharArray *src, CharArray *dst);
|
|
char *_char_array_pop(CharArray *array);
|
|
c8 *wapp_c8_array_get(const C8Array *array, u64 index);
|
|
void wapp_c8_array_set(C8Array *array, u64 index, c8 *item);
|
|
void wapp_c8_array_append_capped(C8Array *array, c8 *item);
|
|
void wapp_c8_array_extend_capped(C8Array *array, const C8Array *other);
|
|
void wapp_c8_array_clear(C8Array *array);
|
|
void wapp_c8_array_copy_capped(const C8Array *src, C8Array *dst);
|
|
C8Array *wapp_c8_array_append_alloc(const Allocator *allocator, C8Array *array, c8 *item);
|
|
C8Array *wapp_c8_array_extend_alloc(const Allocator *allocator, C8Array *array, const C8Array *other);
|
|
C8Array *wapp_c8_array_copy_alloc(const Allocator *allocator, const C8Array *src, C8Array *dst);
|
|
c8 *_c8_array_pop(C8Array *array);
|
|
c16 *wapp_c16_array_get(const C16Array *array, u64 index);
|
|
void wapp_c16_array_set(C16Array *array, u64 index, c16 *item);
|
|
void wapp_c16_array_append_capped(C16Array *array, c16 *item);
|
|
void wapp_c16_array_extend_capped(C16Array *array, const C16Array *other);
|
|
void wapp_c16_array_clear(C16Array *array);
|
|
void wapp_c16_array_copy_capped(const C16Array *src, C16Array *dst);
|
|
C16Array *wapp_c16_array_append_alloc(const Allocator *allocator, C16Array *array, c16 *item);
|
|
C16Array *wapp_c16_array_extend_alloc(const Allocator *allocator, C16Array *array, const C16Array *other);
|
|
C16Array *wapp_c16_array_copy_alloc(const Allocator *allocator, const C16Array *src, C16Array *dst);
|
|
c16 *_c16_array_pop(C16Array *array);
|
|
c32 *wapp_c32_array_get(const C32Array *array, u64 index);
|
|
void wapp_c32_array_set(C32Array *array, u64 index, c32 *item);
|
|
void wapp_c32_array_append_capped(C32Array *array, c32 *item);
|
|
void wapp_c32_array_extend_capped(C32Array *array, const C32Array *other);
|
|
void wapp_c32_array_clear(C32Array *array);
|
|
void wapp_c32_array_copy_capped(const C32Array *src, C32Array *dst);
|
|
C32Array *wapp_c32_array_append_alloc(const Allocator *allocator, C32Array *array, c32 *item);
|
|
C32Array *wapp_c32_array_extend_alloc(const Allocator *allocator, C32Array *array, const C32Array *other);
|
|
C32Array *wapp_c32_array_copy_alloc(const Allocator *allocator, const C32Array *src, C32Array *dst);
|
|
c32 *_c32_array_pop(C32Array *array);
|
|
i8 *wapp_i8_array_get(const I8Array *array, u64 index);
|
|
void wapp_i8_array_set(I8Array *array, u64 index, i8 *item);
|
|
void wapp_i8_array_append_capped(I8Array *array, i8 *item);
|
|
void wapp_i8_array_extend_capped(I8Array *array, const I8Array *other);
|
|
void wapp_i8_array_clear(I8Array *array);
|
|
void wapp_i8_array_copy_capped(const I8Array *src, I8Array *dst);
|
|
I8Array *wapp_i8_array_append_alloc(const Allocator *allocator, I8Array *array, i8 *item);
|
|
I8Array *wapp_i8_array_extend_alloc(const Allocator *allocator, I8Array *array, const I8Array *other);
|
|
I8Array *wapp_i8_array_copy_alloc(const Allocator *allocator, const I8Array *src, I8Array *dst);
|
|
i8 *_i8_array_pop(I8Array *array);
|
|
i16 *wapp_i16_array_get(const I16Array *array, u64 index);
|
|
void wapp_i16_array_set(I16Array *array, u64 index, i16 *item);
|
|
void wapp_i16_array_append_capped(I16Array *array, i16 *item);
|
|
void wapp_i16_array_extend_capped(I16Array *array, const I16Array *other);
|
|
void wapp_i16_array_clear(I16Array *array);
|
|
void wapp_i16_array_copy_capped(const I16Array *src, I16Array *dst);
|
|
I16Array *wapp_i16_array_append_alloc(const Allocator *allocator, I16Array *array, i16 *item);
|
|
I16Array *wapp_i16_array_extend_alloc(const Allocator *allocator, I16Array *array, const I16Array *other);
|
|
I16Array *wapp_i16_array_copy_alloc(const Allocator *allocator, const I16Array *src, I16Array *dst);
|
|
i16 *_i16_array_pop(I16Array *array);
|
|
i32 *wapp_i32_array_get(const I32Array *array, u64 index);
|
|
void wapp_i32_array_set(I32Array *array, u64 index, i32 *item);
|
|
void wapp_i32_array_append_capped(I32Array *array, i32 *item);
|
|
void wapp_i32_array_extend_capped(I32Array *array, const I32Array *other);
|
|
void wapp_i32_array_clear(I32Array *array);
|
|
void wapp_i32_array_copy_capped(const I32Array *src, I32Array *dst);
|
|
I32Array *wapp_i32_array_append_alloc(const Allocator *allocator, I32Array *array, i32 *item);
|
|
I32Array *wapp_i32_array_extend_alloc(const Allocator *allocator, I32Array *array, const I32Array *other);
|
|
I32Array *wapp_i32_array_copy_alloc(const Allocator *allocator, const I32Array *src, I32Array *dst);
|
|
i32 *_i32_array_pop(I32Array *array);
|
|
i64 *wapp_i64_array_get(const I64Array *array, u64 index);
|
|
void wapp_i64_array_set(I64Array *array, u64 index, i64 *item);
|
|
void wapp_i64_array_append_capped(I64Array *array, i64 *item);
|
|
void wapp_i64_array_extend_capped(I64Array *array, const I64Array *other);
|
|
void wapp_i64_array_clear(I64Array *array);
|
|
void wapp_i64_array_copy_capped(const I64Array *src, I64Array *dst);
|
|
I64Array *wapp_i64_array_append_alloc(const Allocator *allocator, I64Array *array, i64 *item);
|
|
I64Array *wapp_i64_array_extend_alloc(const Allocator *allocator, I64Array *array, const I64Array *other);
|
|
I64Array *wapp_i64_array_copy_alloc(const Allocator *allocator, const I64Array *src, I64Array *dst);
|
|
i64 *_i64_array_pop(I64Array *array);
|
|
u8 *wapp_u8_array_get(const U8Array *array, u64 index);
|
|
void wapp_u8_array_set(U8Array *array, u64 index, u8 *item);
|
|
void wapp_u8_array_append_capped(U8Array *array, u8 *item);
|
|
void wapp_u8_array_extend_capped(U8Array *array, const U8Array *other);
|
|
void wapp_u8_array_clear(U8Array *array);
|
|
void wapp_u8_array_copy_capped(const U8Array *src, U8Array *dst);
|
|
U8Array *wapp_u8_array_append_alloc(const Allocator *allocator, U8Array *array, u8 *item);
|
|
U8Array *wapp_u8_array_extend_alloc(const Allocator *allocator, U8Array *array, const U8Array *other);
|
|
U8Array *wapp_u8_array_copy_alloc(const Allocator *allocator, const U8Array *src, U8Array *dst);
|
|
u8 *_u8_array_pop(U8Array *array);
|
|
u16 *wapp_u16_array_get(const U16Array *array, u64 index);
|
|
void wapp_u16_array_set(U16Array *array, u64 index, u16 *item);
|
|
void wapp_u16_array_append_capped(U16Array *array, u16 *item);
|
|
void wapp_u16_array_extend_capped(U16Array *array, const U16Array *other);
|
|
void wapp_u16_array_clear(U16Array *array);
|
|
void wapp_u16_array_copy_capped(const U16Array *src, U16Array *dst);
|
|
U16Array *wapp_u16_array_append_alloc(const Allocator *allocator, U16Array *array, u16 *item);
|
|
U16Array *wapp_u16_array_extend_alloc(const Allocator *allocator, U16Array *array, const U16Array *other);
|
|
U16Array *wapp_u16_array_copy_alloc(const Allocator *allocator, const U16Array *src, U16Array *dst);
|
|
u16 *_u16_array_pop(U16Array *array);
|
|
u32 *wapp_u32_array_get(const U32Array *array, u64 index);
|
|
void wapp_u32_array_set(U32Array *array, u64 index, u32 *item);
|
|
void wapp_u32_array_append_capped(U32Array *array, u32 *item);
|
|
void wapp_u32_array_extend_capped(U32Array *array, const U32Array *other);
|
|
void wapp_u32_array_clear(U32Array *array);
|
|
void wapp_u32_array_copy_capped(const U32Array *src, U32Array *dst);
|
|
U32Array *wapp_u32_array_append_alloc(const Allocator *allocator, U32Array *array, u32 *item);
|
|
U32Array *wapp_u32_array_extend_alloc(const Allocator *allocator, U32Array *array, const U32Array *other);
|
|
U32Array *wapp_u32_array_copy_alloc(const Allocator *allocator, const U32Array *src, U32Array *dst);
|
|
u32 *_u32_array_pop(U32Array *array);
|
|
u64 *wapp_u64_array_get(const U64Array *array, u64 index);
|
|
void wapp_u64_array_set(U64Array *array, u64 index, u64 *item);
|
|
void wapp_u64_array_append_capped(U64Array *array, u64 *item);
|
|
void wapp_u64_array_extend_capped(U64Array *array, const U64Array *other);
|
|
void wapp_u64_array_clear(U64Array *array);
|
|
void wapp_u64_array_copy_capped(const U64Array *src, U64Array *dst);
|
|
U64Array *wapp_u64_array_append_alloc(const Allocator *allocator, U64Array *array, u64 *item);
|
|
U64Array *wapp_u64_array_extend_alloc(const Allocator *allocator, U64Array *array, const U64Array *other);
|
|
U64Array *wapp_u64_array_copy_alloc(const Allocator *allocator, const U64Array *src, U64Array *dst);
|
|
u64 *_u64_array_pop(U64Array *array);
|
|
f32 *wapp_f32_array_get(const F32Array *array, u64 index);
|
|
void wapp_f32_array_set(F32Array *array, u64 index, f32 *item);
|
|
void wapp_f32_array_append_capped(F32Array *array, f32 *item);
|
|
void wapp_f32_array_extend_capped(F32Array *array, const F32Array *other);
|
|
void wapp_f32_array_clear(F32Array *array);
|
|
void wapp_f32_array_copy_capped(const F32Array *src, F32Array *dst);
|
|
F32Array *wapp_f32_array_append_alloc(const Allocator *allocator, F32Array *array, f32 *item);
|
|
F32Array *wapp_f32_array_extend_alloc(const Allocator *allocator, F32Array *array, const F32Array *other);
|
|
F32Array *wapp_f32_array_copy_alloc(const Allocator *allocator, const F32Array *src, F32Array *dst);
|
|
f32 *_f32_array_pop(F32Array *array);
|
|
f64 *wapp_f64_array_get(const F64Array *array, u64 index);
|
|
void wapp_f64_array_set(F64Array *array, u64 index, f64 *item);
|
|
void wapp_f64_array_append_capped(F64Array *array, f64 *item);
|
|
void wapp_f64_array_extend_capped(F64Array *array, const F64Array *other);
|
|
void wapp_f64_array_clear(F64Array *array);
|
|
void wapp_f64_array_copy_capped(const F64Array *src, F64Array *dst);
|
|
F64Array *wapp_f64_array_append_alloc(const Allocator *allocator, F64Array *array, f64 *item);
|
|
F64Array *wapp_f64_array_extend_alloc(const Allocator *allocator, F64Array *array, const F64Array *other);
|
|
F64Array *wapp_f64_array_copy_alloc(const Allocator *allocator, const F64Array *src, F64Array *dst);
|
|
f64 *_f64_array_pop(F64Array *array);
|
|
f128 *wapp_f128_array_get(const F128Array *array, u64 index);
|
|
void wapp_f128_array_set(F128Array *array, u64 index, f128 *item);
|
|
void wapp_f128_array_append_capped(F128Array *array, f128 *item);
|
|
void wapp_f128_array_extend_capped(F128Array *array, const F128Array *other);
|
|
void wapp_f128_array_clear(F128Array *array);
|
|
void wapp_f128_array_copy_capped(const F128Array *src, F128Array *dst);
|
|
F128Array *wapp_f128_array_append_alloc(const Allocator *allocator, F128Array *array, f128 *item);
|
|
F128Array *wapp_f128_array_extend_alloc(const Allocator *allocator, F128Array *array, const F128Array *other);
|
|
F128Array *wapp_f128_array_copy_alloc(const Allocator *allocator, const F128Array *src, F128Array *dst);
|
|
f128 *_f128_array_pop(F128Array *array);
|
|
iptr *wapp_iptr_array_get(const IptrArray *array, u64 index);
|
|
void wapp_iptr_array_set(IptrArray *array, u64 index, iptr *item);
|
|
void wapp_iptr_array_append_capped(IptrArray *array, iptr *item);
|
|
void wapp_iptr_array_extend_capped(IptrArray *array, const IptrArray *other);
|
|
void wapp_iptr_array_clear(IptrArray *array);
|
|
void wapp_iptr_array_copy_capped(const IptrArray *src, IptrArray *dst);
|
|
IptrArray *wapp_iptr_array_append_alloc(const Allocator *allocator, IptrArray *array, iptr *item);
|
|
IptrArray *wapp_iptr_array_extend_alloc(const Allocator *allocator, IptrArray *array, const IptrArray *other);
|
|
IptrArray *wapp_iptr_array_copy_alloc(const Allocator *allocator, const IptrArray *src, IptrArray *dst);
|
|
iptr *_iptr_array_pop(IptrArray *array);
|
|
uptr *wapp_uptr_array_get(const UptrArray *array, u64 index);
|
|
void wapp_uptr_array_set(UptrArray *array, u64 index, uptr *item);
|
|
void wapp_uptr_array_append_capped(UptrArray *array, uptr *item);
|
|
void wapp_uptr_array_extend_capped(UptrArray *array, const UptrArray *other);
|
|
void wapp_uptr_array_clear(UptrArray *array);
|
|
void wapp_uptr_array_copy_capped(const UptrArray *src, UptrArray *dst);
|
|
UptrArray *wapp_uptr_array_append_alloc(const Allocator *allocator, UptrArray *array, uptr *item);
|
|
UptrArray *wapp_uptr_array_extend_alloc(const Allocator *allocator, UptrArray *array, const UptrArray *other);
|
|
UptrArray *wapp_uptr_array_copy_alloc(const Allocator *allocator, const UptrArray *src, UptrArray *dst);
|
|
uptr *_uptr_array_pop(UptrArray *array);
|
|
VoidPArray *_array_alloc_capacity(const Allocator *allocator, u64 capacity, u64 item_size);
|
|
|
|
#ifdef WAPP_PLATFORM_CPP
|
|
END_C_LINKAGE
|
|
#endif // !WAPP_PLATFORM_CPP
|
|
|
|
#endif // !ARRAY_H
|