Compare commits

..

No commits in common. "c56285064572107d5fc325150ac98ea68161610a" and "5603335736f63b2c4db9e13adb25f642b5e8e271" have entirely different histories.

6 changed files with 67 additions and 90 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
__pycache__

View File

@ -199,6 +199,69 @@ 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):
@ -262,3 +325,7 @@ def get_includes_string(includes: list[CInclude]) -> str:
output += "\n" output += "\n"
return output return output
if __name__ == "__main__":
main()

View File

View File

@ -1,4 +0,0 @@
from .codegen import test_codegen
if __name__ == "__main__":
test_codegen()

View File

@ -1,82 +0,0 @@
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()

3
run
View File

@ -1,3 +0,0 @@
#!/bin/bash
python3 -m codegen