summaryrefslogtreecommitdiff
path: root/scriptingprovider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scriptingprovider.cpp')
-rw-r--r--scriptingprovider.cpp21
1 files changed, 21 insertions, 0 deletions
diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp
index 4c11ccc4..76cb67c2 100644
--- a/scriptingprovider.cpp
+++ b/scriptingprovider.cpp
@@ -54,6 +54,8 @@ ScriptingInstance::ScriptingInstance(ScriptingProvider* provider)
BNScriptingInstanceCallbacks cb;
cb.context = this;
cb.destroyInstance = DestroyInstanceCallback;
+ cb.externalRefTaken = nullptr;
+ cb.externalRefReleased = nullptr;
cb.executeScriptInput = ExecuteScriptInputCallback;
cb.cancelScriptInput = CancelScriptInputCallback;
cb.setCurrentBinaryView = SetCurrentBinaryViewCallback;
@@ -62,6 +64,7 @@ ScriptingInstance::ScriptingInstance(ScriptingProvider* provider)
cb.setCurrentAddress = SetCurrentAddressCallback;
cb.setCurrentSelection = SetCurrentSelectionCallback;
cb.completeInput = CompleteInputCallback;
+ cb.stop = StopCallback;
AddRefForRegistration();
m_object = BNInitScriptingInstance(provider->GetObject(), &cb);
}
@@ -136,6 +139,13 @@ char* ScriptingInstance::CompleteInputCallback(void* ctxt, const char* text, uin
}
+void ScriptingInstance::StopCallback(void* ctxt)
+{
+ ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ instance->Stop();
+}
+
+
void ScriptingInstance::DestroyInstance()
{
ReleaseForRegistration();
@@ -225,6 +235,11 @@ void ScriptingInstance::SetDelimiters(const std::string& delimiters)
}
+void ScriptingInstance::Stop()
+{
+}
+
+
CoreScriptingInstance::CoreScriptingInstance(BNScriptingInstance* instance): ScriptingInstance(instance)
{
}
@@ -281,6 +296,12 @@ std::string CoreScriptingInstance::CompleteInput(const std::string& text, uint64
}
+void CoreScriptingInstance::Stop()
+{
+ BNStopScriptingInstance(m_object);
+}
+
+
ScriptingProvider::ScriptingProvider(const string& name, const string& apiName): m_nameForRegister(name), m_apiNameForRegister(apiName)
{
}