diff options
| author | Rusty Wagner <rusty@vector35.com> | 2016-07-27 02:51:23 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2016-07-27 03:31:06 -0400 |
| commit | 9a40763268a7859288875e1ab59a7cf7592529f6 (patch) | |
| tree | c49016ef209ea9f33097e37631e7d9501b71edd2 /python | |
| parent | db64a9d125fee897a461fc2dcc26c5f680afa390 (diff) | |
Add APIs to add user types
Diffstat (limited to 'python')
| -rw-r--r-- | python/__init__.py | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/python/__init__.py b/python/__init__.py index 4d7e7fb8..da8abd02 100644 --- a/python/__init__.py +++ b/python/__init__.py @@ -751,7 +751,7 @@ class BinaryView(object): """Binary View long name""" _registered = False _registered_cb = None - view_type = None + registered_view_type = None """Binary View type""" def __init__(self, file_metadata = None, handle = None): @@ -806,7 +806,7 @@ class BinaryView(object): cls._registered_cb.context = 0 cls._registered_cb.create = cls._registered_cb.create.__class__(cls._create) cls._registered_cb.isValidForData = cls._registered_cb.isValidForData.__class__(cls._is_valid_for_data) - cls.view_type = BinaryViewType(core.BNRegisterBinaryViewType(cls.name, cls.long_name, cls._registered_cb)) + cls.registered_view_type = BinaryViewType(core.BNRegisterBinaryViewType(cls.name, cls.long_name, cls._registered_cb)) cls._registered = True @classmethod @@ -1003,13 +1003,13 @@ class BinaryView(object): return result @property - def type(self): + def view_type(self): """View type (read-only)""" return core.BNGetViewType(self.handle) @property - def available_types(self): - """Available types (read-only)""" + def available_view_types(self): + """Available view types (read-only)""" count = ctypes.c_ulonglong(0) types = core.BNGetBinaryViewTypesForData(self.handle, count) result = [] @@ -1056,6 +1056,17 @@ class BinaryView(object): core.BNFreeDataVariables(var_list, count.value) return result + @property + def types(self): + """List of defined types (read-only)""" + count = ctypes.c_ulonglong(0) + type_list = core.BNGetAnalysisTypeList(self.handle, count) + result = {} + for i in xrange(0, count.value): + result[type_list[i].name] = Type(core.BNNewTypeReference(type_list[i].type)) + core.BNFreeTypeList(type_list, count.value) + return result + def __len__(self): return int(core.BNGetViewLength(self.handle)) @@ -1745,6 +1756,27 @@ class BinaryView(object): core.BNFreeNameAndType(result) return type_obj, name + def get_type_by_name(self, name): + obj = core.BNGetAnalysisTypeByName(self.handle, name) + if not obj: + return None + return Type(obj) + + def is_type_auto_defined(self, name): + return core.BNIsAnalysisTypeAutoDefined(self.handle, name) + + def define_type(self, name, type_obj): + core.BNDefineAnalysisType(self.handle, name, type_obj.handle) + + def define_user_type(self, name, type_obj): + core.BNDefineUserAnalysisType(self.handle, name, type_obj.handle) + + def undefine_type(self, name): + core.BNUndefineAnalysisType(self.handle, name) + + def undefine_user_type(self, name): + core.BNUndefineUserAnalysisType(self.handle, name) + def __setattr__(self, name, value): try: object.__setattr__(self,name,value) |
