MCPcopy Create free account
hub / github.com/ZeroIntensity/pointers.py / CArrayPointer

Class CArrayPointer

src/pointers/c_pointer.py:200–238  ·  view source on GitHub ↗

Class representing a pointer to a C array.

Source from the content-addressed store, hash-verified

198
199
200class CArrayPointer(_CDeref[List[T]], BaseCPointer[List[T]]):
201 """Class representing a pointer to a C array."""
202
203 def __init__(
204 self,
205 address: int,
206 size: int,
207 length: int,
208 typ: Type[T],
209 ):
210 self._length = length
211 self._type = typ
212 self._decref = False
213 super().__init__(address, size)
214
215 @property
216 def decref(self) -> bool:
217 return self._decref
218
219 @property
220 @handle
221 def _as_parameter_(self) -> "ctypes.Array[ctypes._CData]":
222 ctype = get_mapped(self._type)
223
224 deref = (ctype * self._length).from_address(self.ensure())
225 return deref
226
227 @handle
228 def dereference(self) -> List[T]:
229 """Dereference the pointer."""
230 array = self._as_parameter_
231 return [array[i] for i in range(self._length)] # type: ignore
232
233 def __repr__(self) -> str:
234 return f"CArrayPointer(address={self.address}, size={self.size})"
235
236 def __getitem__(self, index: int) -> T:
237 array = ~self
238 return array[index]
239
240
241@handle

Callers 1

arrayFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected