ScriptInterpreter.h revision 52ebc0aab1fdecb634801deceeddd71a14c2148c
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===-- ScriptInterpreter.h -------------------------------------*- C++ -*-===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef liblldb_ScriptInterpreter_h_ 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define liblldb_ScriptInterpreter_h_ 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/lldb-private.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/Core/Broadcaster.h" 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "lldb/Core/Error.h" 17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "lldb/Utility/PseudoTerminal.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace lldb_private { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ScriptInterpreterObject 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptInterpreterObject() : 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_object(NULL) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptInterpreterObject(void* obj) : 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_object(obj) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptInterpreterObject(const ScriptInterpreterObject& rhs) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : m_object(rhs.m_object) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void* 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetObject() 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_object; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) operator bool () 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_object != NULL; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptInterpreterObject& 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) operator = (const ScriptInterpreterObject& rhs) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (this != &rhs) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_object = rhs.m_object; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return *this; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~ScriptInterpreterObject() 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) {} 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)protected: 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void* m_object; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ScriptInterpreter 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void (*SWIGInitCallback) (void); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGBreakpointCallbackFunction) (const char *python_function_name, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::StackFrameSP& frame_sp, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::BreakpointLocationSP &bp_loc_sp); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGWatchpointCallbackFunction) (const char *python_function_name, 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::StackFrameSP& frame_sp, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::WatchpointSP &wp_sp); 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGPythonTypeScriptCallbackFunction) (const char *python_function_name, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *session_dictionary, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::ValueObjectSP& valobj_sp, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void** pyfunct_wrapper, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string& retval); 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void* (*SWIGPythonCreateSyntheticProvider) (const char *python_class_name, 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::ValueObjectSP& valobj_sp); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void* (*SWIGPythonCreateOSPlugin) (const char *python_class_name, 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const lldb::ProcessSP& process_sp); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef uint32_t (*SWIGPythonCalculateNumChildren) (void *implementor); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void* (*SWIGPythonGetChildAtIndex) (void *implementor, uint32_t idx); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef int (*SWIGPythonGetIndexOfChildWithName) (void *implementor, const char* child_name); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef void* (*SWIGPythonCastPyObjectToSBValue) (void* data); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGPythonUpdateSynthProviderInstance) (void* data); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGPythonMightHaveChildrenSynthProviderInstance) (void* data); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGPythonCallCommand) (const char *python_function_name, 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb::DebuggerSP& debugger, 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char* args, 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string& err_msg, 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb_private::CommandReturnObject& cmd_retobj); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef bool (*SWIGPythonCallModuleInit) (const char *python_module_name, 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *session_dictionary_name, 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lldb::DebuggerSP& debugger); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef enum 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeCharPtr, 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeBool, 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeShortInt, 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeShortIntUnsigned, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeInt, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeIntUnsigned, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeLongInt, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeLongIntUnsigned, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeLongLong, 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeLongLongUnsigned, 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeFloat, 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeDouble, 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeChar, 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) eScriptReturnTypeCharStrOrNone 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } ScriptReturnType; 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ScriptInterpreter (); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) struct ExecuteScriptOptions 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteScriptOptions () : 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_enable_io(true), 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_set_lldb_globals(true), 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_maskout_errors(true) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetEnableIO () const 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_enable_io; 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetSetLLDBGlobals () const 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_set_lldb_globals; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMaskoutErrors () const 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return m_maskout_errors; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteScriptOptions& 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetEnableIO (bool enable) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_enable_io = enable; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return *this; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteScriptOptions& 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetSetLLDBGlobals (bool set) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_set_lldb_globals = set; 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return *this; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteScriptOptions& 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetMaskoutErrors (bool maskout) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) m_maskout_errors = maskout; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return *this; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool m_enable_io; 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool m_set_lldb_globals; 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool m_maskout_errors; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteOneLine (const char *command, 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CommandReturnObject *result, 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ExecuteScriptOptions &options = ExecuteScriptOptions()) = 0; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteInterpreterLoop () = 0; 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteOneLineWithReturn (const char *in_string, 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ScriptReturnType return_type, 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void *ret_value, 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ExecuteScriptOptions &options = ExecuteScriptOptions()) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExecuteMultipleLines (const char *in_string, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ExecuteScriptOptions &options = ExecuteScriptOptions()) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 212 return true; 213 } 214 215 virtual bool 216 ExportFunctionDefinitionToInterpreter (StringList &function_def) 217 { 218 return false; 219 } 220 221 virtual bool 222 GenerateBreakpointCommandCallbackData (StringList &input, std::string& output) 223 { 224 return false; 225 } 226 227 virtual bool 228 GenerateWatchpointCommandCallbackData (StringList &input, std::string& output) 229 { 230 return false; 231 } 232 233 virtual bool 234 GenerateTypeScriptFunction (const char* oneliner, std::string& output, void* name_token = NULL) 235 { 236 return false; 237 } 238 239 virtual bool 240 GenerateTypeScriptFunction (StringList &input, std::string& output, void* name_token = NULL) 241 { 242 return false; 243 } 244 245 virtual bool 246 GenerateScriptAliasFunction (StringList &input, std::string& output) 247 { 248 return false; 249 } 250 251 virtual bool 252 GenerateTypeSynthClass (StringList &input, std::string& output, void* name_token = NULL) 253 { 254 return false; 255 } 256 257 virtual bool 258 GenerateTypeSynthClass (const char* oneliner, std::string& output, void* name_token = NULL) 259 { 260 return false; 261 } 262 263 virtual lldb::ScriptInterpreterObjectSP 264 CreateSyntheticScriptedProvider (const char *class_name, 265 lldb::ValueObjectSP valobj) 266 { 267 return lldb::ScriptInterpreterObjectSP(); 268 } 269 270 virtual lldb::ScriptInterpreterObjectSP 271 OSPlugin_CreatePluginObject (const char *class_name, 272 lldb::ProcessSP process_sp) 273 { 274 return lldb::ScriptInterpreterObjectSP(); 275 } 276 277 virtual lldb::ScriptInterpreterObjectSP 278 OSPlugin_RegisterInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp) 279 { 280 return lldb::ScriptInterpreterObjectSP(); 281 } 282 283 virtual lldb::ScriptInterpreterObjectSP 284 OSPlugin_ThreadsInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp) 285 { 286 return lldb::ScriptInterpreterObjectSP(); 287 } 288 289 virtual lldb::ScriptInterpreterObjectSP 290 OSPlugin_RegisterContextData (lldb::ScriptInterpreterObjectSP os_plugin_object_sp, 291 lldb::tid_t thread_id) 292 { 293 return lldb::ScriptInterpreterObjectSP(); 294 } 295 296 virtual lldb::ScriptInterpreterObjectSP 297 OSPlugin_CreateThread (lldb::ScriptInterpreterObjectSP os_plugin_object_sp, 298 lldb::tid_t tid, 299 lldb::addr_t context) 300 { 301 return lldb::ScriptInterpreterObjectSP(); 302 } 303 304 virtual bool 305 GenerateFunction(const char *signature, const StringList &input) 306 { 307 return false; 308 } 309 310 virtual void 311 CollectDataForBreakpointCommandCallback (BreakpointOptions *bp_options, 312 CommandReturnObject &result); 313 314 virtual void 315 CollectDataForWatchpointCommandCallback (WatchpointOptions *wp_options, 316 CommandReturnObject &result); 317 318 /// Set a one-liner as the callback for the breakpoint. 319 virtual void 320 SetBreakpointCommandCallback (BreakpointOptions *bp_options, 321 const char *oneliner) 322 { 323 return; 324 } 325 326 /// Set a one-liner as the callback for the watchpoint. 327 virtual void 328 SetWatchpointCommandCallback (WatchpointOptions *wp_options, 329 const char *oneliner) 330 { 331 return; 332 } 333 334 virtual bool 335 GetScriptedSummary (const char *function_name, 336 lldb::ValueObjectSP valobj, 337 lldb::ScriptInterpreterObjectSP& callee_wrapper_sp, 338 std::string& retval) 339 { 340 return false; 341 } 342 343 virtual uint32_t 344 CalculateNumChildren (const lldb::ScriptInterpreterObjectSP& implementor) 345 { 346 return 0; 347 } 348 349 virtual lldb::ValueObjectSP 350 GetChildAtIndex (const lldb::ScriptInterpreterObjectSP& implementor, uint32_t idx) 351 { 352 return lldb::ValueObjectSP(); 353 } 354 355 virtual int 356 GetIndexOfChildWithName (const lldb::ScriptInterpreterObjectSP& implementor, const char* child_name) 357 { 358 return UINT32_MAX; 359 } 360 361 virtual bool 362 UpdateSynthProviderInstance (const lldb::ScriptInterpreterObjectSP& implementor) 363 { 364 return false; 365 } 366 367 virtual bool 368 MightHaveChildrenSynthProviderInstance (const lldb::ScriptInterpreterObjectSP& implementor) 369 { 370 return true; 371 } 372 373 virtual bool 374 RunScriptBasedCommand (const char* impl_function, 375 const char* args, 376 ScriptedCommandSynchronicity synchronicity, 377 lldb_private::CommandReturnObject& cmd_retobj, 378 Error& error) 379 { 380 return false; 381 } 382 383 virtual bool 384 GetDocumentationForItem (const char* item, std::string& dest) 385 { 386 dest.clear(); 387 return false; 388 } 389 390 virtual bool 391 CheckObjectExists (const char* name) 392 { 393 return false; 394 } 395 396 virtual bool 397 LoadScriptingModule (const char* filename, 398 bool can_reload, 399 bool init_session, 400 lldb_private::Error& error) 401 { 402 error.SetErrorString("loading unimplemented"); 403 return false; 404 } 405 406 virtual lldb::ScriptInterpreterObjectSP 407 MakeScriptObject (void* object) 408 { 409 return lldb::ScriptInterpreterObjectSP(new ScriptInterpreterObject(object)); 410 } 411 412 const char * 413 GetScriptInterpreterPtyName (); 414 415 int 416 GetMasterFileDescriptor (); 417 418 CommandInterpreter & 419 GetCommandInterpreter (); 420 421 static std::string 422 LanguageToString (lldb::ScriptLanguage language); 423 424 static void 425 InitializeInterpreter (SWIGInitCallback python_swig_init_callback); 426 427 static void 428 TerminateInterpreter (); 429 430 virtual void 431 ResetOutputFileHandle (FILE *new_fh) { } //By default, do nothing. 432 433protected: 434 CommandInterpreter &m_interpreter; 435 lldb::ScriptLanguage m_script_lang; 436}; 437 438} // namespace lldb_private 439 440#endif // #ifndef liblldb_ScriptInterpreter_h_ 441