summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/binaryview.py2
-rw-r--r--python/component.py2
-rw-r--r--python/debuginfo.py16
-rw-r--r--python/typeprinter.py20
-rw-r--r--python/types.py4
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