From db48820f5fed420ad298278e8e6b055baa4ddf06 Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Fri, 13 Sep 2019 09:56:00 -0400 Subject: Type workflow improvements Expand type context for data renderers Add additional linearview helper routines for defining variables inside of structures fix unit tests --- type.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'type.cpp') diff --git a/type.cpp b/type.cpp index c5835ba9..3b1d3466 100644 --- a/type.cpp +++ b/type.cpp @@ -489,12 +489,6 @@ Confidence Type::IsConst() const } -bool Type::IsFloat() const -{ - return BNIsTypeFloatingPoint(m_object); -} - - Confidence Type::GetScope() const { BNMemberScopeWithConfidence result = BNTypeGetMemberScope(m_object); @@ -934,6 +928,12 @@ string Type::GetAutoDebugTypeIdSource() } +bool Type::IsReferenceOfType(BNNamedTypeReferenceClass refType) +{ + return (GetClass() == NamedTypeReferenceClass) && (GetNamedTypeReference()->GetTypeClass() == refType); +} + + QualifiedName Type::GetTypeName() const { BNQualifiedName name = BNTypeGetTypeName(m_object); @@ -1111,6 +1111,21 @@ bool Structure::GetMemberByName(const string& name, StructureMember& result) con } +bool Structure::GetMemberAtOffset(int64_t offset, StructureMember& result) const +{ + BNStructureMember* member = BNGetStructureMemberAtOffset(m_object, offset); + if (member) + { + result.type = new Type(BNNewTypeReference(member->type)); + result.name = member->name; + result.offset = member->offset; + BNFreeStructureMember(member); + return true; + } + return false; +} + + uint64_t Structure::GetWidth() const { return BNGetStructureWidth(m_object); -- cgit v1.3.1