summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2013-06-19 01:38:02 +0000
committerGreg Clayton <gclayton@apple.com>2013-06-19 01:38:02 +0000
commit88e0f618ea6fe15c633d99772d22cace838e3e28 (patch)
treeed7231b3bfc837d04640483372fc8049b6254bf3
parent67416d72a5ac2778677ca8e31437f9196daffecd (diff)
downloadbcm5719-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.swig20
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):
OpenPOWER on IntegriCloud