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

Class StackAllocatedPointer

src/pointers/stack_pointer.py:15–71  ·  view source on GitHub ↗

Pointer to memory allocated on the stack.

Source from the content-addressed store, hash-verified

13
14
15class StackAllocatedPointer(IterDereferencable[T], BaseAllocatedPointer[T]):
16 """Pointer to memory allocated on the stack."""
17
18 def __init__(
19 self,
20 address: int,
21 size: int,
22 assigned: bool = False,
23 ) -> None:
24 """
25 Args:
26 address: Address of the allocated memory.
27 size: Size of the allocated memory.
28 assigned: Whether an object is currently inside the memory.
29 """
30 self._address = address
31 self._size = size
32 self._freed = False
33 self._assigned = assigned
34
35 @property
36 def freed(self) -> bool:
37 return self._freed
38
39 @freed.setter
40 def freed(self, value: bool) -> None:
41 self._freed = value
42
43 @property
44 def address(self) -> Optional[int]:
45 return self._address
46
47 @address.setter
48 def address(self, value: int) -> None:
49 self._address = value
50
51 def __repr__(self) -> str:
52 return f"StackAllocatedPointer(address={self.address}, size={self.size})" # noqa
53
54 def __add__(self, amount: int):
55 return StackAllocatedPointer(
56 self.ensure() + amount,
57 self.size,
58 self.assigned,
59 )
60
61 def __sub__(self, amount: int):
62 return StackAllocatedPointer(
63 self.ensure() - amount,
64 self.size,
65 self.assigned,
66 )
67
68 def free(self) -> None:
69 raise ValueError(
70 "pointers to items on the stack may not be freed dynamically",
71 )
72

Callers 2

__add__Method · 0.85
__sub__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected