Handle pointer types properly in dbl_list codegen
This commit is contained in:
parent
25395553d7
commit
1cfc52b35e
@ -28,13 +28,20 @@ class DblListData:
|
|||||||
|
|
||||||
|
|
||||||
def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
||||||
def __format_func_body(filename: Path, type_string: str, node_typename: str, list_typename: str):
|
def __format_func_body(
|
||||||
|
filename: Path,
|
||||||
|
type_string: str,
|
||||||
|
type_string_upper: str,
|
||||||
|
type_string_lower: str,
|
||||||
|
node_typename: str,
|
||||||
|
list_typename: str
|
||||||
|
):
|
||||||
return load_func_body_from_file(filename).format(
|
return load_func_body_from_file(filename).format(
|
||||||
T=type_string,
|
T=type_string,
|
||||||
NodeType=node_typename,
|
NodeType=node_typename,
|
||||||
ListType=list_typename,
|
ListType=list_typename,
|
||||||
Tupper=type_string.upper(),
|
Tupper=type_string_upper,
|
||||||
Tlower=type_string.lower(),
|
Tlower=type_string_lower,
|
||||||
)
|
)
|
||||||
|
|
||||||
out_dir = WAPP_SRC_ROOT / "containers" / "dbl_list"
|
out_dir = WAPP_SRC_ROOT / "containers" / "dbl_list"
|
||||||
@ -89,6 +96,9 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
|
|
||||||
for _type, dbl_list_data in datatypes.items():
|
for _type, dbl_list_data in datatypes.items():
|
||||||
type_string = get_datatype_string(_type)
|
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()
|
||||||
|
|
||||||
node = CStruct(
|
node = CStruct(
|
||||||
name=dbl_list_data.node_typename,
|
name=dbl_list_data.node_typename,
|
||||||
@ -111,17 +121,19 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
)
|
)
|
||||||
|
|
||||||
node_macro = CMacro(
|
node_macro = CMacro(
|
||||||
name=f"wapp_{type_string.lower()}_list_node(ITEM_PTR)",
|
name=f"wapp_{type_string_lower}_list_node(ITEM_PTR)",
|
||||||
value=__format_func_body(
|
value=__format_func_body(
|
||||||
filename=snippets_dir / "list_node",
|
filename=snippets_dir / "list_node",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
get_func = CFunc(
|
get_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_get",
|
name=f"wapp_{type_string_lower}_list_get",
|
||||||
ret_type=node,
|
ret_type=node,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE), qualifier=CQualifier.CONST),
|
||||||
@ -130,6 +142,8 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_get",
|
filename=snippets_dir / "list_get",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
@ -137,7 +151,7 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
)
|
)
|
||||||
|
|
||||||
push_front_func = CFunc(
|
push_front_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_push_front",
|
name=f"wapp_{type_string_lower}_list_push_front",
|
||||||
ret_type=CType.VOID,
|
ret_type=CType.VOID,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -146,13 +160,15 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_push_front",
|
filename=snippets_dir / "list_push_front",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
push_back_func = CFunc(
|
push_back_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_push_back",
|
name=f"wapp_{type_string_lower}_list_push_back",
|
||||||
ret_type=CType.VOID,
|
ret_type=CType.VOID,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -161,13 +177,15 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_push_back",
|
filename=snippets_dir / "list_push_back",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
insert_func = CFunc(
|
insert_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_insert",
|
name=f"wapp_{type_string_lower}_list_insert",
|
||||||
ret_type=CType.VOID,
|
ret_type=CType.VOID,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -177,13 +195,15 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_insert",
|
filename=snippets_dir / "list_insert",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
pop_front_func = CFunc(
|
pop_front_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_pop_front",
|
name=f"wapp_{type_string_lower}_list_pop_front",
|
||||||
ret_type=node,
|
ret_type=node,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -191,6 +211,8 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_pop_front",
|
filename=snippets_dir / "list_pop_front",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
@ -198,7 +220,7 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
)
|
)
|
||||||
|
|
||||||
pop_back_func = CFunc(
|
pop_back_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_pop_back",
|
name=f"wapp_{type_string_lower}_list_pop_back",
|
||||||
ret_type=node,
|
ret_type=node,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -206,6 +228,8 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_pop_back",
|
filename=snippets_dir / "list_pop_back",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
@ -213,7 +237,7 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
)
|
)
|
||||||
|
|
||||||
remove_func = CFunc(
|
remove_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_remove",
|
name=f"wapp_{type_string_lower}_list_remove",
|
||||||
ret_type=node,
|
ret_type=node,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -222,6 +246,8 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_remove",
|
filename=snippets_dir / "list_remove",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
@ -229,7 +255,7 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
)
|
)
|
||||||
|
|
||||||
empty_func = CFunc(
|
empty_func = CFunc(
|
||||||
name=f"wapp_{type_string.lower()}_list_empty",
|
name=f"wapp_{type_string_lower}_list_empty",
|
||||||
ret_type=CType.VOID,
|
ret_type=CType.VOID,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="list", _type=dl_list, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -237,13 +263,15 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "list_empty",
|
filename=snippets_dir / "list_empty",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
node_to_list_func = CFunc(
|
node_to_list_func = CFunc(
|
||||||
name=f"{type_string.lower()}_node_to_list",
|
name=f"{type_string_lower}_node_to_list",
|
||||||
ret_type=dl_list,
|
ret_type=dl_list,
|
||||||
args=[
|
args=[
|
||||||
CArg(name="node", _type=node, pointer=CPointer(CPointerType.SINGLE)),
|
CArg(name="node", _type=node, pointer=CPointer(CPointerType.SINGLE)),
|
||||||
@ -251,6 +279,8 @@ def make_dbl_list(user_datatypes: dict[CDataType, DblListData] = {}):
|
|||||||
body=__format_func_body(
|
body=__format_func_body(
|
||||||
filename=snippets_dir / "node_to_list",
|
filename=snippets_dir / "node_to_list",
|
||||||
type_string=type_string,
|
type_string=type_string,
|
||||||
|
type_string_upper=type_string_upper,
|
||||||
|
type_string_lower=type_string_lower,
|
||||||
node_typename=dbl_list_data.node_typename,
|
node_typename=dbl_list_data.node_typename,
|
||||||
list_typename=dbl_list_data.list_typename
|
list_typename=dbl_list_data.list_typename
|
||||||
),
|
),
|
||||||
|
Loading…
Reference in New Issue
Block a user