ScriptInterpreter.h revision 1414aba4ae30f89c2513bdbbb56c281cec014902
1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao//===-- ScriptInterpreter.h -------------------------------------*- C++ -*-===// 2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// 3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// The LLVM Compiler Infrastructure 4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// 5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// This file is distributed under the University of Illinois Open Source 6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// License. See LICENSE.TXT for details. 7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// 8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao//===----------------------------------------------------------------------===// 9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#ifndef liblldb_ScriptInterpreter_h_ 11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define liblldb_ScriptInterpreter_h_ 12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include "lldb/lldb-private.h" 14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include "lldb/Core/Broadcaster.h" 16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include "lldb/Core/Error.h" 17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include "lldb/Utility/PseudoTerminal.h" 19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaonamespace lldb_private { 22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoclass ScriptInterpreterObject 24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{ 25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaopublic: 26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreterObject() : 27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_object(NULL) 28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao {} 29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreterObject(void* obj) : 31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_object(obj) 32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao {} 33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreterObject(const ScriptInterpreterObject& rhs) 35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao : m_object(rhs.m_object) 36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao {} 37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void* 39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GetObject() 40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return m_object; 42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao operator bool () 45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 46ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return m_object != NULL; 47ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 48ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 49ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreterObject& 50ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao operator = (const ScriptInterpreterObject& rhs) 51ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 52ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao if (this != &rhs) 53ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_object = rhs.m_object; 54ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return *this; 55ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 56ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 57ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual 58ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ~ScriptInterpreterObject() 59ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao {} 60ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 61ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoprotected: 62ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void* m_object; 63ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 64ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 65ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoclass ScriptInterpreterLocker 66ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{ 67ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaopublic: 68ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 69ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreterLocker () 70ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 71ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 72ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 73ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual ~ScriptInterpreterLocker () 74ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 75ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 76ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoprivate: 77ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao DISALLOW_COPY_AND_ASSIGN (ScriptInterpreterLocker); 78ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}; 79ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 80ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 81ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoclass ScriptInterpreter 82ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{ 83ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaopublic: 84ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 85ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef void (*SWIGInitCallback) (void); 86ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 87ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGBreakpointCallbackFunction) (const char *python_function_name, 88ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 89ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::StackFrameSP& frame_sp, 90ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::BreakpointLocationSP &bp_loc_sp); 91ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 92ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGWatchpointCallbackFunction) (const char *python_function_name, 93ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 94ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::StackFrameSP& frame_sp, 95ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::WatchpointSP &wp_sp); 96ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 97ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGPythonTypeScriptCallbackFunction) (const char *python_function_name, 98ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void *session_dictionary, 99ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::ValueObjectSP& valobj_sp, 100ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void** pyfunct_wrapper, 101ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao std::string& retval); 102ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 103ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef void* (*SWIGPythonCreateSyntheticProvider) (const char *python_class_name, 104ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 105ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::ValueObjectSP& valobj_sp); 106ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 107ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef void* (*SWIGPythonCreateOSPlugin) (const char *python_class_name, 108ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 109ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const lldb::ProcessSP& process_sp); 110ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 111ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef uint32_t (*SWIGPythonCalculateNumChildren) (void *implementor); 112ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef void* (*SWIGPythonGetChildAtIndex) (void *implementor, uint32_t idx); 113ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef int (*SWIGPythonGetIndexOfChildWithName) (void *implementor, const char* child_name); 114ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef void* (*SWIGPythonCastPyObjectToSBValue) (void* data); 115ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGPythonUpdateSynthProviderInstance) (void* data); 116ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGPythonMightHaveChildrenSynthProviderInstance) (void* data); 117ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 118ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 119ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGPythonCallCommand) (const char *python_function_name, 120ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 121ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::DebuggerSP& debugger, 122ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char* args, 123ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao std::string& err_msg, 124ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb_private::CommandReturnObject& cmd_retobj); 125ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 126ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef bool (*SWIGPythonCallModuleInit) (const char *python_module_name, 127ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *session_dictionary_name, 128ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::DebuggerSP& debugger); 129ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 130ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao typedef enum 131ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 132ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeCharPtr, 133ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeBool, 134ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeShortInt, 135ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeShortIntUnsigned, 136ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeInt, 137ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeIntUnsigned, 138ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeLongInt, 139ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeLongIntUnsigned, 140ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeLongLong, 141ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeLongLongUnsigned, 142ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeFloat, 143ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeDouble, 144ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeChar, 145ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao eScriptReturnTypeCharStrOrNone 146ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } ScriptReturnType; 147ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 148ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang); 149ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 150ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual ~ScriptInterpreter (); 151ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 152ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao struct ExecuteScriptOptions 153ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 154ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao public: 155ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteScriptOptions () : 156ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_enable_io(true), 157ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_set_lldb_globals(true), 158ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_maskout_errors(true) 159ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 160ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 161ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 162ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool 163ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GetEnableIO () const 164ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 165ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return m_enable_io; 166ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 167ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 168ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool 169ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GetSetLLDBGlobals () const 170ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 171ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return m_set_lldb_globals; 172ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 173ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 174ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool 175ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GetMaskoutErrors () const 176ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 177ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return m_maskout_errors; 178ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 179ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 180ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteScriptOptions& 181ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SetEnableIO (bool enable) 182ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 183ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_enable_io = enable; 184ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return *this; 185ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 186ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 187ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteScriptOptions& 188ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SetSetLLDBGlobals (bool set) 189ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 190ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_set_lldb_globals = set; 191ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return *this; 192ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 193ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 194ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteScriptOptions& 195ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SetMaskoutErrors (bool maskout) 196ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 197ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao m_maskout_errors = maskout; 198ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return *this; 199ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 200ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 201ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao private: 202ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool m_enable_io; 203ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool m_set_lldb_globals; 204ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao bool m_maskout_errors; 205ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao }; 206ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 207ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 208ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteOneLine (const char *command, 209ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CommandReturnObject *result, 210ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const ExecuteScriptOptions &options = ExecuteScriptOptions()) = 0; 211ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 212ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void 213ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteInterpreterLoop () = 0; 214ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 215ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 216ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteOneLineWithReturn (const char *in_string, 217ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ScriptReturnType return_type, 218ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao void *ret_value, 219ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const ExecuteScriptOptions &options = ExecuteScriptOptions()) 220ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 221ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return true; 222ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 223ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 224ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 225ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExecuteMultipleLines (const char *in_string, 226ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const ExecuteScriptOptions &options = ExecuteScriptOptions()) 227ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 228ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return true; 229ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 230ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 231ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 232ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao ExportFunctionDefinitionToInterpreter (StringList &function_def) 233ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 234ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 235ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 236ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 237ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 238ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateBreakpointCommandCallbackData (StringList &input, std::string& output) 239ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 240ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 241ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 242ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 243ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 244ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateWatchpointCommandCallbackData (StringList &input, std::string& output) 245ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 246ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 247ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 248ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 249ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 250ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateTypeScriptFunction (const char* oneliner, std::string& output, void* name_token = NULL) 251ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 252ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 253ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 254ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 255ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 256ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateTypeScriptFunction (StringList &input, std::string& output, void* name_token = NULL) 257ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 258ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 259ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 260ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 261ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 262ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateScriptAliasFunction (StringList &input, std::string& output) 263ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 264ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 265ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 266ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 267ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 268ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateTypeSynthClass (StringList &input, std::string& output, void* name_token = NULL) 269ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 270ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 271ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 272ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 273ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 274ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateTypeSynthClass (const char* oneliner, std::string& output, void* name_token = NULL) 275ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 276ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 277ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 278ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 279ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 280ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CreateSyntheticScriptedProvider (const char *class_name, 281ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::ValueObjectSP valobj) 282ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 283ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 284ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 285ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 286ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 287ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao OSPlugin_CreatePluginObject (const char *class_name, 288ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::ProcessSP process_sp) 289ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 290ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 291ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 292ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 293ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 294ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao OSPlugin_RegisterInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp) 295ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 296ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 297ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 298ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 299ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 300ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao OSPlugin_ThreadsInfo (lldb::ScriptInterpreterObjectSP os_plugin_object_sp) 301ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 302ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 303ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 304ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 305ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 306ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao OSPlugin_RegisterContextData (lldb::ScriptInterpreterObjectSP os_plugin_object_sp, 307ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::tid_t thread_id) 308ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 309ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 310ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 311ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 312ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual lldb::ScriptInterpreterObjectSP 313ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao OSPlugin_CreateThread (lldb::ScriptInterpreterObjectSP os_plugin_object_sp, 314ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::tid_t tid, 315ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao lldb::addr_t context) 316ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 317ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return lldb::ScriptInterpreterObjectSP(); 318ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 319ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 320ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 321ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao GenerateFunction(const char *signature, const StringList &input) 322ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 323ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return false; 324ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 325ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 326ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void 327ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CollectDataForBreakpointCommandCallback (BreakpointOptions *bp_options, 328ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CommandReturnObject &result); 329ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 330ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void 331ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CollectDataForWatchpointCommandCallback (WatchpointOptions *wp_options, 332ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao CommandReturnObject &result); 333ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 334ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao /// Set a one-liner as the callback for the breakpoint. 335ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void 336ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SetBreakpointCommandCallback (BreakpointOptions *bp_options, 337ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *oneliner) 338ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 339ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return; 340ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 341ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 342ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao /// Set a one-liner as the callback for the watchpoint. 343ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual void 344ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao SetWatchpointCommandCallback (WatchpointOptions *wp_options, 345ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao const char *oneliner) 346ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao { 347ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao return; 348ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao } 349ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao 350ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao virtual bool 351 GetScriptedSummary (const char *function_name, 352 lldb::ValueObjectSP valobj, 353 lldb::ScriptInterpreterObjectSP& callee_wrapper_sp, 354 std::string& retval) 355 { 356 return false; 357 } 358 359 virtual size_t 360 CalculateNumChildren (const lldb::ScriptInterpreterObjectSP& implementor) 361 { 362 return 0; 363 } 364 365 virtual lldb::ValueObjectSP 366 GetChildAtIndex (const lldb::ScriptInterpreterObjectSP& implementor, uint32_t idx) 367 { 368 return lldb::ValueObjectSP(); 369 } 370 371 virtual int 372 GetIndexOfChildWithName (const lldb::ScriptInterpreterObjectSP& implementor, const char* child_name) 373 { 374 return UINT32_MAX; 375 } 376 377 virtual bool 378 UpdateSynthProviderInstance (const lldb::ScriptInterpreterObjectSP& implementor) 379 { 380 return false; 381 } 382 383 virtual bool 384 MightHaveChildrenSynthProviderInstance (const lldb::ScriptInterpreterObjectSP& implementor) 385 { 386 return true; 387 } 388 389 virtual bool 390 RunScriptBasedCommand (const char* impl_function, 391 const char* args, 392 ScriptedCommandSynchronicity synchronicity, 393 lldb_private::CommandReturnObject& cmd_retobj, 394 Error& error) 395 { 396 return false; 397 } 398 399 virtual bool 400 GetDocumentationForItem (const char* item, std::string& dest) 401 { 402 dest.clear(); 403 return false; 404 } 405 406 virtual bool 407 CheckObjectExists (const char* name) 408 { 409 return false; 410 } 411 412 virtual bool 413 LoadScriptingModule (const char* filename, 414 bool can_reload, 415 bool init_session, 416 lldb_private::Error& error) 417 { 418 error.SetErrorString("loading unimplemented"); 419 return false; 420 } 421 422 virtual lldb::ScriptInterpreterObjectSP 423 MakeScriptObject (void* object) 424 { 425 return lldb::ScriptInterpreterObjectSP(new ScriptInterpreterObject(object)); 426 } 427 428 virtual std::auto_ptr<ScriptInterpreterLocker> 429 AcquireInterpreterLock (); 430 431 const char * 432 GetScriptInterpreterPtyName (); 433 434 int 435 GetMasterFileDescriptor (); 436 437 CommandInterpreter & 438 GetCommandInterpreter (); 439 440 static std::string 441 LanguageToString (lldb::ScriptLanguage language); 442 443 static void 444 InitializeInterpreter (SWIGInitCallback python_swig_init_callback); 445 446 static void 447 TerminateInterpreter (); 448 449 virtual void 450 ResetOutputFileHandle (FILE *new_fh) { } //By default, do nothing. 451 452protected: 453 CommandInterpreter &m_interpreter; 454 lldb::ScriptLanguage m_script_lang; 455}; 456 457} // namespace lldb_private 458 459#endif // #ifndef liblldb_ScriptInterpreter_h_ 460