summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-09-13 09:56:00 -0400
committerPeter LaFosse <peter@vector35.com>2019-11-15 21:10:58 -0500
commitdb48820f5fed420ad298278e8e6b055baa4ddf06 (patch)
tree2b41a6f081f924b622887ddc42f5f579eebbd849 /python
parent3c329e77e0318db070099be2d1731c4e7ac510ba (diff)
Type workflow improvements
Expand type context for data renderers Add additional linearview helper routines for defining variables inside of structures fix unit tests
Diffstat (limited to 'python')
-rw-r--r--python/datarender.py4
-rw-r--r--python/types.py8
2 files changed, 10 insertions, 2 deletions
diff --git a/python/datarender.py b/python/datarender.py
index 0aaa81a7..4b81b1dd 100644
--- a/python/datarender.py
+++ b/python/datarender.py
@@ -79,8 +79,8 @@ class DataRenderer(object):
@classmethod
def is_type_of_struct_name(cls, type, name, context):
return (type.type_class == enums.TypeClass.StructureTypeClass and len(context) > 0
- and context[0].type_class == enums.TypeClass.NamedTypeReferenceClass and
- context[0].named_type_reference.name == name)
+ and context[-1].type_class == enums.TypeClass.NamedTypeReferenceClass and
+ context[-1].named_type_reference.name == name)
def register_type_specific(self):
core.BNRegisterTypeSpecificDataRenderer(core.BNGetDataRendererContainer(), self.handle)
diff --git a/python/types.py b/python/types.py
index db56a19c..ed4360d6 100644
--- a/python/types.py
+++ b/python/types.py
@@ -1083,6 +1083,14 @@ class Structure(object):
finally:
core.BNFreeStructureMember(member)
+ def member_at_offset(self, offset):
+ try:
+ member = core.BNGetStructureMemberAtOffset(self.handle, offset)
+ return StructureMember(Type(core.BNNewTypeReference(member.contents.type), confidence=member.contents.typeConfidence),
+ member.contents.name, member.contents.offset)
+ finally:
+ core.BNFreeStructureMember(member)
+
@property
def members(self):
"""Structure member list (read-only)"""