c.pyi 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from typing import Generic, TypeVar
  2. def malloc(size: int) -> 'void_p': ...
  3. def free(ptr: 'void_p') -> None: ...
  4. def memset(ptr: 'void_p', value: int, size: int) -> None: ...
  5. def memcpy(dst: 'void_p', src: 'void_p', size: int) -> None: ...
  6. T = TypeVar('T')
  7. Tp = TypeVar('Tp', bound='void_p')
  8. def p_cast(ptr: 'void_p', cls: type[T]) -> T:
  9. """Cast a pointer to a specific type."""
  10. def p_value(ptr: 'void_p') -> int:
  11. """Get the value of a pointer."""
  12. def pp_deref(ptr: Tp) -> Tp:
  13. """Dereference a double pointer."""
  14. class void_p:
  15. def __init__(self, addr: int): ...
  16. def __eq__(self, other: 'void_p') -> bool: ...
  17. def __ne__(self, other: 'void_p') -> bool: ...
  18. def __lt__(self, other: 'void_p') -> bool: ...
  19. def __le__(self, other: 'void_p') -> bool: ...
  20. def __gt__(self, other: 'void_p') -> bool: ...
  21. def __ge__(self, other: 'void_p') -> bool: ...
  22. def __hash__(self) -> int: ...
  23. def __repr__(self) -> str: ...
  24. class Pointer(Generic[T], void_p):
  25. def read(self) -> T: ...
  26. def write(self, value: T) -> None: ...
  27. def __getitem__(self, index: int) -> T: ...
  28. def __setitem__(self, index: int, value: T) -> None: ...
  29. class char_p(Pointer[int]):
  30. def read_string(self) -> str: ...
  31. def write_string(self, value: str) -> None: ...
  32. class uchar_p(Pointer[int]): pass
  33. class short_p(Pointer[int]): pass
  34. class ushort_p(Pointer[int]): pass
  35. class int_p(Pointer[int]): pass
  36. class uint_p(Pointer[int]): pass
  37. class long_p(Pointer[int]): pass
  38. class ulong_p(Pointer[int]): pass
  39. class longlong_p(Pointer[int]): pass
  40. class ulonglong_p(Pointer[int]): pass
  41. class float_p(Pointer[float]): pass
  42. class double_p(Pointer[float]): pass
  43. class bool_p(Pointer[bool]): pass
  44. class struct:
  45. def __init__(self, size: int): ...
  46. def addr(self) -> 'void_p': ...
  47. def copy(self) -> 'struct': ...
  48. def sizeof(self) -> int: ...
  49. def __eq__(self, other: 'struct') -> bool: ...
  50. def __ne__(self, other: 'struct') -> bool: ...
  51. def hex(self) -> str: ...
  52. @staticmethod
  53. def fromhex(s: str) -> 'struct': ...
  54. def read_char(self, offset=0) -> int: ...
  55. def read_uchar(self, offset=0) -> int: ...
  56. def read_short(self, offset=0) -> int: ...
  57. def read_ushort(self, offset=0) -> int: ...
  58. def read_int(self, offset=0) -> int: ...
  59. def read_uint(self, offset=0) -> int: ...
  60. def read_long(self, offset=0) -> int: ...
  61. def read_ulong(self, offset=0) -> int: ...
  62. def read_longlong(self, offset=0) -> int: ...
  63. def read_ulonglong(self, offset=0) -> int: ...
  64. def read_float(self, offset=0) -> float: ...
  65. def read_double(self, offset=0) -> float: ...
  66. def read_bool(self, offset=0) -> bool: ...
  67. def read_void_p(self, offset=0) -> 'void_p': ...
  68. def write_char(self, value: int, offset=0) -> None: ...
  69. def write_uchar(self, value: int, offset=0) -> None: ...
  70. def write_short(self, value: int, offset=0) -> None: ...
  71. def write_ushort(self, value: int, offset=0) -> None: ...
  72. def write_int(self, value: int, offset=0) -> None: ...
  73. def write_uint(self, value: int, offset=0) -> None: ...
  74. def write_long(self, value: int, offset=0) -> None: ...
  75. def write_ulong(self, value: int, offset=0) -> None: ...
  76. def write_longlong(self, value: int, offset=0) -> None: ...
  77. def write_ulonglong(self, value: int, offset=0) -> None: ...
  78. def write_float(self, value: float, offset=0) -> None: ...
  79. def write_double(self, value: float, offset=0) -> None: ...
  80. def write_bool(self, value: bool, offset=0) -> None: ...
  81. def write_void_p(self, value: 'void_p', offset=0) -> None: ...
  82. def char_(val: int) -> struct: ...
  83. def uchar_(val: int) -> struct: ...
  84. def short_(val: int) -> struct: ...
  85. def ushort_(val: int) -> struct: ...
  86. def int_(val: int) -> struct: ...
  87. def uint_(val: int) -> struct: ...
  88. def long_(val: int) -> struct: ...
  89. def ulong_(val: int) -> struct: ...
  90. def longlong_(val: int) -> struct: ...
  91. def ulonglong_(val: int) -> struct: ...
  92. def float_(val: float) -> struct: ...
  93. def double_(val: float) -> struct: ...
  94. def bool_(val: bool) -> struct: ...
  95. class _StructLike(Generic[T]):
  96. def tostruct(self) -> struct: ...
  97. @classmethod
  98. def fromstruct(cls, s: struct) -> T: ...
  99. def addr(self) -> 'Pointer[T]': ...
  100. def copy(self) -> T: ...
  101. def sizeof(self) -> int: ...
  102. def __eq__(self, other: T) -> bool: ...
  103. def __ne__(self, other: T) -> bool: ...