schema.py 783 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from dataclasses import dataclass
  2. @dataclass
  3. class StructField:
  4. type: str
  5. name: str
  6. desc: str = None
  7. @dataclass
  8. class EnumValue:
  9. name: str
  10. value: int | None
  11. desc: str = None
  12. @dataclass
  13. class Struct:
  14. name: str
  15. desc: str = None
  16. fields: list[StructField] = None
  17. @dataclass
  18. class Alias:
  19. type: str
  20. name: str
  21. desc: str = None
  22. @dataclass
  23. class Enum:
  24. name: str
  25. values: list[EnumValue]
  26. desc: str = None
  27. @dataclass
  28. class FunctionParam:
  29. type: str
  30. name: str
  31. @dataclass
  32. class Function:
  33. name: str
  34. params: list[FunctionParam]
  35. ret_type: str
  36. desc: str = None
  37. def signature(self) -> str:
  38. return f'{self.ret_type} {self.name}({", ".join([f"{param.type} {param.name}" for param in self.params])})'