diff options
| author | Rusty Wagner <rusty@vector35.com> | 2015-08-28 20:12:08 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2015-08-28 20:12:08 -0400 |
| commit | 00c92fcf81f6144a35936855b5cc47c945fae321 (patch) | |
| tree | 0164383e9e05369f799880404d8c2453c0d0ec60 | |
| parent | 343eebe5ca7e6d19a365e81c5646007cdc89cc8f (diff) | |
Binary view API cleanup, and add reader/writer class to Python API
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | binaryview.cpp | 9 | ||||
| -rw-r--r-- | binaryviewtype.cpp | 15 |
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; |
