ScriptInterpreter.cpp revision 263363
1//===-- ScriptInterpreter.cpp -----------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/lldb-python.h" 11 12#include "lldb/Interpreter/ScriptInterpreter.h" 13 14#include <string> 15#include <stdlib.h> 16#include <stdio.h> 17 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" 24 25using namespace lldb; 26using namespace lldb_private; 27 28ScriptInterpreter::ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang) : 29 m_interpreter (interpreter), 30 m_script_lang (script_lang) 31{ 32} 33 34ScriptInterpreter::~ScriptInterpreter () 35{ 36} 37 38CommandInterpreter & 39ScriptInterpreter::GetCommandInterpreter () 40{ 41 return m_interpreter; 42} 43 44void 45ScriptInterpreter::CollectDataForBreakpointCommandCallback 46( 47 BreakpointOptions *bp_options, 48 CommandReturnObject &result 49) 50{ 51 result.SetStatus (eReturnStatusFailed); 52 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented."); 53} 54 55void 56ScriptInterpreter::CollectDataForWatchpointCommandCallback 57( 58 WatchpointOptions *bp_options, 59 CommandReturnObject &result 60) 61{ 62 result.SetStatus (eReturnStatusFailed); 63 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented."); 64} 65 66std::string 67ScriptInterpreter::LanguageToString (lldb::ScriptLanguage language) 68{ 69 std::string return_value; 70 71 switch (language) 72 { 73 case eScriptLanguageNone: 74 return_value = "None"; 75 break; 76 case eScriptLanguagePython: 77 return_value = "Python"; 78 break; 79 } 80 81 return return_value; 82} 83 84std::unique_ptr<ScriptInterpreterLocker> 85ScriptInterpreter::AcquireInterpreterLock () 86{ 87 return std::unique_ptr<ScriptInterpreterLocker>(new ScriptInterpreterLocker()); 88} 89 90void 91ScriptInterpreter::InitializeInterpreter (SWIGInitCallback python_swig_init_callback, 92 SWIGBreakpointCallbackFunction swig_breakpoint_callback, 93 SWIGWatchpointCallbackFunction swig_watchpoint_callback, 94 SWIGPythonTypeScriptCallbackFunction swig_typescript_callback, 95 SWIGPythonCreateSyntheticProvider swig_synthetic_script, 96 SWIGPythonCalculateNumChildren swig_calc_children, 97 SWIGPythonGetChildAtIndex swig_get_child_index, 98 SWIGPythonGetIndexOfChildWithName swig_get_index_child, 99 SWIGPythonCastPyObjectToSBValue swig_cast_to_sbvalue , 100 SWIGPythonGetValueObjectSPFromSBValue swig_get_valobj_sp_from_sbvalue, 101 SWIGPythonUpdateSynthProviderInstance swig_update_provider, 102 SWIGPythonMightHaveChildrenSynthProviderInstance swig_mighthavechildren_provider, 103 SWIGPythonCallCommand swig_call_command, 104 SWIGPythonCallModuleInit swig_call_module_init, 105 SWIGPythonCreateOSPlugin swig_create_os_plugin, 106 SWIGPythonScriptKeyword_Process swig_run_script_keyword_process, 107 SWIGPythonScriptKeyword_Thread swig_run_script_keyword_thread, 108 SWIGPythonScriptKeyword_Target swig_run_script_keyword_target, 109 SWIGPythonScriptKeyword_Frame swig_run_script_keyword_frame, 110 SWIGPython_GetDynamicSetting swig_plugin_get) 111{ 112#ifndef LLDB_DISABLE_PYTHON 113 ScriptInterpreterPython::InitializeInterpreter (python_swig_init_callback, 114 swig_breakpoint_callback, 115 swig_watchpoint_callback, 116 swig_typescript_callback, 117 swig_synthetic_script, 118 swig_calc_children, 119 swig_get_child_index, 120 swig_get_index_child, 121 swig_cast_to_sbvalue , 122 swig_get_valobj_sp_from_sbvalue, 123 swig_update_provider, 124 swig_mighthavechildren_provider, 125 swig_call_command, 126 swig_call_module_init, 127 swig_create_os_plugin, 128 swig_run_script_keyword_process, 129 swig_run_script_keyword_thread, 130 swig_run_script_keyword_target, 131 swig_run_script_keyword_frame, 132 swig_plugin_get); 133#endif // #ifndef LLDB_DISABLE_PYTHON 134} 135 136void 137ScriptInterpreter::TerminateInterpreter () 138{ 139#ifndef LLDB_DISABLE_PYTHON 140 ScriptInterpreterPython::TerminateInterpreter (); 141#endif // #ifndef LLDB_DISABLE_PYTHON 142} 143 144