diff options
| author | bambu <bambu@revengsec.com> | 2016-07-02 14:34:31 -0400 |
|---|---|---|
| committer | bambu <bambu@revengsec.com> | 2016-07-02 14:34:31 -0400 |
| commit | 46fe170c40dd0de44b83ebbce673462b5de8760c (patch) | |
| tree | 104943992de2f194c7e2c6cf46f3153b98fbb133 /binaryview.cpp | |
| parent | 5abb8218e5cd2be9b4cefb16eebdee6caf8108c6 (diff) | |
| parent | a7eaa72caa4a5e3e7cd7ea7c32236c93b06d1442 (diff) | |
Merge remote-tracking branch 'upstream/dev' into dev
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp index 21a502ba..a3abc02a 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -180,6 +180,30 @@ Ref<Symbol> Symbol::ImportedFunctionFromImportAddressSymbol(Symbol* sym, uint64_ } +AnalysisCompletionEvent::AnalysisCompletionEvent(BinaryView* view, const std::function<void()>& callback): + m_callback(callback) +{ + m_object = BNAddAnalysisCompletionEvent(view->GetObject(), this, CompletionCallback); +} + + +void AnalysisCompletionEvent::CompletionCallback(void* ctxt) +{ + AnalysisCompletionEvent* event = (AnalysisCompletionEvent*)ctxt; + + unique_lock<recursive_mutex> lock(event->m_mutex); + event->m_callback(); + event->m_callback = []() {}; +} + + +void AnalysisCompletionEvent::Cancel() +{ + unique_lock<recursive_mutex> lock(m_mutex); + m_callback = []() {}; +} + + BinaryView::BinaryView(const std::string& typeName, FileMetadata* file) { BNCustomBinaryView view; @@ -1064,6 +1088,18 @@ vector<BNStringReference> BinaryView::GetStrings(uint64_t start, uint64_t len) } +Ref<AnalysisCompletionEvent> BinaryView::AddAnalysisCompletionEvent(const function<void()>& callback) +{ + return new AnalysisCompletionEvent(this, callback); +} + + +BNAnalysisProgress BinaryView::GetAnalysisProgress() +{ + return BNGetAnalysisProgress(m_object); +} + + BinaryData::BinaryData(FileMetadata* file): BinaryView(BNCreateBinaryDataView(file->GetObject())) { } |
