From 6ac600991825aa609b172cf2b52fe1507ad4ba63 Mon Sep 17 00:00:00 2001 From: Abdelrahman Date: Fri, 7 Feb 2025 22:40:41 +0000 Subject: [PATCH] Split code to smaller modules --- codegen/__init__.py | 0 codegen/__main__.py | 4 ++ codegen/codegen.py | 82 ++++++++++++++++++++++++++++++ codegen.py => codegen/datatypes.py | 67 ------------------------ 4 files changed, 86 insertions(+), 67 deletions(-) create mode 100644 codegen/__init__.py create mode 100644 codegen/__main__.py create mode 100644 codegen/codegen.py rename codegen.py => codegen/datatypes.py (79%) diff --git a/codegen/__init__.py b/codegen/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/codegen/__main__.py b/codegen/__main__.py new file mode 100644 index 0000000..a5c96ca --- /dev/null +++ b/codegen/__main__.py @@ -0,0 +1,4 @@ +from .codegen import test_codegen + +if __name__ == "__main__": + test_codegen() diff --git a/codegen/codegen.py b/codegen/codegen.py new file mode 100644 index 0000000..96afb6e --- /dev/null +++ b/codegen/codegen.py @@ -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() diff --git a/codegen.py b/codegen/datatypes.py similarity index 79% rename from codegen.py rename to codegen/datatypes.py index 28a34a4..35688a1 100644 --- a/codegen.py +++ b/codegen/datatypes.py @@ -199,69 +199,6 @@ class CSource(CFile): 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: type_str = "" if isinstance(_type, CStruct): @@ -325,7 +262,3 @@ def get_includes_string(includes: list[CInclude]) -> str: output += "\n" return output - - -if __name__ == "__main__": - main()