From 2c0f75b954dea781b7ac68eee0ec7e8fbeadee4e Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Mon, 24 Jan 2022 19:51:46 -0500 Subject: Fix bug and add test for NamedTypeReferenceBuilder.__repr__ Make Type/TypeBuilder.__repr__s consistent --- python/types.py | 62 ++++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 27 deletions(-) (limited to 'python') diff --git a/python/types.py b/python/types.py index b058cc2c..3f832fe4 100644 --- a/python/types.py +++ b/python/types.py @@ -344,8 +344,8 @@ class FunctionParameter: def __repr__(self): if (self.location is not None) and (self.location.name != self.name): - return "%s %s%s @ %s" % (self.type.immutable_copy().get_string_before_name(), self.name, self.type.immutable_copy().get_string_after_name(), self.location.name) - return "%s %s%s" % (self.type.immutable_copy().get_string_before_name(), self.name, self.type.immutable_copy().get_string_after_name()) + return f"{self.type.immutable_copy().get_string_before_name()} {self.name}{self.type.immutable_copy().get_string_after_name()} @ {self.location.name}" + return f"{self.type.immutable_copy().get_string_before_name()} {self.name}{self.type.immutable_copy().get_string_after_name()}" def immutable_copy(self) -> 'FunctionParameter': return FunctionParameter(self.type.immutable_copy(), self.name, self.location) @@ -537,6 +537,14 @@ class TypeBuilder: def __ne__(self, other:'TypeBuilder') -> bool: return not self.__eq__(other) + def __repr__(self): + if self._confidence < core.max_confidence: + return f"" + return f"" + + def __str__(self): + return str(self.immutable_copy()) + @property def handle(self) -> core.BNTypeHandle: return self.immutable_copy().handle @@ -1126,9 +1134,6 @@ class StructureBuilder(TypeBuilder): def type(self, value:StructureVariant) -> None: core.BNSetStructureBuilderType(self.builder_handle, value) - def __repr__(self): - return f"" - def __getitem__(self, name:str) -> Optional[StructureMember]: member = core.BNGetStructureBuilderMemberByName(self.builder_handle, name) if member is None: @@ -1248,9 +1253,6 @@ class EnumerationBuilder(TypeBuilder): assert handle is not None, "core.BNCreateEnumerationType returned None" return EnumerationType(handle, self.platform, self.confidence) - def __repr__(self): - return "" % repr(self.members) - @property def signed(self) -> BoolWithConfidence: """Whether type is signed (read/write)""" @@ -1434,14 +1436,17 @@ class NamedTypeReferenceBuilder(TypeBuilder): def __repr__(self): if self.named_type_class == NamedTypeReferenceClass.TypedefNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.StructNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.UnionNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.EnumNamedTypeClass: - return f"" - return "" + return f"" + elif self.named_type_class == NamedTypeReferenceClass.StructNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.UnionNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.ClassNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.EnumNamedTypeClass: + return f"" + else: + return f"" class Type: @@ -1475,8 +1480,8 @@ class Type: def __repr__(self): if self._confidence < core.max_confidence: - return f"" - return f"" + return f"" + return f"" def __str__(self): platform = None @@ -1801,7 +1806,7 @@ class Type: raise NotImplementedError("Name not implemented for this type") @staticmethod - def generate_auto_type_id(source, name:str) -> str: + def generate_auto_type_id(source:str, name:str) -> str: _name = QualifiedName(name)._to_core_struct() return core.BNGenerateAutoTypeId(source, _name) @@ -2324,14 +2329,17 @@ class NamedTypeReferenceType(Type): def __repr__(self): if self.named_type_class == NamedTypeReferenceClass.TypedefNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.StructNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.UnionNamedTypeClass: - return f"" - if self.named_type_class == NamedTypeReferenceClass.EnumNamedTypeClass: - return f"" - return "" + return f"" + elif self.named_type_class == NamedTypeReferenceClass.StructNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.UnionNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.ClassNamedTypeClass: + return f"" + elif self.named_type_class == NamedTypeReferenceClass.EnumNamedTypeClass: + return f"" + else: + return f"" def __str__(self): name = self.registered_name -- cgit v1.3.1