diff options
Diffstat (limited to 'source/API/SBCommandInterpreter.cpp')
| -rw-r--r-- | source/API/SBCommandInterpreter.cpp | 125 | 
1 files changed, 116 insertions, 9 deletions
diff --git a/source/API/SBCommandInterpreter.cpp b/source/API/SBCommandInterpreter.cpp index 0c839004601c..ac77e2e41126 100644 --- a/source/API/SBCommandInterpreter.cpp +++ b/source/API/SBCommandInterpreter.cpp @@ -384,15 +384,103 @@ SBCommandInterpreter::SetCommandOverrideCallback (const char *command_name,  extern "C" void   init_lldb(void); -#else +// these are the Pythonic implementations of the required callbacks +// these are scripting-language specific, which is why they belong here +// we still need to use function pointers to them instead of relying +// on linkage-time resolution because the SWIG stuff and this file +// get built at different times +extern "C" bool +LLDBSwigPythonBreakpointCallbackFunction (const char *python_function_name, +                                          const char *session_dictionary_name, +                                          const lldb::StackFrameSP& sb_frame, +                                          const lldb::BreakpointLocationSP& sb_bp_loc); + +extern "C" bool +LLDBSwigPythonWatchpointCallbackFunction (const char *python_function_name, +                                          const char *session_dictionary_name, +                                          const lldb::StackFrameSP& sb_frame, +                                          const lldb::WatchpointSP& sb_wp); + +extern "C" bool +LLDBSwigPythonCallTypeScript (const char *python_function_name, +                              void *session_dictionary, +                              const lldb::ValueObjectSP& valobj_sp, +                              void** pyfunct_wrapper, +                              std::string& retval); + +extern "C" void* +LLDBSwigPythonCreateSyntheticProvider (const char *python_class_name, +                                       const char *session_dictionary_name, +                                       const lldb::ValueObjectSP& valobj_sp); + + +extern "C" uint32_t +LLDBSwigPython_CalculateNumChildren (void *implementor); + +extern "C" void * +LLDBSwigPython_GetChildAtIndex (void *implementor, uint32_t idx); + +extern "C" int +LLDBSwigPython_GetIndexOfChildWithName (void *implementor, const char* child_name); + +extern "C" void * +LLDBSWIGPython_CastPyObjectToSBValue (void* data); + +extern lldb::ValueObjectSP +LLDBSWIGPython_GetValueObjectSPFromSBValue (void* data); + +extern "C" bool +LLDBSwigPython_UpdateSynthProviderInstance (void* implementor); + +extern "C" bool +LLDBSwigPython_MightHaveChildrenSynthProviderInstance (void* implementor); + +extern "C" bool +LLDBSwigPythonCallCommand (const char *python_function_name, +                           const char *session_dictionary_name, +                           lldb::DebuggerSP& debugger, +                           const char* args, +                           lldb_private::CommandReturnObject &cmd_retobj); + +extern "C" bool +LLDBSwigPythonCallModuleInit (const char *python_module_name, +                              const char *session_dictionary_name, +                              lldb::DebuggerSP& debugger); + +extern "C" void* +LLDBSWIGPythonCreateOSPlugin (const char *python_class_name, +                              const char *session_dictionary_name, +                              const lldb::ProcessSP& process_sp); + +extern "C" bool +LLDBSWIGPythonRunScriptKeywordProcess (const char* python_function_name, +                                       const char* session_dictionary_name, +                                       lldb::ProcessSP& process, +                                       std::string& output); + +extern "C" bool +LLDBSWIGPythonRunScriptKeywordThread (const char* python_function_name, +                                      const char* session_dictionary_name, +                                      lldb::ThreadSP& thread, +                                      std::string& output); + +extern "C" bool +LLDBSWIGPythonRunScriptKeywordTarget (const char* python_function_name, +                                      const char* session_dictionary_name, +                                      lldb::TargetSP& target, +                                      std::string& output); + +extern "C" bool +LLDBSWIGPythonRunScriptKeywordFrame (const char* python_function_name, +                                     const char* session_dictionary_name, +                                     lldb::StackFrameSP& frame, +                                     std::string& output); + +extern "C" void* +LLDBSWIGPython_GetDynamicSetting (void* module, +                                  const char* setting, +                                  const lldb::TargetSP& target_sp); -extern "C" void init_lldb(void); - -// Usually defined in the SWIG source file, but we have sripting disabled -extern "C" void  -init_lldb(void) -{ -}  #endif @@ -404,7 +492,26 @@ SBCommandInterpreter::InitializeSWIG ()      {          g_initialized = true;  #ifndef LLDB_DISABLE_PYTHON -        ScriptInterpreter::InitializeInterpreter (init_lldb); +        ScriptInterpreter::InitializeInterpreter (init_lldb, +                                                  LLDBSwigPythonBreakpointCallbackFunction, +                                                  LLDBSwigPythonWatchpointCallbackFunction, +                                                  LLDBSwigPythonCallTypeScript, +                                                  LLDBSwigPythonCreateSyntheticProvider, +                                                  LLDBSwigPython_CalculateNumChildren, +                                                  LLDBSwigPython_GetChildAtIndex, +                                                  LLDBSwigPython_GetIndexOfChildWithName, +                                                  LLDBSWIGPython_CastPyObjectToSBValue, +                                                  LLDBSWIGPython_GetValueObjectSPFromSBValue, +                                                  LLDBSwigPython_UpdateSynthProviderInstance, +                                                  LLDBSwigPython_MightHaveChildrenSynthProviderInstance, +                                                  LLDBSwigPythonCallCommand, +                                                  LLDBSwigPythonCallModuleInit, +                                                  LLDBSWIGPythonCreateOSPlugin, +                                                  LLDBSWIGPythonRunScriptKeywordProcess, +                                                  LLDBSWIGPythonRunScriptKeywordThread, +                                                  LLDBSWIGPythonRunScriptKeywordTarget, +                                                  LLDBSWIGPythonRunScriptKeywordFrame, +                                                  LLDBSWIGPython_GetDynamicSetting);  #endif      }  }  | 
