diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/binaryview.py | 2 | ||||
| -rw-r--r-- | python/component.py | 2 | ||||
| -rw-r--r-- | python/debuginfo.py | 16 | ||||
| -rw-r--r-- | python/typeprinter.py | 20 | ||||
| -rw-r--r-- | python/types.py | 4 |
5 files changed, 23 insertions, 21 deletions
diff --git a/python/binaryview.py b/python/binaryview.py index 7cd46532..cd7a0cdf 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -4575,7 +4575,7 @@ class BinaryView: size = refs[i].size typeObj = None if refs[i].incomingType.type: - typeObj = _types.Type( + typeObj = _types.Type.create( core.BNNewTypeReference(refs[i].incomingType.type), confidence=refs[i].incomingType.confidence ) yield _types.TypeFieldReference(func, arch, addr, size, typeObj) diff --git a/python/component.py b/python/component.py index 940cbe97..0c772de8 100644 --- a/python/component.py +++ b/python/component.py @@ -325,7 +325,7 @@ class Component: try: for i in range(count.value): - _types.append(types.Type(core.BNNewTypeReference(bn_types[i]))) + _types.append(types.Type.create(core.BNNewTypeReference(bn_types[i]))) finally: core.BNComponentFreeReferencedTypes(bn_types, count.value) diff --git a/python/debuginfo.py b/python/debuginfo.py index 350ac8a9..c2f750a4 100644 --- a/python/debuginfo.py +++ b/python/debuginfo.py @@ -311,7 +311,7 @@ class DebugInfo(object): assert name_and_types is not None, "core.BNGetDebugTypes returned None" try: for i in range(0, count.value): - yield (name_and_types[i].name, _types.Type(core.BNNewTypeReference(name_and_types[i].type))) + yield (name_and_types[i].name, _types.Type.create(core.BNNewTypeReference(name_and_types[i].type))) finally: core.BNFreeDebugTypes(name_and_types, count.value) @@ -359,7 +359,7 @@ class DebugInfo(object): for i in range(0, count.value): yield binaryview.DataVariableAndName( data_variables[i].address, - _types.Type( + _types.Type.create( core.BNNewTypeReference(data_variables[i].type), confidence=data_variables[i].typeConfidence ), data_variables[i].name, data_variables[i].autoDiscovered ) @@ -374,20 +374,20 @@ class DebugInfo(object): def get_type_by_name(self, parser_name: str, name: str) -> Optional[_types.Type]: result = core.BNGetDebugTypeByName(self.handle, parser_name, name) if result is not None: - return _types.Type(result) + return _types.Type.create(result) return None def get_data_variable_by_name(self, parser_name: str, name: str) -> Optional[Tuple[int, _types.Type]]: result = core.BNGetDebugDataVariableByName(self.handle, parser_name, name) if result is not None: core.BNFreeString(result.name) - return (result.address, _types.Type(result.type)) + return (result.address, _types.Type.create(result.type)) return None def get_data_variable_by_address(self, parser_name: str, address: int) -> Optional[Tuple[str, _types.Type]]: name_and_var = core.BNGetDebugDataVariableByAddress(self.handle, parser_name, address) if name_and_var is not None: - result = (str(name_and_var.name), _types.Type(name_and_var.type)) + result = (str(name_and_var.name), _types.Type.create(name_and_var.type)) core.BNFreeString(name_and_var.name) return result return None @@ -400,7 +400,7 @@ class DebugInfo(object): result = [] for i in range(count.value): assert names_and_types is not None, "core.BNGetDebugTypesByName returned None" - result.append((names_and_types[i].name, _types.Type(core.BNNewTypeReference(names_and_types[i].type)))) + result.append((names_and_types[i].name, _types.Type.create(core.BNNewTypeReference(names_and_types[i].type)))) core.BNFreeNameAndTypeList(names_and_types, count.value) return result @@ -415,7 +415,7 @@ class DebugInfo(object): assert variables_and_name is not None, "core.BNGetDebugDataVariablesByName returned None" result.append(( variables_and_name[i].name, variables_and_name[i].address, - _types.Type(core.BNNewTypeReference(variables_and_name[i].type)) + _types.Type.create(core.BNNewTypeReference(variables_and_name[i].type)) )) core.BNFreeDataVariablesAndName(variables_and_name, count.value) @@ -431,7 +431,7 @@ class DebugInfo(object): assert variables_and_name is not None, "core.BNGetDebugDataVariablesByAddress returned None" result.append(( variables_and_name[i].parser, variables_and_name[i].name, - _types.Type(core.BNNewTypeReference(variables_and_name[i].type)) + _types.Type.create(core.BNNewTypeReference(variables_and_name[i].type)) )) core.BNFreeDataVariableAndNameAndDebugParserList(variables_and_name, count.value) diff --git a/python/typeprinter.py b/python/typeprinter.py index 2177ba40..d7af3087 100644 --- a/python/typeprinter.py +++ b/python/typeprinter.py @@ -118,7 +118,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): if platform: platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) result_py = self.get_type_tokens( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, types.QualifiedName._from_core_struct(name.contents), base_confidence, escaping) TypePrinter._cached_tokens = _function.InstructionTextToken._get_core_struct(result_py) @@ -137,9 +137,9 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) parent_type_py = None if parent_type: - parent_type_py = types.Type(handle=core.BNNewTypeReference(parent_type)) + parent_type_py = types.Type.create(handle=core.BNNewTypeReference(parent_type)) result_py = self.get_type_tokens_before_name( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, base_confidence, parent_type_py, escaping) TypePrinter._cached_tokens = _function.InstructionTextToken._get_core_struct(result_py) @@ -158,9 +158,9 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) parent_type_py = None if parent_type: - parent_type_py = types.Type(handle=core.BNNewTypeReference(parent_type)) + parent_type_py = types.Type.create(handle=core.BNNewTypeReference(parent_type)) result_py = self.get_type_tokens_after_name( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, base_confidence, parent_type_py, escaping) TypePrinter._cached_tokens = _function.InstructionTextToken._get_core_struct(result_py) @@ -178,7 +178,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): if platform: platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) result_py = self.get_type_string( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, types.QualifiedName._from_core_struct(name.contents), escaping) TypePrinter._cached_string = core.cstr(result_py) @@ -194,7 +194,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): if platform: platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) result_py = self.get_type_string_before_name( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, escaping) TypePrinter._cached_string = core.cstr(result_py) @@ -210,7 +210,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): if platform: platform_py = _platform.Platform(handle=core.BNNewPlatformReference(platform)) result_py = self.get_type_string_after_name( - types.Type(handle=core.BNNewTypeReference(type)), platform_py, + types.Type.create(handle=core.BNNewTypeReference(type)), platform_py, escaping) TypePrinter._cached_string = core.cstr(result_py) @@ -223,7 +223,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): def _get_type_lines(self, ctxt, type, data, name, line_width, collapsed, escaping, result, result_count): try: result_py = self.get_type_lines( - types.Type(handle=core.BNNewTypeReference(type)), + types.Type.create(handle=core.BNNewTypeReference(type)), binaryview.BinaryView(handle=core.BNNewViewReference(data)), types.QualifiedName._from_core_struct(name.contents), line_width, collapsed, escaping) @@ -245,7 +245,7 @@ class TypePrinter(metaclass=_TypePrinterMetaclass): for i in range(type_count): types_py.append(( types.QualifiedName._from_core_struct(names[i]), - types.Type(handle=core.BNNewTypeReference(types_[i])) + types.Type.create(handle=core.BNNewTypeReference(types_[i])) )) result_py = self.print_all_types( diff --git a/python/types.py b/python/types.py index f4df25f1..570f9ce1 100644 --- a/python/types.py +++ b/python/types.py @@ -1411,7 +1411,7 @@ class StructureBuilder(TypeBuilder): return None try: return StructureMember( - Type(core.BNNewTypeReference(member.contents.type), confidence=member.contents.typeConfidence), + Type.create(core.BNNewTypeReference(member.contents.type), confidence=member.contents.typeConfidence), member.contents.name, member.contents.offset, MemberAccess(member.contents.access), MemberScope(member.contents.scope) ) @@ -1754,6 +1754,8 @@ class Type: """ def __init__(self, handle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence): assert isinstance(handle.contents, core.BNType), "Attempting to create mutable Type" + if self.__class__ == Type: + raise Exception("Cannot instantiate Type directly use Type.create instead") self._handle = handle self._confidence = confidence self._platform = platform |
