summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-03-29 07:20:41 -0400
committerPeter LaFosse <peter@vector35.com>2022-03-29 07:47:36 -0400
commit79ca1197fc3a6a20450d6838f158c7e7bb8298fa (patch)
treedb49257bf0fc2d619562a0a3911f25a3b199cbed /python
parent1291c94d3d5592203200c8e048c9ddc851e812e1 (diff)
Add various type hints
Diffstat (limited to 'python')
-rw-r--r--python/callingconvention.py2
-rw-r--r--python/types.py130
2 files changed, 67 insertions, 65 deletions
diff --git a/python/callingconvention.py b/python/callingconvention.py
index 44d835b7..ced98b75 100644
--- a/python/callingconvention.py
+++ b/python/callingconvention.py
@@ -54,7 +54,7 @@ class CallingConvention:
_registered_calling_conventions = []
def __init__(
- self, arch: 'architecture.Architecture' = None, name: str = None, handle=None,
+ self, arch: Optional['architecture.Architecture'] = None, name: Optional[str] = None, handle=None,
confidence: int = core.max_confidence
):
if handle is None:
diff --git a/python/types.py b/python/types.py
index e0370b74..418c4e4f 100644
--- a/python/types.py
+++ b/python/types.py
@@ -480,7 +480,7 @@ class TypeBuilder:
All TypeBuilder objects should not be instantiated directly but created via ``.create`` APIs.
"""
def __init__(
- self, handle: core.BNTypeBuilderHandle, platform: '_platform.Platform' = None,
+ self, handle: core.BNTypeBuilderHandle, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
):
assert isinstance(handle, core.BNTypeBuilderHandle), "handle isn't an instance of BNTypeBuilderHandle"
@@ -538,7 +538,7 @@ class TypeBuilder:
@classmethod
def builder(
- cls, container: TypeContainer, name: 'QualifiedName', user: bool = True, platform: '_platform.Platform' = None,
+ cls, container: TypeContainer, name: 'QualifiedName', user: bool = True, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'MutableTypeBuilder':
return MutableTypeBuilder(cls.create(), container, name, platform, confidence, user)
@@ -657,7 +657,7 @@ class TypeBuilder:
@staticmethod
def enumeration(
- arch: Optional['architecture.Architecture'] = None, members: Optional[List[EnumMembersType]] = None,
+ arch: Optional['architecture.Architecture'] = None, members: Optional[EnumMembersType] = None,
width: Optional[_int] = None, sign: BoolWithConfidenceType = BoolWithConfidence(False)
) -> 'EnumerationBuilder':
return EnumerationBuilder.create(members, width, arch, sign)
@@ -728,7 +728,7 @@ class TypeBuilder:
core.BNTypeBuilderSetChildType(self._handle, value.immutable_copy()._to_core_struct())
@property
- def alternate_name(self) -> str:
+ def alternate_name(self) -> Optional[str]:
return core.BNGetTypeBuilderAlternateName(self._handle)
@alternate_name.setter
@@ -743,7 +743,7 @@ class TypeBuilder:
return core.BNTypeBuilderGetSystemCallNumber(self._handle)
@system_call_number.setter
- def system_call_number(self, value: int) -> None:
+ def system_call_number(self, value: _int) -> None:
core.BNTypeBuilderSetSystemCallNumber(self._handle, True, value)
def clear_system_call(self) -> None:
@@ -763,12 +763,12 @@ class TypeBuilder:
core.BNTypeBuilderSetSigned(self._handle, _value)
@property
- def children(self) -> List['Type']:
+ def children(self) -> List['TypeBuilder']:
return []
class VoidBuilder(TypeBuilder):
@classmethod
- def create(cls, platform: '_platform.Platform' = None, confidence: int = core.max_confidence) -> 'VoidBuilder':
+ def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'VoidBuilder':
handle = core.BNCreateVoidTypeBuilder()
assert handle is not None, "core.BNCreateVoidTypeBuilder returned None"
return cls(handle, platform, confidence)
@@ -776,7 +776,7 @@ class VoidBuilder(TypeBuilder):
class BoolBuilder(TypeBuilder):
@classmethod
- def create(cls, platform: '_platform.Platform' = None, confidence: int = core.max_confidence) -> 'BoolBuilder':
+ def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'BoolBuilder':
handle = core.BNCreateBoolTypeBuilder()
assert handle is not None, "core.BNCreateBoolTypeBuilder returned None"
return cls(handle, platform, confidence)
@@ -786,7 +786,7 @@ class IntegerBuilder(TypeBuilder):
@classmethod
def create(
cls, width: int, sign: BoolWithConfidenceType = True, alternate_name: str = "",
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'IntegerBuilder':
_sign = BoolWithConfidence.get_core_struct(sign)
handle = core.BNCreateIntegerTypeBuilder(width, _sign, alternate_name)
@@ -797,7 +797,7 @@ class IntegerBuilder(TypeBuilder):
class CharBuilder(IntegerBuilder):
@classmethod
def create(
- cls, alternate_name: str = "", platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ cls, alternate_name: str = "", platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'CharBuilder':
handle = core.BNCreateIntegerTypeBuilder(1, BoolWithConfidence.get_core_struct(False), alternate_name)
assert handle is not None, "BNCreateIntegerTypeBuilder returned None"
@@ -807,7 +807,7 @@ class CharBuilder(IntegerBuilder):
class FloatBuilder(TypeBuilder):
@classmethod
def create(
- cls, width: int, alternate_name: str = "", platform: '_platform.Platform' = None,
+ cls, width: int, alternate_name: str = "", platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'FloatBuilder':
handle = core.BNCreateFloatTypeBuilder(width, alternate_name)
@@ -818,7 +818,7 @@ class FloatBuilder(TypeBuilder):
class WideCharBuilder(TypeBuilder):
@classmethod
def create(
- cls, width: int, alternate_name: str = "", platform: '_platform.Platform' = None,
+ cls, width: int, alternate_name: str = "", platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'WideCharBuilder':
handle = core.BNCreateWideCharTypeBuilder(width, alternate_name)
@@ -831,7 +831,7 @@ class PointerBuilder(TypeBuilder):
def create(
cls, type: 'Type', width: int = 4, arch: Optional['architecture.Architecture'] = None,
const: BoolWithConfidenceType = False, volatile: BoolWithConfidenceType = False,
- ref_type: ReferenceType = ReferenceType.PointerReferenceType, platform: '_platform.Platform' = None,
+ ref_type: ReferenceType = ReferenceType.PointerReferenceType, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'PointerBuilder':
assert width is not None or arch is not None, "Must specify either a width or architecture when creating a pointer"
@@ -855,12 +855,12 @@ class PointerBuilder(TypeBuilder):
@property
def children(self) -> List[TypeBuilder]:
- return [self.child]
+ return [self.target]
class ArrayBuilder(TypeBuilder):
@classmethod
def create(
- cls, type: SomeType, element_count: int, platform: '_platform.Platform' = None,
+ cls, type: SomeType, element_count: int, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'ArrayBuilder':
handle = core.BNCreateArrayTypeBuilder(type._to_core_struct(), element_count)
@@ -872,12 +872,12 @@ class ArrayBuilder(TypeBuilder):
return core.BNGetTypeBuilderElementCount(self._handle)
@property
- def element_type(self):
- return self.child
+ def element_type(self) -> TypeBuilder:
+ return self.child.mutable_copy()
@property
def children(self) -> List[TypeBuilder]:
- return [self.child]
+ return [self.element_type]
class FunctionBuilder(TypeBuilder):
@classmethod
@@ -885,7 +885,7 @@ class FunctionBuilder(TypeBuilder):
cls, return_type: Optional[SomeType] = None,
calling_convention: Optional['callingconvention.CallingConvention'] = None, params: Optional[ParamsType] = None,
var_args: BoolWithConfidenceType = False, stack_adjust: OffsetWithConfidenceType = 0,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'FunctionBuilder':
param_buf = FunctionBuilder._to_core_struct(params)
if return_type is None:
@@ -1020,7 +1020,7 @@ class FunctionBuilder(TypeBuilder):
@property
def children(self) -> List[TypeBuilder]:
- return [self.child, *[param.type for param in self.parameters]]
+ return [self.child.mutable_copy(), *[param.type.mutable_copy() for param in self.parameters]]
@dataclass
class StructureMember:
@@ -1042,7 +1042,7 @@ class StructureMember:
class StructureBuilder(TypeBuilder):
def __init__(
self, handle: core.BNTypeBuilderHandle, builder_handle: core.BNStructureBuilderHandle,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
):
super(StructureBuilder, self).__init__(handle, platform, confidence)
assert builder_handle is not None, "Can't instantiate Structure with builder_handle set to None"
@@ -1075,8 +1075,8 @@ class StructureBuilder(TypeBuilder):
@classmethod
def create(
- cls, members: MembersType = None, type: StructureVariant = StructureVariant.StructStructureType,
- packed: bool = False, width: Optional[int] = None, platform: '_platform.Platform' = None,
+ cls, members: Optional[MembersType] = None, type: StructureVariant = StructureVariant.StructStructureType,
+ packed: bool = False, width: Optional[int] = None, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'StructureBuilder':
structure_builder_handle = core.BNCreateStructureBuilderWithOptions(type, packed)
@@ -1117,7 +1117,7 @@ class StructureBuilder(TypeBuilder):
core.BNFreeStructureMemberList(members, count.value)
@members.setter
- def members(self, members: MembersType = None) -> None:
+ def members(self, members: Optional[MembersType] = None) -> None:
count = len(self.members)
# remove members in reverse order
for i in reversed(range(count)):
@@ -1234,7 +1234,7 @@ class StructureBuilder(TypeBuilder):
@property
def children(self) -> List[TypeBuilder]:
- return [member.type for member in self.members]
+ return [member.type.mutable_copy() for member in self.members]
@dataclass(frozen=True)
class EnumerationMember:
@@ -1252,7 +1252,7 @@ class EnumerationMember:
class EnumerationBuilder(TypeBuilder):
def __init__(
self, handle: core.BNTypeBuilderHandle, enum_builder_handle: core.BNEnumerationBuilderHandle,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
):
super(EnumerationBuilder, self).__init__(handle, platform, confidence)
assert isinstance(enum_builder_handle, core.BNEnumerationBuilderHandle)
@@ -1260,9 +1260,9 @@ class EnumerationBuilder(TypeBuilder):
@classmethod
def create(
- cls, members: Optional[List[EnumMembersType]] = None, width: Optional[int] = None,
+ cls, members: Optional[EnumMembersType] = None, width: Optional[int] = None,
arch: Optional['architecture.Architecture'] = None, sign: BoolWithConfidenceType = False,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'EnumerationBuilder':
if members is None:
@@ -1306,13 +1306,13 @@ class EnumerationBuilder(TypeBuilder):
core.BNFreeEnumerationMemberList(members, count.value)
@members.setter
- def members(self, members: List[EnumMembersType]) -> None: # type: ignore
+ def members(self, members: EnumMembersType) -> None: # type: ignore
for i in reversed(range(len(self.members))):
self.remove(i)
EnumerationBuilder._add_members(self.enum_builder_handle, members)
@staticmethod
- def _add_members(enum_builder_handle, members: List[EnumMembersType]):
+ def _add_members(enum_builder_handle, members: EnumMembersType):
for i, member in enumerate(members):
value = None
if isinstance(member, Tuple):
@@ -1320,7 +1320,9 @@ class EnumerationBuilder(TypeBuilder):
elif isinstance(member, EnumerationMember):
name = member.name
value = member.value
- elif isinstance(member, str):
+ else:
+ if not isinstance(member, str):
+ raise ValueError(f"Member type {member} not supported")
name = member
if value is None:
@@ -1336,7 +1338,7 @@ class EnumerationBuilder(TypeBuilder):
core.BNRemoveEnumerationBuilderMember(self.enum_builder_handle, i)
return self
- def replace(self, i: int, name: str, value: Optional[int] = None) -> 'EnumerationBuilder':
+ def replace(self, i: int, name: str, value: int) -> 'EnumerationBuilder':
core.BNReplaceEnumerationBuilderMember(self.enum_builder_handle, i, name, value)
return self
@@ -1371,7 +1373,7 @@ class EnumerationBuilder(TypeBuilder):
class NamedTypeReferenceBuilder(TypeBuilder):
def __init__(
self, handle: core.BNTypeBuilderHandle, ntr_builder_handle: core.BNNamedTypeReferenceBuilderHandle,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
):
assert ntr_builder_handle is not None, "Failed to construct NameTypeReference"
assert handle is not None, "Failed to construct NameTypeReference"
@@ -1385,7 +1387,7 @@ class NamedTypeReferenceBuilder(TypeBuilder):
def create(
cls, type_class: NamedTypeReferenceClass = NamedTypeReferenceClass.UnknownNamedTypeClass,
type_id: Optional[str] = None, name: QualifiedName = QualifiedName(""), width: int = 0, align: int = 1,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence,
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence,
const: BoolWithConfidenceType = False, volatile: BoolWithConfidenceType = False
) -> 'NamedTypeReferenceBuilder':
ntr_builder_handle = core.BNCreateNamedTypeBuilder(type_class, type_id, QualifiedName(name)._to_core_struct())
@@ -1502,7 +1504,7 @@ class Type:
:py:meth:`parse_types_from_source_file <platform.Platform.parse_types_from_source_file>`
"""
- def __init__(self, handle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence):
+ 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"
self._handle = handle
self._confidence = confidence
@@ -1510,7 +1512,7 @@ class Type:
@classmethod
def create(
- cls, handle=core.BNTypeHandle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ cls, handle=core.BNTypeHandle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'Type':
assert handle is not None, "Passed a handle which is None"
assert isinstance(handle, core.BNTypeHandle)
@@ -1794,7 +1796,7 @@ class Type:
@staticmethod
def builder(
bv: 'binaryview.BinaryView', name: Optional[QualifiedName] = None, id: Optional[str] = None,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'MutableTypeBuilder':
type = None
if name is None and id is None:
@@ -1971,7 +1973,7 @@ class Type:
@staticmethod
def enumeration(
- arch: Optional['architecture.Architecture'] = None, members: Optional[List[EnumMembersType]] = None,
+ arch: Optional['architecture.Architecture'] = None, members: Optional[EnumMembersType] = None,
width: Optional[_int] = None, sign: BoolWithConfidenceType = False
) -> 'EnumerationType':
if members is None:
@@ -1993,12 +1995,12 @@ class Type:
raise NotImplementedError("Name not implemented for this type")
@staticmethod
- def generate_auto_type_id(source: str, name: str) -> str:
+ def generate_auto_type_id(source: str, name: QualifiedNameType) -> str:
_name = QualifiedName(name)._to_core_struct()
return core.BNGenerateAutoTypeId(source, _name)
@staticmethod
- def generate_auto_demangled_type_id(name: str) -> str:
+ def generate_auto_demangled_type_id(name: QualifiedNameType) -> str:
_name = QualifiedName(name)._to_core_struct()
return core.BNGenerateAutoDemangledTypeId(_name)
@@ -2045,7 +2047,7 @@ class RegisterStackAdjustmentWithConfidence:
class VoidType(Type):
@classmethod
- def create(cls, platform: '_platform.Platform' = None, confidence: int = core.max_confidence) -> 'VoidType':
+ def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'VoidType':
core_void = core.BNCreateVoidType()
assert core_void is not None, "core.BNCreateVoidType returned None"
return cls(core.BNNewTypeReference(core_void), platform, confidence)
@@ -2053,20 +2055,20 @@ class VoidType(Type):
class BoolType(Type):
@classmethod
- def create(cls, platform: '_platform.Platform' = None, confidence: int = core.max_confidence) -> 'BoolType':
+ def create(cls, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence) -> 'BoolType':
handle = core.BNCreateBoolType()
assert handle is not None, "core.BNCreateBoolType returned None"
return cls(core.BNNewTypeReference(handle), platform, confidence)
class IntegerType(Type):
- def __init__(self, handle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence):
+ def __init__(self, handle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence):
super(IntegerType, self).__init__(handle, platform, confidence)
@classmethod
def create(
cls, width: int, sign: BoolWithConfidenceType = True, alternate_name: str = "",
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'IntegerType':
_sign = BoolWithConfidence.get_core_struct(sign)
handle = core.BNCreateIntegerType(width, _sign, alternate_name)
@@ -2082,7 +2084,7 @@ class IntegerType(Type):
class CharType(IntegerType):
@classmethod
def create(
- cls, altname: str = "char", platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ cls, altname: str = "char", platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'CharType':
return cls(IntegerType.create(1, True, altname).handle, platform, confidence)
@@ -2090,7 +2092,7 @@ class CharType(IntegerType):
class FloatType(Type):
@classmethod
def create(
- cls, width: int, altname: str = "", platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ cls, width: int, altname: str = "", platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'FloatType':
"""
``float`` class method for creating floating point Types.
@@ -2104,7 +2106,7 @@ class FloatType(Type):
class StructureType(Type):
- def __init__(self, handle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence):
+ def __init__(self, handle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence):
assert handle is not None, "Attempted to create EnumerationType with handle which is None"
super(StructureType, self).__init__(handle, platform, confidence)
struct_handle = core.BNGetTypeStructure(handle)
@@ -2114,7 +2116,7 @@ class StructureType(Type):
@classmethod
def create(
cls, members: MembersType = None, packed: bool = False,
- type: StructureVariant = StructureVariant.StructStructureType, platform: '_platform.Platform' = None,
+ type: StructureVariant = StructureVariant.StructStructureType, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'StructureType':
builder = core.BNCreateStructureBuilderWithOptions(type, packed)
@@ -2244,7 +2246,7 @@ class StructureType(Type):
return [member.type for member in self.members]
class EnumerationType(IntegerType):
- def __init__(self, handle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence):
+ def __init__(self, handle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence):
assert handle is not None, "Attempted to create EnumerationType without handle"
super(EnumerationType, self).__init__(handle, platform, confidence)
enum_handle = core.BNGetTypeEnumeration(handle)
@@ -2275,9 +2277,9 @@ class EnumerationType(IntegerType):
@classmethod
def create(
- cls, members=List[EnumMembersType], width: Optional[int] = None,
+ cls, members=EnumMembersType, width: Optional[int] = None,
arch: Optional['architecture.Architecture'] = None, sign: BoolWithConfidenceType = False,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'EnumerationType':
if width is None:
if arch is None:
@@ -2320,7 +2322,7 @@ class PointerType(Type):
def create(
cls, arch: 'architecture.Architecture', type: SomeType, const: BoolWithConfidenceType = False,
volatile: BoolWithConfidenceType = False, ref_type: ReferenceType = ReferenceType.PointerReferenceType,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'PointerType':
return cls.create_with_width(arch.address_size, type, const, volatile, ref_type, platform, confidence)
@@ -2348,7 +2350,7 @@ class PointerType(Type):
@classmethod
def create_with_width(
cls, width: int, type: SomeType, const: BoolWithConfidenceType = False,
- volatile: BoolWithConfidenceType = False, ref_type: ReferenceType = None, platform: '_platform.Platform' = None,
+ volatile: BoolWithConfidenceType = False, ref_type: ReferenceType = None, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'PointerType':
_const, _volatile = PointerType.from_bools(const, volatile)
@@ -2377,7 +2379,7 @@ class PointerType(Type):
class ArrayType(Type):
@classmethod
def create(
- cls, element_type: Type, count: int, platform: '_platform.Platform' = None,
+ cls, element_type: Type, count: int, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'ArrayType':
type_conf = element_type._to_core_struct()
@@ -2403,10 +2405,10 @@ class ArrayType(Type):
class FunctionType(Type):
@classmethod
def create(
- cls, ret: Optional[Type] = None, params: ParamsType = None,
- calling_convention: 'callingconvention.CallingConvention' = None,
+ cls, ret: Optional[Type] = None, params: Optional[ParamsType] = None,
+ calling_convention: Optional['callingconvention.CallingConvention'] = None,
variable_arguments: BoolWithConfidenceType = BoolWithConfidence(False),
- stack_adjust: OffsetWithConfidence = OffsetWithConfidence(0), platform: '_platform.Platform' = None,
+ stack_adjust: OffsetWithConfidence = OffsetWithConfidence(0), platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'FunctionType':
if ret is None:
@@ -2500,7 +2502,7 @@ class FunctionType(Type):
class NamedTypeReferenceType(Type):
def __init__(
- self, handle, platform: '_platform.Platform' = None, confidence: int = core.max_confidence, ntr_handle=None
+ self, handle, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence, ntr_handle=None
):
assert handle is not None, "Attempting to create NamedTypeReferenceType handle which is None"
super(NamedTypeReferenceType, self).__init__(handle, platform, confidence)
@@ -2520,8 +2522,8 @@ class NamedTypeReferenceType(Type):
@classmethod
def create(
- cls, named_type_class: NamedTypeReferenceClass, guid: Optional[str], name: QualifiedName, alignment: int = 0,
- width: int = 0, platform: '_platform.Platform' = None, confidence: int = core.max_confidence,
+ cls, named_type_class: NamedTypeReferenceClass, guid: Optional[str], name: QualifiedNameType, alignment: int = 0,
+ width: int = 0, platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence,
const: BoolWithConfidenceType = False, volatile: BoolWithConfidenceType = False
) -> 'NamedTypeReferenceType':
_guid = guid
@@ -2541,7 +2543,7 @@ class NamedTypeReferenceType(Type):
@classmethod
def create_from_type(
cls, name: QualifiedName, type: Optional[Type], guid: Optional[str] = None,
- platform: '_platform.Platform' = None, confidence: int = core.max_confidence
+ platform: Optional['_platform.Platform'] = None, confidence: int = core.max_confidence
) -> 'NamedTypeReferenceType':
_guid = guid
if _guid is None:
@@ -2554,7 +2556,7 @@ class NamedTypeReferenceType(Type):
@classmethod
def create_from_registered_type(
- cls, view: 'binaryview.BinaryView', name: QualifiedName, platform: '_platform.Platform' = None,
+ cls, view: 'binaryview.BinaryView', name: QualifiedName, platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'NamedTypeReferenceType':
_name = QualifiedName(name)._to_core_struct()
@@ -2644,7 +2646,7 @@ class NamedTypeReferenceType(Type):
class WideCharType(Type):
@classmethod
def create(
- cls, width: int, alternate_name: str = "", platform: '_platform.Platform' = None,
+ cls, width: int, alternate_name: str = "", platform: Optional['_platform.Platform'] = None,
confidence: int = core.max_confidence
) -> 'WideCharType':
"""
@@ -2696,7 +2698,7 @@ class TypeParserResult:
return f"<types: {self.types}, variables: {self.variables}, functions: {self.functions}>"
-def preprocess_source(source: str, filename: str = None,
+def preprocess_source(source: str, filename: Optional[str] = None,
include_dirs: Optional[List[str]] = None) -> Tuple[Optional[str], str]:
"""
``preprocess_source`` run the C preprocessor on the given source or source filename.