summaryrefslogtreecommitdiff
path: root/type.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2016-12-01 17:22:22 -0500
committerRusty Wagner <rusty@vector35.com>2016-12-01 17:22:22 -0500
commit990cface5a0b9b814f423e45449a7d5f3cb6c19d (patch)
treea3b401c7d1f6fcb75dc2408cb522c2feb4172a86 /type.cpp
parenteef9d1eff05975c31862db4157ac2f1b2bb30502 (diff)
Adding APIs to manipulate structures
Diffstat (limited to 'type.cpp')
-rw-r--r--type.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/type.cpp b/type.cpp
index e0235664..7cc2757a 100644
--- a/type.cpp
+++ b/type.cpp
@@ -323,6 +323,12 @@ vector<string> UnknownType::GetName() const
}
+Structure::Structure()
+{
+ m_object = BNCreateStructure();
+}
+
+
Structure::Structure(BNStructure* s)
{
m_object = s;
@@ -382,12 +388,24 @@ uint64_t Structure::GetWidth() const
}
+void Structure::SetWidth(size_t width)
+{
+ BNSetStructureWidth(m_object, width);
+}
+
+
size_t Structure::GetAlignment() const
{
return BNGetStructureAlignment(m_object);
}
+void Structure::SetAlignment(size_t align)
+{
+ BNSetStructureAlignment(m_object, align);
+}
+
+
bool Structure::IsPacked() const
{
return BNIsStructurePacked(m_object);
@@ -430,6 +448,12 @@ void Structure::RemoveMember(size_t idx)
}
+void Structure::ReplaceMember(size_t idx, Type* type, const std::string& name)
+{
+ BNReplaceStructureMember(m_object, idx, type->GetObject(), name.c_str());
+}
+
+
Enumeration::Enumeration(BNEnumeration* e)
{
m_object = e;
@@ -494,6 +518,18 @@ void Enumeration::AddMemberWithValue(const string& name, uint64_t value)
}
+void Enumeration::RemoveMember(size_t idx)
+{
+ BNRemoveEnumerationMember(m_object, idx);
+}
+
+
+void Enumeration::ReplaceMember(size_t idx, const string& name, uint64_t value)
+{
+ BNReplaceEnumerationMember(m_object, idx, name.c_str(), value);
+}
+
+
bool BinaryNinja::PreprocessSource(const string& source, const string& fileName, string& output, string& errors,
const vector<string>& includeDirs)
{