Fix array pop for C++ pointer types
This commit is contained in:
@@ -219,16 +219,29 @@ def make_array(user_datatypes: Dict[CDataType, ArrayData] = {}):
|
|||||||
array_typename=array_data.array_typename,
|
array_typename=array_data.array_typename,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
array_pop_cppmacro = CMacro(
|
|
||||||
name=f"wapp_{type_string_lower}_array_pop(ARRAY_PTR)",
|
if "*" in type_string:
|
||||||
value=__format_func_body(
|
array_pop_cppmacro = CMacro(
|
||||||
filename=snippets_dir / "array_pop_macro_cpp",
|
name=f"wapp_{type_string_lower}_array_pop(ARRAY_PTR)",
|
||||||
type_string=type_string,
|
value=__format_func_body(
|
||||||
type_string_upper=type_string_upper,
|
filename=snippets_dir / "ptr_array_pop_macro_cpp",
|
||||||
type_string_lower=type_string_lower,
|
type_string=type_string,
|
||||||
array_typename=array_data.array_typename,
|
type_string_upper=type_string_upper,
|
||||||
),
|
type_string_lower=type_string_lower,
|
||||||
)
|
array_typename=array_data.array_typename,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
array_pop_cppmacro = CMacro(
|
||||||
|
name=f"wapp_{type_string_lower}_array_pop(ARRAY_PTR)",
|
||||||
|
value=__format_func_body(
|
||||||
|
filename=snippets_dir / "array_pop_macro_cpp",
|
||||||
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
|
array_typename=array_data.array_typename,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
get_func = CFunc(
|
get_func = CFunc(
|
||||||
name=f"wapp_{type_string_lower}_array_get",
|
name=f"wapp_{type_string_lower}_array_get",
|
||||||
|
|||||||
4
codegen/array/snippets/ptr_array_pop_macro_cpp
Normal file
4
codegen/array/snippets/ptr_array_pop_macro_cpp
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
(ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
||||||
|
*_{Tlower}_array_pop(ARRAY_PTR) : \
|
||||||
|
({T})(0) \
|
||||||
|
)
|
||||||
@@ -51,7 +51,7 @@ BEGIN_C_LINKAGE
|
|||||||
}())
|
}())
|
||||||
#define wapp_void_ptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
#define wapp_void_ptr_array_pop(ARRAY_PTR) (ARRAY_PTR != NULL && (ARRAY_PTR)->count > 0 ? \
|
||||||
*_void_ptr_array_pop(ARRAY_PTR) : \
|
*_void_ptr_array_pop(ARRAY_PTR) : \
|
||||||
void *{} \
|
(void *)(0) \
|
||||||
)
|
)
|
||||||
#define wapp_str8_array(...) ([&]() { \
|
#define wapp_str8_array(...) ([&]() { \
|
||||||
wapp_persist Str8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
wapp_persist Str8 buf[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(Str8, __VA_ARGS__) * 2)] = {__VA_ARGS__}; \
|
||||||
|
|||||||
Reference in New Issue
Block a user