diff options
Diffstat (limited to 'scriptingprovider.cpp')
| -rw-r--r-- | scriptingprovider.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp index 5e6d1a02..ed010100 100644 --- a/scriptingprovider.cpp +++ b/scriptingprovider.cpp @@ -61,6 +61,7 @@ ScriptingInstance::ScriptingInstance(ScriptingProvider* provider) cb.setCurrentBasicBlock = SetCurrentBasicBlockCallback; cb.setCurrentAddress = SetCurrentAddressCallback; cb.setCurrentSelection = SetCurrentSelectionCallback; + cb.completeInput = CompleteInputCallback; AddRefForRegistration(); m_object = BNInitScriptingInstance(provider->GetObject(), &cb); } @@ -128,6 +129,13 @@ void ScriptingInstance::SetCurrentSelectionCallback(void* ctxt, uint64_t begin, } +char* ScriptingInstance::CompleteInputCallback(void* ctxt, const char* text, uint64_t state) +{ + ScriptingInstance* instance = (ScriptingInstance*)ctxt; + return BNAllocString(instance->CompleteInput(text, state).c_str()); +} + + void ScriptingInstance::DestroyInstance() { ReleaseForRegistration(); @@ -163,6 +171,12 @@ void ScriptingInstance::SetCurrentSelection(uint64_t, uint64_t) } +std::string ScriptingInstance::CompleteInput(const std::string&, uint64_t) +{ + return ""; +} + + void ScriptingInstance::Output(const string& text) { BNNotifyOutputForScriptingInstance(m_object, text.c_str()); @@ -199,6 +213,18 @@ void ScriptingInstance::UnregisterOutputListener(ScriptingOutputListener* listen } +std::string ScriptingInstance::GetDelimiters() +{ + return BNGetScriptingInstanceDelimiters(m_object); +} + + +void ScriptingInstance::SetDelimiters(const std::string& delimiters) +{ + BNSetScriptingInstanceDelimiters(m_object, delimiters.c_str()); +} + + CoreScriptingInstance::CoreScriptingInstance(BNScriptingInstance* instance): ScriptingInstance(instance) { } @@ -246,6 +272,15 @@ void CoreScriptingInstance::SetCurrentSelection(uint64_t begin, uint64_t end) } +std::string CoreScriptingInstance::CompleteInput(const std::string& text, uint64_t state) +{ + char* result = BNScriptingInstanceCompleteInput(m_object, text.c_str(), state); + std::string ret = result; + BNFreeString(result); + return ret; +} + + ScriptingProvider::ScriptingProvider(const string& name): m_nameForRegister(name) { } |
