Split code to smaller modules
This commit is contained in:
parent
3a138ec3fa
commit
6ac6009918
0
codegen/__init__.py
Normal file
0
codegen/__init__.py
Normal file
4
codegen/__main__.py
Normal file
4
codegen/__main__.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from .codegen import test_codegen
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
test_codegen()
|
82
codegen/codegen.py
Normal file
82
codegen/codegen.py
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
from .datatypes import (
|
||||||
|
CStruct,
|
||||||
|
CEnum,
|
||||||
|
CEnumVal,
|
||||||
|
CFunc,
|
||||||
|
CHeader,
|
||||||
|
CSource,
|
||||||
|
CArg,
|
||||||
|
CType,
|
||||||
|
CPointer,
|
||||||
|
CPointerType,
|
||||||
|
CQualifier,
|
||||||
|
CInclude,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_codegen():
|
||||||
|
struct = CStruct(
|
||||||
|
name="Str8",
|
||||||
|
cargs=[
|
||||||
|
CArg(name="size", _type=CType.U64),
|
||||||
|
CArg(name="capacity", _type=CType.U64),
|
||||||
|
CArg(name="buf", _type=CType.U8, pointer=CPointer(_type=CPointerType.SINGLE)),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
cenum = CEnum(
|
||||||
|
name="OS",
|
||||||
|
values=[
|
||||||
|
CEnumVal(name="OS_LINUX"),
|
||||||
|
CEnumVal(name="OS_WINDOWS"),
|
||||||
|
CEnumVal(name="OS_MACOS"),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
typed_enum = CEnum(
|
||||||
|
name="Compiler",
|
||||||
|
values=[
|
||||||
|
CEnumVal(name="COMPILER_GCC"),
|
||||||
|
CEnumVal(name="COMPILER_CLANG"),
|
||||||
|
CEnumVal(name="COMPILER_MSVC"),
|
||||||
|
],
|
||||||
|
typedef=True,
|
||||||
|
)
|
||||||
|
|
||||||
|
main_func = CFunc(
|
||||||
|
name="my_custom_func",
|
||||||
|
ret_type=CType.I32,
|
||||||
|
args=[
|
||||||
|
CArg(name="argc", _type=CType.I32),
|
||||||
|
CArg(name="argv", _type=CType.CHAR, pointer=CPointer(_type=CPointerType.DOUBLE), qualifier=CQualifier.CONST),
|
||||||
|
],
|
||||||
|
body=" return 0;"
|
||||||
|
)
|
||||||
|
|
||||||
|
header = CHeader(
|
||||||
|
name="str.h",
|
||||||
|
includes=[
|
||||||
|
CInclude(header="aliases.h", local=True),
|
||||||
|
],
|
||||||
|
types=[struct, cenum, typed_enum],
|
||||||
|
funcs=[main_func],
|
||||||
|
)
|
||||||
|
|
||||||
|
source = CSource(
|
||||||
|
name="str.c",
|
||||||
|
includes=[
|
||||||
|
CInclude(header=header, local=True),
|
||||||
|
CInclude(header="aliases.h", local=True),
|
||||||
|
],
|
||||||
|
types=[],
|
||||||
|
internal_funcs=[],
|
||||||
|
funcs=[main_func]
|
||||||
|
)
|
||||||
|
|
||||||
|
header.save(Path("."))
|
||||||
|
source.save(Path("."))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
test_codegen()
|
@ -199,69 +199,6 @@ class CSource(CFile):
|
|||||||
return includes + types + internal_funcs_decl + funcs + internal_funcs_def
|
return includes + types + internal_funcs_decl + funcs + internal_funcs_def
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
struct = CStruct(
|
|
||||||
name="Str8",
|
|
||||||
cargs=[
|
|
||||||
CArg(name="size", _type=CType.U64),
|
|
||||||
CArg(name="capacity", _type=CType.U64),
|
|
||||||
CArg(name="buf", _type=CType.U8, pointer=CPointer(_type=CPointerType.SINGLE)),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
cenum = CEnum(
|
|
||||||
name="OS",
|
|
||||||
values=[
|
|
||||||
CEnumVal(name="OS_LINUX"),
|
|
||||||
CEnumVal(name="OS_WINDOWS"),
|
|
||||||
CEnumVal(name="OS_MACOS"),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
typed_enum = CEnum(
|
|
||||||
name="Compiler",
|
|
||||||
values=[
|
|
||||||
CEnumVal(name="COMPILER_GCC"),
|
|
||||||
CEnumVal(name="COMPILER_CLANG"),
|
|
||||||
CEnumVal(name="COMPILER_MSVC"),
|
|
||||||
],
|
|
||||||
typedef=True,
|
|
||||||
)
|
|
||||||
|
|
||||||
main_func = CFunc(
|
|
||||||
name="my_custom_func",
|
|
||||||
ret_type=CType.I32,
|
|
||||||
args=[
|
|
||||||
CArg(name="argc", _type=CType.I32),
|
|
||||||
CArg(name="argv", _type=CType.CHAR, pointer=CPointer(_type=CPointerType.DOUBLE), qualifier=CQualifier.CONST),
|
|
||||||
],
|
|
||||||
body=" return 0;"
|
|
||||||
)
|
|
||||||
|
|
||||||
header = CHeader(
|
|
||||||
name="str.h",
|
|
||||||
includes=[
|
|
||||||
CInclude(header="aliases.h", local=True),
|
|
||||||
],
|
|
||||||
types=[struct, cenum, typed_enum],
|
|
||||||
funcs=[main_func],
|
|
||||||
)
|
|
||||||
|
|
||||||
source = CSource(
|
|
||||||
name="str.c",
|
|
||||||
includes=[
|
|
||||||
CInclude(header=header, local=True),
|
|
||||||
CInclude(header="aliases.h", local=True),
|
|
||||||
],
|
|
||||||
types=[],
|
|
||||||
internal_funcs=[],
|
|
||||||
funcs=[main_func]
|
|
||||||
)
|
|
||||||
|
|
||||||
header.save(Path("."))
|
|
||||||
source.save(Path("."))
|
|
||||||
|
|
||||||
|
|
||||||
def get_user_type_string(_type: Union[CStruct, CEnum]) -> str:
|
def get_user_type_string(_type: Union[CStruct, CEnum]) -> str:
|
||||||
type_str = ""
|
type_str = ""
|
||||||
if isinstance(_type, CStruct):
|
if isinstance(_type, CStruct):
|
||||||
@ -325,7 +262,3 @@ def get_includes_string(includes: list[CInclude]) -> str:
|
|||||||
output += "\n"
|
output += "\n"
|
||||||
|
|
||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
Loading…
Reference in New Issue
Block a user