summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorbambu <bambu@revengsec.com>2016-07-02 14:34:31 -0400
committerbambu <bambu@revengsec.com>2016-07-02 14:34:31 -0400
commit46fe170c40dd0de44b83ebbce673462b5de8760c (patch)
tree104943992de2f194c7e2c6cf46f3153b98fbb133 /binaryview.cpp
parent5abb8218e5cd2be9b4cefb16eebdee6caf8108c6 (diff)
parenta7eaa72caa4a5e3e7cd7ea7c32236c93b06d1442 (diff)
Merge remote-tracking branch 'upstream/dev' into dev
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp36
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()))
{
}