summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-08-28 20:12:08 -0400
committerRusty Wagner <rusty@vector35.com>2015-08-28 20:12:08 -0400
commit00c92fcf81f6144a35936855b5cc47c945fae321 (patch)
tree0164383e9e05369f799880404d8c2453c0d0ec60
parent343eebe5ca7e6d19a365e81c5646007cdc89cc8f (diff)
Binary view API cleanup, and add reader/writer class to Python API
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryview.cpp9
-rw-r--r--binaryviewtype.cpp15
3 files changed, 26 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index fe084926..2c6f4b03 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -491,6 +491,7 @@ namespace BinaryNinja
FileMetadata* GetFile() const { return m_file; }
BNBinaryView* GetViewObject() const { return m_view; }
+ std::string GetTypeName() const;
bool IsModified() const;
bool IsAnalysisChanged() const;
@@ -618,6 +619,7 @@ namespace BinaryNinja
static void Register(BinaryViewType* type);
static Ref<BinaryViewType> GetByName(const std::string& name);
+ static std::vector<Ref<BinaryViewType>> GetViewTypes();
static std::vector<Ref<BinaryViewType>> GetViewTypesForData(BinaryView* data);
static void RegisterArchitecture(const std::string& name, uint32_t id, Architecture* arch);
diff --git a/binaryview.cpp b/binaryview.cpp
index 844bc59c..e9bf3588 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -371,6 +371,15 @@ void BinaryView::NotifyDataRemoved(uint64_t offset, uint64_t len)
}
+string BinaryView::GetTypeName() const
+{
+ char* str = BNGetViewType(m_view);
+ string result = str;
+ BNFreeString(str);
+ return result;
+}
+
+
bool BinaryView::IsModified() const
{
return BNIsViewModified(m_view);
diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp
index 0bd17e5f..86a35520 100644
--- a/binaryviewtype.cpp
+++ b/binaryviewtype.cpp
@@ -53,6 +53,21 @@ Ref<BinaryViewType> BinaryViewType::GetByName(const string& name)
}
+vector<Ref<BinaryViewType>> BinaryViewType::GetViewTypes()
+{
+ BNBinaryViewType** types;
+ size_t count;
+ types = BNGetBinaryViewTypes(&count);
+
+ vector<Ref<BinaryViewType>> result;
+ for (size_t i = 0; i < count; i++)
+ result.push_back(new CoreBinaryViewType(types[i]));
+
+ BNFreeBinaryViewTypeList(types);
+ return result;
+}
+
+
vector<Ref<BinaryViewType>> BinaryViewType::GetViewTypesForData(BinaryView* data)
{
BNBinaryViewType** types;