summaryrefslogtreecommitdiff
path: root/activity.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2021-08-13 18:48:51 -0400
committerBrian Potchik <brian@vector35.com>2021-08-13 18:48:51 -0400
commit801b4138784a45643a7201b7e54105ea5eb3b6c4 (patch)
tree02916c8e665e7dbc16958b55abe08ff48372abf2 /activity.cpp
parentac70b362bb4f15b1d1eeced7a44a222f663e695f (diff)
Workflows early preview.
Diffstat (limited to 'activity.cpp')
-rw-r--r--activity.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/activity.cpp b/activity.cpp
new file mode 100644
index 00000000..31584343
--- /dev/null
+++ b/activity.cpp
@@ -0,0 +1,41 @@
+#include "binaryninjaapi.h"
+#include <string>
+
+using namespace BinaryNinja;
+using namespace std;
+
+
+Activity::Activity(const string& name, const std::function<void(Ref<AnalysisContext> analysisContext)>& action): m_action(action)
+{
+ //LogError("API-Side Activity Constructed!");
+ m_object = BNCreateActivity(name.c_str(), this, Run);
+}
+
+
+Activity::Activity(BNActivity* activity)
+{
+ m_object = BNNewActivityReference(activity);
+}
+
+
+Activity::~Activity()
+{
+ //LogError("API-Side Activity Destructed!");
+}
+
+
+void Activity::Run(void* ctxt, BNAnalysisContext* analysisContext)
+{
+ Activity* activity = (Activity*)ctxt;
+ Ref<AnalysisContext> ac = new AnalysisContext(BNNewAnalysisContextReference(analysisContext));
+ activity->m_action(ac);
+}
+
+
+string Activity::GetName() const
+{
+ char* name = BNActivityGetName(m_object);
+ string result = name;
+ BNFreeString(name);
+ return result;
+}