Update codegen

This commit is contained in:
Abdelrahman Said
2025-09-14 23:31:13 +01:00
parent caa494be9a
commit becd5018f8
5 changed files with 37 additions and 233 deletions

View File

@@ -59,6 +59,10 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
common_decl_types: List[CStruct] = []
datatypes: dict[CDataType, DblListData] = {
CType.VOID: DblListData(
node_typename="GenericNode",
list_typename="GenericList",
),
"Str8": DblListData(
node_typename="Str8Node",
list_typename="Str8List",
@@ -70,14 +74,10 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
for _type in CType:
if _type == CType.VOID:
datatypes["void *"] = DblListData(
node_typename="VoidPNode",
list_typename="VoidPList",
)
continue
type_title = _type.value.title()
datatypes[_type.value] = DblListData(
datatypes[_type] = DblListData(
node_typename=f"{type_title}Node",
list_typename=f"{type_title}List",
)
@@ -135,6 +135,13 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
],
)
header.types.extend([node, dl_list])
header.decl_types.extend(dbl_list_data.hdr_decl_types)
source.decl_types.extend(dbl_list_data.src_decl_types)
if isinstance(_type, CType) and _type == CType.VOID:
# Don't define any functions for the generic node and list
continue
node_cmacro = CMacro(
name=f"wapp_{type_string_lower}_list_node(ITEM_PTR)",
value=__format_func_body(
@@ -314,10 +321,8 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
qualifiers=[CQualifier.INTERNAL],
)
header.decl_types.extend(dbl_list_data.hdr_decl_types)
header.c_macros.append(node_cmacro)
header.cpp_macros.append(node_cppmacro)
header.types.extend([node, dl_list])
header.funcs.extend([
get_func,
push_front_func,
@@ -329,7 +334,6 @@ def make_dbl_list(user_datatypes: Dict[CDataType, DblListData] = {}):
empty_func,
])
source.decl_types.extend(dbl_list_data.src_decl_types)
source.internal_funcs.append(node_to_list_func)
source.funcs = header.funcs