1 //===-- ScriptInterpreter.cpp -----------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "lldb/lldb-python.h"
12 #include "lldb/Interpreter/ScriptInterpreter.h"
18 #include "lldb/Core/Error.h"
19 #include "lldb/Core/Stream.h"
20 #include "lldb/Core/StringList.h"
21 #include "lldb/Interpreter/CommandReturnObject.h"
22 #include "lldb/Interpreter/ScriptInterpreterPython.h"
23 #include "lldb/Utility/PseudoTerminal.h"
26 using namespace lldb_private;
28 ScriptInterpreter::ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang) :
29 m_interpreter (interpreter),
30 m_script_lang (script_lang)
34 ScriptInterpreter::~ScriptInterpreter ()
39 ScriptInterpreter::GetCommandInterpreter ()
45 ScriptInterpreter::CollectDataForBreakpointCommandCallback
47 std::vector<BreakpointOptions *> &bp_options_vec,
48 CommandReturnObject &result
51 result.SetStatus (eReturnStatusFailed);
52 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
56 ScriptInterpreter::CollectDataForWatchpointCommandCallback
58 WatchpointOptions *bp_options,
59 CommandReturnObject &result
62 result.SetStatus (eReturnStatusFailed);
63 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
67 ScriptInterpreter::LanguageToString (lldb::ScriptLanguage language)
69 std::string return_value;
73 case eScriptLanguageNone:
74 return_value = "None";
76 case eScriptLanguagePython:
77 return_value = "Python";
85 ScriptInterpreter::SetBreakpointCommandCallback (std::vector<BreakpointOptions *> &bp_options_vec,
86 const char *callback_text)
89 for (BreakpointOptions *bp_options : bp_options_vec)
91 return_error = SetBreakpointCommandCallback(bp_options, callback_text);
92 if (return_error.Success())
99 ScriptInterpreter::SetBreakpointCommandCallbackFunction (std::vector<BreakpointOptions *> &bp_options_vec,
100 const char *function_name)
102 for (BreakpointOptions *bp_options : bp_options_vec)
104 SetBreakpointCommandCallbackFunction(bp_options, function_name);
108 std::unique_ptr<ScriptInterpreterLocker>
109 ScriptInterpreter::AcquireInterpreterLock ()
111 return std::unique_ptr<ScriptInterpreterLocker>(new ScriptInterpreterLocker());
115 ScriptInterpreter::InitializeInterpreter (SWIGInitCallback python_swig_init_callback,
116 SWIGBreakpointCallbackFunction swig_breakpoint_callback,
117 SWIGWatchpointCallbackFunction swig_watchpoint_callback,
118 SWIGPythonTypeScriptCallbackFunction swig_typescript_callback,
119 SWIGPythonCreateSyntheticProvider swig_synthetic_script,
120 SWIGPythonCalculateNumChildren swig_calc_children,
121 SWIGPythonGetChildAtIndex swig_get_child_index,
122 SWIGPythonGetIndexOfChildWithName swig_get_index_child,
123 SWIGPythonCastPyObjectToSBValue swig_cast_to_sbvalue ,
124 SWIGPythonGetValueObjectSPFromSBValue swig_get_valobj_sp_from_sbvalue,
125 SWIGPythonUpdateSynthProviderInstance swig_update_provider,
126 SWIGPythonMightHaveChildrenSynthProviderInstance swig_mighthavechildren_provider,
127 SWIGPythonGetValueSynthProviderInstance swig_getvalue_provider,
128 SWIGPythonCallCommand swig_call_command,
129 SWIGPythonCallModuleInit swig_call_module_init,
130 SWIGPythonCreateOSPlugin swig_create_os_plugin,
131 SWIGPythonScriptKeyword_Process swig_run_script_keyword_process,
132 SWIGPythonScriptKeyword_Thread swig_run_script_keyword_thread,
133 SWIGPythonScriptKeyword_Target swig_run_script_keyword_target,
134 SWIGPythonScriptKeyword_Frame swig_run_script_keyword_frame,
135 SWIGPythonScriptKeyword_Value swig_run_script_keyword_value,
136 SWIGPython_GetDynamicSetting swig_plugin_get,
137 SWIGPythonCreateScriptedThreadPlan swig_thread_plan_script,
138 SWIGPythonCallThreadPlan swig_call_thread_plan)
140 #ifndef LLDB_DISABLE_PYTHON
141 ScriptInterpreterPython::InitializeInterpreter (python_swig_init_callback,
142 swig_breakpoint_callback,
143 swig_watchpoint_callback,
144 swig_typescript_callback,
145 swig_synthetic_script,
147 swig_get_child_index,
148 swig_get_index_child,
149 swig_cast_to_sbvalue ,
150 swig_get_valobj_sp_from_sbvalue,
151 swig_update_provider,
152 swig_mighthavechildren_provider,
153 swig_getvalue_provider,
155 swig_call_module_init,
156 swig_create_os_plugin,
157 swig_run_script_keyword_process,
158 swig_run_script_keyword_thread,
159 swig_run_script_keyword_target,
160 swig_run_script_keyword_frame,
161 swig_run_script_keyword_value,
163 swig_thread_plan_script,
164 swig_call_thread_plan);
165 #endif // #ifndef LLDB_DISABLE_PYTHON