From 990cface5a0b9b814f423e45449a7d5f3cb6c19d Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 1 Dec 2016 17:22:22 -0500 Subject: Adding APIs to manipulate structures --- type.cpp | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) (limited to 'type.cpp') diff --git a/type.cpp b/type.cpp index e0235664..7cc2757a 100644 --- a/type.cpp +++ b/type.cpp @@ -323,6 +323,12 @@ vector 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& includeDirs) { -- cgit v1.3.1