diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-09-13 09:56:00 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-11-15 21:10:58 -0500 |
| commit | db48820f5fed420ad298278e8e6b055baa4ddf06 (patch) | |
| tree | 2b41a6f081f924b622887ddc42f5f579eebbd849 /python | |
| parent | 3c329e77e0318db070099be2d1731c4e7ac510ba (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.py | 4 | ||||
| -rw-r--r-- | python/types.py | 8 |
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)""" |
