diff options
author | Enrico Granata <egranata@apple.com> | 2015-03-13 02:20:41 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2015-03-13 02:20:41 +0000 |
commit | 9fe00e52d3dc12e80428648d84542f800c362163 (patch) | |
tree | 397f77d6aa9a2d566e2f8d6f4ce8a47d858ecece /lldb/source/API | |
parent | 9f611e3a89c3a87d2748061d149c30e3b132f3a8 (diff) | |
download | bcm5719-llvm-9fe00e52d3dc12e80428648d84542f800c362163.tar.gz bcm5719-llvm-9fe00e52d3dc12e80428648d84542f800c362163.zip |
Bulk of the infrastructure work to allow script commands to be backed by object instances in addition to free functions
This works by creating a command backed by a class whose interface should - at least - include
def __init__(self, debugger, session_dict)
def __call__(self, args, return_obj, exe_ctx)
What works:
- adding a command via command script add --class
- calling a thusly created command
What is missing:
- support for custom help
- test cases
The missing parts will follow over the next couple of days
This is an improvement over the existing system as:
a) it provides an obvious location for commands to provide help strings (i.e. methods)
b) it allows commands to store state in an obvious fashion
c) it allows us to easily add features to script commands over time (option parsing and subcommands registration, I am looking at you :-)
llvm-svn: 232136
Diffstat (limited to 'lldb/source/API')
-rw-r--r-- | lldb/source/API/SBCommandInterpreter.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lldb/source/API/SBCommandInterpreter.cpp b/lldb/source/API/SBCommandInterpreter.cpp index 5f2ccdc6c79..a2afd5361f7 100644 --- a/lldb/source/API/SBCommandInterpreter.cpp +++ b/lldb/source/API/SBCommandInterpreter.cpp @@ -603,6 +603,10 @@ LLDBSwigPythonCreateSyntheticProvider (const char *python_class_name, const char *session_dictionary_name, const lldb::ValueObjectSP& valobj_sp); +extern "C" void* +LLDBSwigPythonCreateCommandObject (const char *python_class_name, + const char *session_dictionary_name, + const lldb::DebuggerSP debugger_sp); extern "C" void* LLDBSwigPythonCreateScriptedThreadPlan (const char *python_class_name, @@ -648,6 +652,13 @@ LLDBSwigPythonCallCommand (const char *python_function_name, lldb::ExecutionContextRefSP exe_ctx_ref_sp); extern "C" bool +LLDBSwigPythonCallCommandObject (void *implementor, + lldb::DebuggerSP& debugger, + const char* args, + lldb_private::CommandReturnObject& cmd_retobj, + lldb::ExecutionContextRefSP exe_ctx_ref_sp); + +extern "C" bool LLDBSwigPythonCallModuleInit (const char *python_module_name, const char *session_dictionary_name, lldb::DebuggerSP& debugger); @@ -708,6 +719,7 @@ SBCommandInterpreter::InitializeSWIG () LLDBSwigPythonWatchpointCallbackFunction, LLDBSwigPythonCallTypeScript, LLDBSwigPythonCreateSyntheticProvider, + LLDBSwigPythonCreateCommandObject, LLDBSwigPython_CalculateNumChildren, LLDBSwigPython_GetChildAtIndex, LLDBSwigPython_GetIndexOfChildWithName, @@ -717,6 +729,7 @@ SBCommandInterpreter::InitializeSWIG () LLDBSwigPython_MightHaveChildrenSynthProviderInstance, LLDBSwigPython_GetValueSynthProviderInstance, LLDBSwigPythonCallCommand, + LLDBSwigPythonCallCommandObject, LLDBSwigPythonCallModuleInit, LLDBSWIGPythonCreateOSPlugin, LLDBSWIGPythonRunScriptKeywordProcess, |