Support multiple python versions for code generation
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from enum import Enum
|
||||
from pathlib import Path
|
||||
from typing import Optional, Union
|
||||
from typing import Optional, Union, List
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ class CEnumVal:
|
||||
@dataclass
|
||||
class CEnum:
|
||||
name: str
|
||||
values: list[CEnumVal]
|
||||
values: List[CEnumVal]
|
||||
typedef: bool = False
|
||||
|
||||
def __str__(self) -> str:
|
||||
@@ -100,8 +100,8 @@ class CMacro:
|
||||
@dataclass
|
||||
class CStruct:
|
||||
name: str
|
||||
cargs: list["CArg"]
|
||||
typedef_name: str | None = None
|
||||
cargs: List["CArg"]
|
||||
typedef_name: Optional[str] = None
|
||||
|
||||
def __str__(self) -> str:
|
||||
return self.declare() + self.define()
|
||||
@@ -145,10 +145,10 @@ class CArg:
|
||||
class CFunc:
|
||||
name: str
|
||||
ret_type: CDataType
|
||||
args: list[CArg]
|
||||
args: List[CArg]
|
||||
body: str
|
||||
pointer: CPointer = field(default_factory=CPointer)
|
||||
qualifiers: list[CQualifier] = field(default_factory=list)
|
||||
qualifiers: List[CQualifier] = field(default_factory=list)
|
||||
|
||||
def __str__(self) -> str:
|
||||
qualifiers = ""
|
||||
@@ -203,8 +203,8 @@ class CInclude:
|
||||
class CFile:
|
||||
name: str
|
||||
extension: str
|
||||
decl_types: list[CStruct] = field(default_factory=list)
|
||||
macros: list[CMacro] = field(default_factory=list)
|
||||
decl_types: List[CStruct] = field(default_factory=list)
|
||||
macros: List[CMacro] = field(default_factory=list)
|
||||
|
||||
def save(self, output_dir: Path):
|
||||
output_file = output_dir / f"{self.name}.{self.extension}"
|
||||
@@ -223,9 +223,9 @@ class CFile:
|
||||
@dataclass
|
||||
class CHeader(CFile):
|
||||
extension: str = "h"
|
||||
includes: list[CInclude] = field(default_factory=list)
|
||||
types: list[CUserType] = field(default_factory=list)
|
||||
funcs: list[CFunc] = field(default_factory=list)
|
||||
includes: List[CInclude] = field(default_factory=list)
|
||||
types: List[CUserType] = field(default_factory=list)
|
||||
funcs: List[CFunc] = field(default_factory=list)
|
||||
|
||||
def __str__(self) -> str:
|
||||
name_upper = self.name.upper()
|
||||
@@ -275,10 +275,10 @@ class CHeader(CFile):
|
||||
@dataclass
|
||||
class CSource(CFile):
|
||||
extension: str = "c"
|
||||
includes: list[CInclude] = field(default_factory=list)
|
||||
types: list[CUserType] = field(default_factory=list)
|
||||
internal_funcs: list[CFunc] = field(default_factory=list)
|
||||
funcs: list[CFunc] = field(default_factory=list)
|
||||
includes: List[CInclude] = field(default_factory=list)
|
||||
types: List[CUserType] = field(default_factory=list)
|
||||
internal_funcs: List[CFunc] = field(default_factory=list)
|
||||
funcs: List[CFunc] = field(default_factory=list)
|
||||
|
||||
def __str__(self) -> str:
|
||||
includes = _get_includes_string(self.includes)
|
||||
@@ -333,7 +333,7 @@ def get_datatype_string(_type: CDataType) -> str:
|
||||
return _type
|
||||
|
||||
|
||||
def _get_includes_string(includes: list[CInclude]) -> str:
|
||||
def _get_includes_string(includes: List[CInclude]) -> str:
|
||||
output = ""
|
||||
for include in sorted(includes, key=lambda inc: inc.local, reverse=True):
|
||||
output += str(include)
|
||||
|
Reference in New Issue
Block a user