Add code generation for array
This commit is contained in:
parent
f444911452
commit
12f083edb0
@ -1,10 +1,12 @@
|
||||
from typing import Dict
|
||||
from codegen.datatypes import CDataType
|
||||
from codegen.dbl_list.make_dbl_list import DblListData, make_dbl_list
|
||||
from codegen.array.make_array import ArrayData, make_array
|
||||
|
||||
|
||||
def main():
|
||||
gen_dbl_list()
|
||||
gen_array()
|
||||
|
||||
|
||||
def gen_dbl_list():
|
||||
@ -12,5 +14,10 @@ def gen_dbl_list():
|
||||
make_dbl_list(datatypes)
|
||||
|
||||
|
||||
def gen_array():
|
||||
datatypes: Dict[CDataType, ArrayData] = {}
|
||||
make_array(datatypes)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
355
codegen/array/make_array.py
Normal file
355
codegen/array/make_array.py
Normal file
@ -0,0 +1,355 @@
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass, field
|
||||
from typing import List, Dict
|
||||
from codegen.constants import WAPP_SRC_ROOT
|
||||
from codegen.utils import load_func_body_from_file, convert_to_relative
|
||||
from codegen.datatypes import (
|
||||
CDataType,
|
||||
CMacro,
|
||||
CStruct,
|
||||
CFunc,
|
||||
CHeader,
|
||||
CSource,
|
||||
CArg,
|
||||
CType,
|
||||
CPointer,
|
||||
CPointerType,
|
||||
CQualifier,
|
||||
CInclude,
|
||||
get_datatype_string,
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class ArrayData:
|
||||
array_typename: str
|
||||
hdr_decl_types: List[CStruct] = field(default_factory=list)
|
||||
src_decl_types: List[CStruct] = field(default_factory=list)
|
||||
|
||||
|
||||
def make_array(user_datatypes: Dict[CDataType, ArrayData] = {}):
|
||||
def __format_func_body(
|
||||
filename: Path,
|
||||
type_string: str,
|
||||
type_string_upper: str,
|
||||
type_string_lower: str,
|
||||
array_typename: str
|
||||
):
|
||||
return load_func_body_from_file(filename).format(
|
||||
T=type_string,
|
||||
ArrayType=array_typename,
|
||||
Tupper=type_string_upper,
|
||||
Tlower=type_string_lower,
|
||||
)
|
||||
|
||||
out_dir = WAPP_SRC_ROOT / "primitives" / "array"
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
common_includes: List[CInclude] = [
|
||||
CInclude(header="stdbool.h"),
|
||||
CInclude(
|
||||
header=str(convert_to_relative(WAPP_SRC_ROOT / "primitives" / "mem_allocator" / "mem_allocator.h", out_dir)).replace("\\", "/"),
|
||||
local=True,
|
||||
),
|
||||
CInclude(
|
||||
header=str(convert_to_relative(WAPP_SRC_ROOT / "primitives" / "strings" / "str8" / "str8.h", out_dir)).replace("\\", "/"),
|
||||
local=True,
|
||||
),
|
||||
CInclude(
|
||||
header=str(convert_to_relative(WAPP_SRC_ROOT / "common" / "misc" / "misc_utils.h", out_dir)).replace("\\", "/"),
|
||||
local=True,
|
||||
),
|
||||
]
|
||||
|
||||
common_decl_types: List[CStruct] = []
|
||||
|
||||
datatypes: dict[CDataType, ArrayData] = {
|
||||
"Str8": ArrayData(
|
||||
array_typename="Str8Array",
|
||||
),
|
||||
}
|
||||
|
||||
for _type in CType:
|
||||
if _type == CType.VOID:
|
||||
datatypes["void *"] = ArrayData(
|
||||
array_typename="VoidPArray",
|
||||
)
|
||||
continue
|
||||
elif _type == CType.BOOL:
|
||||
datatypes[_type.value] = ArrayData(
|
||||
array_typename="BoolArray",
|
||||
)
|
||||
continue
|
||||
|
||||
type_title = _type.value.title()
|
||||
datatypes[_type.value] = ArrayData(
|
||||
array_typename=f"{type_title}Array",
|
||||
)
|
||||
|
||||
datatypes.update(user_datatypes)
|
||||
|
||||
snippets_dir = Path(__file__).parent / "snippets"
|
||||
|
||||
header = CHeader(
|
||||
name="array",
|
||||
decl_types=[*common_decl_types],
|
||||
includes=[],
|
||||
types=[],
|
||||
funcs=[]
|
||||
)
|
||||
|
||||
source = CSource(
|
||||
name=header.name,
|
||||
decl_types=[*common_decl_types],
|
||||
includes=[CInclude(header, local=True, same_dir=True), CInclude(header="stddef.h")],
|
||||
internal_funcs=[],
|
||||
funcs=header.funcs
|
||||
)
|
||||
|
||||
if len(common_includes) > 0:
|
||||
header.includes.extend(common_includes)
|
||||
source.includes.extend(common_includes)
|
||||
|
||||
|
||||
for _type, array_data in datatypes.items():
|
||||
type_string = get_datatype_string(_type)
|
||||
clean_type_string = type_string.replace(" ", "").replace("*", "_ptr")
|
||||
type_string_upper = clean_type_string.upper()
|
||||
type_string_lower = clean_type_string.lower()
|
||||
|
||||
array = CStruct(
|
||||
name=array_data.array_typename,
|
||||
cargs=[
|
||||
CArg(name="items", _type=type_string, pointer=CPointer(_type=CPointerType.SINGLE)),
|
||||
CArg(name="count", _type=CType.U64),
|
||||
CArg(name="capacity", _type=CType.U64),
|
||||
],
|
||||
)
|
||||
|
||||
stack_array_macro = CMacro(
|
||||
name=f"wapp_{type_string_lower}_array(...)",
|
||||
value=__format_func_body(
|
||||
filename=snippets_dir / "stack_array",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
stack_capacity_array_macro = CMacro(
|
||||
name=f"wapp_{type_string_lower}_array_with_capacity(CAPACITY)",
|
||||
value=__format_func_body(
|
||||
filename=snippets_dir / "stack_capacity_array",
|
||||
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(
|
||||
name=f"wapp_{type_string_lower}_array_get",
|
||||
ret_type=type_string,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="index", _type=CType.U64),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "array_get",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
pointer=CPointer(CPointerType.SINGLE),
|
||||
)
|
||||
|
||||
set_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_set",
|
||||
ret_type=CType.VOID,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
CArg(name="index", _type=CType.U64),
|
||||
CArg(name="item", _type=type_string),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "array_set",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
append_capped_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_append_capped",
|
||||
ret_type=CType.VOID,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
CArg(name="item", _type=type_string),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "append_capped",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
extend_capped_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_extend_capped",
|
||||
ret_type=CType.VOID,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
CArg(name="other", _type=array, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "extend_capped",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
clear_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_clear",
|
||||
ret_type=CType.VOID,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "clear",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
pop_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_pop",
|
||||
ret_type=type_string,
|
||||
args=[
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "array_pop",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
copy_capped_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_copy_capped",
|
||||
ret_type=CType.VOID,
|
||||
args=[
|
||||
CArg(name="src", _type=array, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="dst", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "copy_capped",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
)
|
||||
|
||||
alloc_capacity_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_alloc_capacity",
|
||||
ret_type=array,
|
||||
args=[
|
||||
CArg(name="allocator", _type="Allocator", pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="capacity", _type=CType.U64),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "alloc_capacity",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
pointer=CPointer(CPointerType.SINGLE),
|
||||
)
|
||||
|
||||
append_alloc_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_append_alloc",
|
||||
ret_type=array,
|
||||
args=[
|
||||
CArg(name="allocator", _type="Allocator", pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
CArg(name="item", _type=type_string),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "append_alloc",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
pointer=CPointer(CPointerType.SINGLE),
|
||||
)
|
||||
|
||||
extend_alloc_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_extend_alloc",
|
||||
ret_type=array,
|
||||
args=[
|
||||
CArg(name="allocator", _type="Allocator", pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="array", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
CArg(name="other", _type=array, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "extend_alloc",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
pointer=CPointer(CPointerType.SINGLE),
|
||||
)
|
||||
|
||||
copy_alloc_func = CFunc(
|
||||
name=f"wapp_{type_string_lower}_array_copy_alloc",
|
||||
ret_type=array,
|
||||
args=[
|
||||
CArg(name="allocator", _type="Allocator", pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="src", _type=array, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||
CArg(name="dst", _type=array, pointer=CPointer(CPointerType.SINGLE)),
|
||||
],
|
||||
body=__format_func_body(
|
||||
filename=snippets_dir / "copy_alloc",
|
||||
type_string=type_string,
|
||||
type_string_upper=type_string_upper,
|
||||
type_string_lower=type_string_lower,
|
||||
array_typename=array_data.array_typename,
|
||||
),
|
||||
pointer=CPointer(CPointerType.SINGLE),
|
||||
)
|
||||
|
||||
header.decl_types.extend(array_data.hdr_decl_types)
|
||||
header.macros.extend([stack_array_macro, stack_capacity_array_macro])
|
||||
header.types.extend([array])
|
||||
header.funcs.extend([
|
||||
get_func,
|
||||
set_func,
|
||||
append_capped_func,
|
||||
extend_capped_func,
|
||||
clear_func,
|
||||
pop_func,
|
||||
copy_capped_func,
|
||||
alloc_capacity_func,
|
||||
append_alloc_func,
|
||||
extend_alloc_func,
|
||||
copy_alloc_func,
|
||||
])
|
||||
|
||||
source.decl_types.extend(array_data.src_decl_types)
|
||||
source.funcs = header.funcs
|
||||
|
||||
header.save(out_dir)
|
||||
source.save(out_dir)
|
18
codegen/array/snippets/alloc_capacity
Normal file
18
codegen/array/snippets/alloc_capacity
Normal file
@ -0,0 +1,18 @@
|
||||
u64 allocation_size = sizeof({ArrayType}) + sizeof({T}) * capacity;
|
||||
{ArrayType} *array = NULL;
|
||||
|
||||
if (!allocator) {{
|
||||
goto RETURN_{Tupper}_ARRAY_ALLOC;
|
||||
}}
|
||||
|
||||
array = wapp_mem_allocator_alloc(allocator, allocation_size);
|
||||
if (!array) {{
|
||||
goto RETURN_{Tupper}_ARRAY_ALLOC;
|
||||
}}
|
||||
|
||||
array->items = ({T} *)((u8 *)array + sizeof({ArrayType}));
|
||||
array->count = 0;
|
||||
array->capacity = capacity;
|
||||
|
||||
RETURN_{Tupper}_ARRAY_ALLOC:
|
||||
return array;
|
20
codegen/array/snippets/append_alloc
Normal file
20
codegen/array/snippets/append_alloc
Normal file
@ -0,0 +1,20 @@
|
||||
{ArrayType} *output = array;
|
||||
|
||||
if (!allocator || !array) {{
|
||||
goto RETURN_{Tupper}_ARRAY_APPEND_ALLOC;
|
||||
}}
|
||||
|
||||
if (array->count >= array->capacity) {{
|
||||
u64 new_capacity = wapp_misc_utils_u64_round_up_pow2(array->capacity * 2);
|
||||
output = wapp_{Tlower}_array_alloc_capacity(allocator, new_capacity);
|
||||
if (!output) {{
|
||||
output = array;
|
||||
goto RETURN_{Tupper}_ARRAY_APPEND_ALLOC;
|
||||
}}
|
||||
wapp_{Tlower}_array_copy_capped(array, output);
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_append_capped(output, item);
|
||||
|
||||
RETURN_{Tupper}_ARRAY_APPEND_ALLOC:
|
||||
return output;
|
5
codegen/array/snippets/append_capped
Normal file
5
codegen/array/snippets/append_capped
Normal file
@ -0,0 +1,5 @@
|
||||
if (!array || array->count >= array->capacity) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
array->items[(array->count)++] = item;
|
5
codegen/array/snippets/array_get
Normal file
5
codegen/array/snippets/array_get
Normal file
@ -0,0 +1,5 @@
|
||||
if (!array || index >= array->count) {{
|
||||
return NULL;
|
||||
}}
|
||||
|
||||
return &(array->items[index]);
|
5
codegen/array/snippets/array_pop
Normal file
5
codegen/array/snippets/array_pop
Normal file
@ -0,0 +1,5 @@
|
||||
if (!array || array->count == 0) {{
|
||||
return ({T}){{0}};
|
||||
}}
|
||||
|
||||
return array->items[--(array->count)];
|
5
codegen/array/snippets/array_set
Normal file
5
codegen/array/snippets/array_set
Normal file
@ -0,0 +1,5 @@
|
||||
if (!array || index >= array->count) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
array->items[index] = item;
|
5
codegen/array/snippets/clear
Normal file
5
codegen/array/snippets/clear
Normal file
@ -0,0 +1,5 @@
|
||||
if (!array) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
array->count = 0;
|
20
codegen/array/snippets/copy_alloc
Normal file
20
codegen/array/snippets/copy_alloc
Normal file
@ -0,0 +1,20 @@
|
||||
{ArrayType} *output = dst;
|
||||
|
||||
if (!allocator || !src || !dst) {{
|
||||
goto RETURN_{Tupper}_ARRAY_COPY_ALLOC;
|
||||
}}
|
||||
|
||||
if (src->count >= dst->capacity) {{
|
||||
u64 new_capacity = wapp_misc_utils_u64_round_up_pow2(dst->capacity * 2);
|
||||
output = wapp_{Tlower}_array_alloc_capacity(allocator, new_capacity);
|
||||
if (!output) {{
|
||||
output = dst;
|
||||
goto RETURN_{Tupper}_ARRAY_COPY_ALLOC;
|
||||
}}
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_clear(output);
|
||||
wapp_{Tlower}_array_copy_capped(src, output);
|
||||
|
||||
RETURN_{Tupper}_ARRAY_COPY_ALLOC:
|
||||
return output;
|
16
codegen/array/snippets/copy_capped
Normal file
16
codegen/array/snippets/copy_capped
Normal file
@ -0,0 +1,16 @@
|
||||
if (!src || !dst) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_clear(dst);
|
||||
|
||||
{T} *item;
|
||||
u64 to_copy = src->count < dst->capacity ? src->count : dst->capacity;
|
||||
for (u64 i = 0; i < to_copy; ++i) {{
|
||||
item = wapp_{Tlower}_array_get(src, i);
|
||||
if (!item) {{
|
||||
continue;
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_append_capped(dst, *item);
|
||||
}}
|
21
codegen/array/snippets/extend_alloc
Normal file
21
codegen/array/snippets/extend_alloc
Normal file
@ -0,0 +1,21 @@
|
||||
{ArrayType} *output = array;
|
||||
|
||||
if (!allocator || !array || !other) {{
|
||||
goto RETURN_{Tupper}_ARRAY_EXTEND_ALLOC;
|
||||
}}
|
||||
|
||||
u64 remaining_capacity = array->capacity - array->count;
|
||||
if (other->count >= remaining_capacity) {{
|
||||
u64 new_capacity = wapp_misc_utils_u64_round_up_pow2(array->capacity * 2);
|
||||
output = wapp_{Tlower}_array_alloc_capacity(allocator, new_capacity);
|
||||
if (!output) {{
|
||||
output = array;
|
||||
goto RETURN_{Tupper}_ARRAY_EXTEND_ALLOC;
|
||||
}}
|
||||
wapp_{Tlower}_array_copy_capped(array, output);
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_extend_capped(output, other);
|
||||
|
||||
RETURN_{Tupper}_ARRAY_EXTEND_ALLOC:
|
||||
return output;
|
19
codegen/array/snippets/extend_capped
Normal file
19
codegen/array/snippets/extend_capped
Normal file
@ -0,0 +1,19 @@
|
||||
if (!array || !other) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
u64 remaining_capacity = array->capacity - array->count;
|
||||
if (other->count >= remaining_capacity) {{
|
||||
return;
|
||||
}}
|
||||
|
||||
{T} *item;
|
||||
u64 items_to_add = other->count;
|
||||
for (u64 i = 0; i < items_to_add; ++i) {{
|
||||
item = wapp_{Tlower}_array_get(other, i);
|
||||
if (!item) {{
|
||||
continue;
|
||||
}}
|
||||
|
||||
wapp_{Tlower}_array_append_capped(array, *item);
|
||||
}}
|
5
codegen/array/snippets/stack_array
Normal file
5
codegen/array/snippets/stack_array
Normal file
@ -0,0 +1,5 @@
|
||||
(({ArrayType}){{ \
|
||||
.items = ({T}[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count({T}, __VA_ARGS__) * 2)]){{__VA_ARGS__}}, \
|
||||
.count = wapp_misc_utils_va_args_count({T}, __VA_ARGS__), \
|
||||
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count({T}, __VA_ARGS__) * 2) \
|
||||
}})
|
1
codegen/array/snippets/stack_capacity_array
Normal file
1
codegen/array/snippets/stack_capacity_array
Normal file
@ -0,0 +1 @@
|
||||
(({ArrayType}){{.items = ({T}[CAPACITY]){{0}}, .count = 0, .capacity = CAPACITY}})
|
@ -45,7 +45,7 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
|
||||
Tlower=type_string_lower,
|
||||
)
|
||||
|
||||
out_dir = WAPP_SRC_ROOT / "containers" / "dbl_list"
|
||||
out_dir = WAPP_SRC_ROOT / "primitives" / "dbl_list"
|
||||
out_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
common_includes: List[CInclude] = [
|
||||
|
3453
src/primitives/array/array.c
Normal file
3453
src/primitives/array/array.c
Normal file
File diff suppressed because it is too large
Load Diff
505
src/primitives/array/array.h
Normal file
505
src/primitives/array/array.h
Normal file
@ -0,0 +1,505 @@
|
||||
/**
|
||||
* THIS FILE IS AUTOMATICALLY GENERATED. ANY MODIFICATIONS TO IT WILL BE OVERWRITTEN
|
||||
*/
|
||||
|
||||
#ifndef ARRAY_H
|
||||
#define ARRAY_H
|
||||
|
||||
#include "../mem_allocator/mem_allocator.h"
|
||||
#include "../strings/str8/str8.h"
|
||||
#include "../../common/misc/misc_utils.h"
|
||||
#include "../../common/aliases/aliases.h"
|
||||
#include "../../common/platform/platform.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef WAPP_PLATFORM_CPP
|
||||
BEGIN_C_LINKAGE
|
||||
#endif // !WAPP_PLATFORM_CPP
|
||||
|
||||
#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) \
|
||||
})
|
||||
#define wapp_str8_array_with_capacity(CAPACITY) ((Str8Array){.items = (Str8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_void_ptr_array_with_capacity(CAPACITY) ((VoidPArray){.items = (void *[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#define wapp_bool_array(...) ((BoolArray){ \
|
||||
.items = (bool[wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(bool, __VA_ARGS__) * 2)]){__VA_ARGS__}, \
|
||||
.count = wapp_misc_utils_va_args_count(bool, __VA_ARGS__), \
|
||||
.capacity = wapp_misc_utils_u64_round_up_pow2(wapp_misc_utils_va_args_count(bool, __VA_ARGS__) * 2) \
|
||||
})
|
||||
#define wapp_bool_array_with_capacity(CAPACITY) ((BoolArray){.items = (bool[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_char_array_with_capacity(CAPACITY) ((CharArray){.items = (char[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_c8_array_with_capacity(CAPACITY) ((C8Array){.items = (c8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_c16_array_with_capacity(CAPACITY) ((C16Array){.items = (c16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_c32_array_with_capacity(CAPACITY) ((C32Array){.items = (c32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_i8_array_with_capacity(CAPACITY) ((I8Array){.items = (i8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_i16_array_with_capacity(CAPACITY) ((I16Array){.items = (i16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_i32_array_with_capacity(CAPACITY) ((I32Array){.items = (i32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_i64_array_with_capacity(CAPACITY) ((I64Array){.items = (i64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_u8_array_with_capacity(CAPACITY) ((U8Array){.items = (u8[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_u16_array_with_capacity(CAPACITY) ((U16Array){.items = (u16[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_u32_array_with_capacity(CAPACITY) ((U32Array){.items = (u32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_u64_array_with_capacity(CAPACITY) ((U64Array){.items = (u64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_f32_array_with_capacity(CAPACITY) ((F32Array){.items = (f32[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_f64_array_with_capacity(CAPACITY) ((F64Array){.items = (f64[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_f128_array_with_capacity(CAPACITY) ((F128Array){.items = (f128[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_iptr_array_with_capacity(CAPACITY) ((IptrArray){.items = (iptr[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
#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) \
|
||||
})
|
||||
#define wapp_uptr_array_with_capacity(CAPACITY) ((UptrArray){.items = (uptr[CAPACITY]){0}, .count = 0, .capacity = CAPACITY})
|
||||
|
||||
typedef struct Str8Array Str8Array;
|
||||
struct Str8Array {
|
||||
Str8 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct VoidPArray VoidPArray;
|
||||
struct VoidPArray {
|
||||
void * *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct BoolArray BoolArray;
|
||||
struct BoolArray {
|
||||
bool *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct CharArray CharArray;
|
||||
struct CharArray {
|
||||
char *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct C8Array C8Array;
|
||||
struct C8Array {
|
||||
c8 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct C16Array C16Array;
|
||||
struct C16Array {
|
||||
c16 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct C32Array C32Array;
|
||||
struct C32Array {
|
||||
c32 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct I8Array I8Array;
|
||||
struct I8Array {
|
||||
i8 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct I16Array I16Array;
|
||||
struct I16Array {
|
||||
i16 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct I32Array I32Array;
|
||||
struct I32Array {
|
||||
i32 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct I64Array I64Array;
|
||||
struct I64Array {
|
||||
i64 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct U8Array U8Array;
|
||||
struct U8Array {
|
||||
u8 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct U16Array U16Array;
|
||||
struct U16Array {
|
||||
u16 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct U32Array U32Array;
|
||||
struct U32Array {
|
||||
u32 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct U64Array U64Array;
|
||||
struct U64Array {
|
||||
u64 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct F32Array F32Array;
|
||||
struct F32Array {
|
||||
f32 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct F64Array F64Array;
|
||||
struct F64Array {
|
||||
f64 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct F128Array F128Array;
|
||||
struct F128Array {
|
||||
f128 *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct IptrArray IptrArray;
|
||||
struct IptrArray {
|
||||
iptr *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
typedef struct UptrArray UptrArray;
|
||||
struct UptrArray {
|
||||
uptr *items;
|
||||
u64 count;
|
||||
u64 capacity;
|
||||
};
|
||||
|
||||
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);
|
||||
Str8 wapp_str8_array_pop(Str8Array *array);
|
||||
void wapp_str8_array_copy_capped(const Str8Array *src, Str8Array *dst);
|
||||
Str8Array *wapp_str8_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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_pop(VoidPArray *array);
|
||||
void wapp_void_ptr_array_copy_capped(const VoidPArray *src, VoidPArray *dst);
|
||||
VoidPArray *wapp_void_ptr_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
bool *wapp_bool_array_get(const BoolArray *array, u64 index);
|
||||
void wapp_bool_array_set(BoolArray *array, u64 index, bool item);
|
||||
void wapp_bool_array_append_capped(BoolArray *array, bool item);
|
||||
void wapp_bool_array_extend_capped(BoolArray *array, const BoolArray *other);
|
||||
void wapp_bool_array_clear(BoolArray *array);
|
||||
bool wapp_bool_array_pop(BoolArray *array);
|
||||
void wapp_bool_array_copy_capped(const BoolArray *src, BoolArray *dst);
|
||||
BoolArray *wapp_bool_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
BoolArray *wapp_bool_array_append_alloc(const Allocator *allocator, BoolArray *array, bool item);
|
||||
BoolArray *wapp_bool_array_extend_alloc(const Allocator *allocator, BoolArray *array, const BoolArray *other);
|
||||
BoolArray *wapp_bool_array_copy_alloc(const Allocator *allocator, const BoolArray *src, BoolArray *dst);
|
||||
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);
|
||||
char wapp_char_array_pop(CharArray *array);
|
||||
void wapp_char_array_copy_capped(const CharArray *src, CharArray *dst);
|
||||
CharArray *wapp_char_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
c8 wapp_c8_array_pop(C8Array *array);
|
||||
void wapp_c8_array_copy_capped(const C8Array *src, C8Array *dst);
|
||||
C8Array *wapp_c8_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
c16 wapp_c16_array_pop(C16Array *array);
|
||||
void wapp_c16_array_copy_capped(const C16Array *src, C16Array *dst);
|
||||
C16Array *wapp_c16_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
c32 wapp_c32_array_pop(C32Array *array);
|
||||
void wapp_c32_array_copy_capped(const C32Array *src, C32Array *dst);
|
||||
C32Array *wapp_c32_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
i8 wapp_i8_array_pop(I8Array *array);
|
||||
void wapp_i8_array_copy_capped(const I8Array *src, I8Array *dst);
|
||||
I8Array *wapp_i8_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
i16 wapp_i16_array_pop(I16Array *array);
|
||||
void wapp_i16_array_copy_capped(const I16Array *src, I16Array *dst);
|
||||
I16Array *wapp_i16_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
i32 wapp_i32_array_pop(I32Array *array);
|
||||
void wapp_i32_array_copy_capped(const I32Array *src, I32Array *dst);
|
||||
I32Array *wapp_i32_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
i64 wapp_i64_array_pop(I64Array *array);
|
||||
void wapp_i64_array_copy_capped(const I64Array *src, I64Array *dst);
|
||||
I64Array *wapp_i64_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
u8 wapp_u8_array_pop(U8Array *array);
|
||||
void wapp_u8_array_copy_capped(const U8Array *src, U8Array *dst);
|
||||
U8Array *wapp_u8_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
u16 wapp_u16_array_pop(U16Array *array);
|
||||
void wapp_u16_array_copy_capped(const U16Array *src, U16Array *dst);
|
||||
U16Array *wapp_u16_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
u32 wapp_u32_array_pop(U32Array *array);
|
||||
void wapp_u32_array_copy_capped(const U32Array *src, U32Array *dst);
|
||||
U32Array *wapp_u32_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
u64 wapp_u64_array_pop(U64Array *array);
|
||||
void wapp_u64_array_copy_capped(const U64Array *src, U64Array *dst);
|
||||
U64Array *wapp_u64_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
f32 wapp_f32_array_pop(F32Array *array);
|
||||
void wapp_f32_array_copy_capped(const F32Array *src, F32Array *dst);
|
||||
F32Array *wapp_f32_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
f64 wapp_f64_array_pop(F64Array *array);
|
||||
void wapp_f64_array_copy_capped(const F64Array *src, F64Array *dst);
|
||||
F64Array *wapp_f64_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
f128 wapp_f128_array_pop(F128Array *array);
|
||||
void wapp_f128_array_copy_capped(const F128Array *src, F128Array *dst);
|
||||
F128Array *wapp_f128_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
iptr wapp_iptr_array_pop(IptrArray *array);
|
||||
void wapp_iptr_array_copy_capped(const IptrArray *src, IptrArray *dst);
|
||||
IptrArray *wapp_iptr_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
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);
|
||||
uptr wapp_uptr_array_pop(UptrArray *array);
|
||||
void wapp_uptr_array_copy_capped(const UptrArray *src, UptrArray *dst);
|
||||
UptrArray *wapp_uptr_array_alloc_capacity(const Allocator *allocator, u64 capacity);
|
||||
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);
|
||||
|
||||
#ifdef WAPP_PLATFORM_CPP
|
||||
END_C_LINKAGE
|
||||
#endif // !WAPP_PLATFORM_CPP
|
||||
|
||||
#endif // !ARRAY_H
|
Loading…
x
Reference in New Issue
Block a user