summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/types.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/python/types.py b/python/types.py
index 70a9d6cc..68d20997 100644
--- a/python/types.py
+++ b/python/types.py
@@ -880,16 +880,26 @@ class Structure(object):
return True
return ctypes.addressof(self.handle.contents) != ctypes.addressof(value.handle.contents)
+ def __getitem__(self, name):
+ try:
+ member = core.BNGetStructureMemberByName(self.handle, name)
+ 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)"""
count = ctypes.c_ulonglong()
members = core.BNGetStructureMembers(self.handle, count)
- result = []
- for i in range(0, count.value):
- result.append(StructureMember(Type(core.BNNewTypeReference(members[i].type), confidence = members[i].typeConfidence),
- members[i].name, members[i].offset))
- core.BNFreeStructureMemberList(members, count.value)
+ try:
+ result = []
+ for i in range(0, count.value):
+ result.append(StructureMember(Type(core.BNNewTypeReference(members[i].type), confidence=members[i].typeConfidence),
+ members[i].name, members[i].offset))
+ finally:
+ core.BNFreeStructureMemberList(members, count.value)
return result
@property