summaryrefslogtreecommitdiff
path: root/python/types.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/types.py')
-rw-r--r--python/types.py49
1 files changed, 31 insertions, 18 deletions
diff --git a/python/types.py b/python/types.py
index 6ca9434c..51f71c90 100644
--- a/python/types.py
+++ b/python/types.py
@@ -884,6 +884,32 @@ class PointerBuilder(TypeBuilder):
def children(self) -> List[TypeBuilder]:
return [self.target]
+ @property
+ def offset(self) -> int:
+ return core.BNGetTypeBuilderOffset(self._handle)
+
+ @offset.setter
+ def offset(self, offset: int) -> int:
+ return core.BNSetTypeBuilderOffset(self._handle, offset)
+
+ @property
+ def origin(self) -> Optional[Tuple['QualifiedName', int]]:
+ ntr_handle = core.BNGetTypeBuilderNamedTypeReference(self._handle)
+ if ntr_handle is None:
+ return None
+ name = core.BNGetTypeReferenceName(ntr_handle)
+ core.BNFreeNamedTypeReference(ntr_handle)
+ if name is None:
+ return None
+ qn = QualifiedName._from_core_struct(name)
+ core.BNFreeQualifiedName(name)
+ return (qn, self.offset)
+
+ @origin.setter
+ def origin(self, origin: 'NamedTypeReferenceType'):
+ core.BNSetTypeBuilderNamedTypeReference(self._handle, origin.ntr_handle)
+
+
class ArrayBuilder(TypeBuilder):
@classmethod
def create(
@@ -2460,26 +2486,13 @@ class PointerType(Type):
ntr_handle = core.BNGetTypeNamedTypeReference(self._handle)
if ntr_handle is None:
return None
-
name = core.BNGetTypeReferenceName(ntr_handle)
- type_name = QualifiedName._from_core_struct(name)
+ core.BNFreeNamedTypeReference(ntr_handle)
+ if name is None:
+ return None
+ qn = QualifiedName._from_core_struct(name)
core.BNFreeQualifiedName(name)
-
- type_id = core.BNGetTypeReferenceId(ntr_handle)
- t = None
- if bv is not None:
- t = bv.get_type_by_id(type_id)
-
- alignment = 0
- if t is not None:
- alignment = t.alignment
- width = 0
- if t is not None:
- width = t.width
-
- type_class = core.BNGetTypeReferenceClass(ntr_handle)
-
- return (NamedTypeReferenceType.create(type_class, type_id, type_name, alignment, width, self.platform, self.confidence, self.const, self.volatile), self.offset)
+ return (qn, self.offset)
@property
def target(self) -> Type: