summaryrefslogtreecommitdiff
path: root/type.cpp
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-09-13 09:56:00 -0400
committerPeter LaFosse <peter@vector35.com>2019-11-15 21:10:58 -0500
commitdb48820f5fed420ad298278e8e6b055baa4ddf06 (patch)
tree2b41a6f081f924b622887ddc42f5f579eebbd849 /type.cpp
parent3c329e77e0318db070099be2d1731c4e7ac510ba (diff)
Type workflow improvements
Expand type context for data renderers Add additional linearview helper routines for defining variables inside of structures fix unit tests
Diffstat (limited to 'type.cpp')
-rw-r--r--type.cpp27
1 files changed, 21 insertions, 6 deletions
diff --git a/type.cpp b/type.cpp
index c5835ba9..3b1d3466 100644
--- a/type.cpp
+++ b/type.cpp
@@ -489,12 +489,6 @@ Confidence<bool> Type::IsConst() const
}
-bool Type::IsFloat() const
-{
- return BNIsTypeFloatingPoint(m_object);
-}
-
-
Confidence<BNMemberScope> 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);