diff options
author | Greg Clayton <gclayton@apple.com> | 2013-06-19 01:38:02 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2013-06-19 01:38:02 +0000 |
commit | 88e0f618ea6fe15c633d99772d22cace838e3e28 (patch) | |
tree | ed7231b3bfc837d04640483372fc8049b6254bf3 | |
parent | 67416d72a5ac2778677ca8e31437f9196daffecd (diff) | |
download | bcm5719-llvm-88e0f618ea6fe15c633d99772d22cace838e3e28.tar.gz bcm5719-llvm-88e0f618ea6fe15c633d99772d22cace838e3e28.zip |
Added a new decorator function in the "lldb" module that can register a command automatically. We have just a few kinks to work out for the Xcode workflow and we will be ready to switch over to using this. To use this, you can decorate your python function as:
@lldb.command("new_command", "Documentation string for new_command...")
def new_command(debugger, command, result, dict):
....
No more need to register your command in the __lldb_init_module function!
llvm-svn: 184274
-rw-r--r-- | lldb/scripts/Python/python-extensions.swig | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lldb/scripts/Python/python-extensions.swig b/lldb/scripts/Python/python-extensions.swig index 8d57156469f..a6ca497bdb5 100644 --- a/lldb/scripts/Python/python-extensions.swig +++ b/lldb/scripts/Python/python-extensions.swig @@ -758,6 +758,26 @@ %pythoncode %{ +def command(*args, **kwargs): + from lldb import debugger + """A decorator function that registers an LLDB command line + command that is bound to the function it is attached to.""" + class obj(object): + """The object that tracks adding the command to LLDB one time and handles + calling the function on subsequent calls.""" + def __init__(self, function, command_name, doc = None): + if doc: + function.__doc__ = doc + command = "command script add -f %s.%s %s" % (function.__module__, function.__name__, command_name) + debugger.HandleCommand(command) + self.function = function + def __call__(self, *args, **kwargs): + self.function(*args, **kwargs) + def callable(function): + """Creates a callable object that gets used.""" + return obj(function, *args, **kwargs) + return callable + class declaration(object): '''A class that represents a source declaration location with file, line and column.''' def __init__(self, file, line, col): |