Source code for angr.knowledge_plugins.key_definitions.heap_address

from typing import Union

from .undefined import Undefined


[docs]class HeapAddress: """ The representation of an address on the heap. """
[docs] def __init__(self, value: Union[int, Undefined]): self._value = value
@property def value(self): return self._value def __repr__(self): address_as_string = ("%#x" % self._value) if isinstance(self._value, int) else ("%s" % self._value) return "HeapAddress<%s>" % address_as_string def __add__(self, value): if not isinstance(value, int): raise TypeError("Can only add int to HeapAddress, got %s" % type(value).__name__) return HeapAddress(self.value + value) def __radd__(self, value): return self.__add__(value) def __eq__(self, other): return isinstance(other, HeapAddress) and self._value == other._value def __hash__(self): return hash(self._value)