diff options
Diffstat (limited to 'lldb')
-rw-r--r-- | lldb/scripts/Python/interface/SBCommandReturnObject.i | 10 | ||||
-rw-r--r-- | lldb/scripts/Python/python-extensions.swig | 20 | ||||
-rwxr-xr-x | lldb/www/python-reference.html | 10 |
3 files changed, 34 insertions, 6 deletions
diff --git a/lldb/scripts/Python/interface/SBCommandReturnObject.i b/lldb/scripts/Python/interface/SBCommandReturnObject.i index e5f062c2240..e72c1e2731f 100644 --- a/lldb/scripts/Python/interface/SBCommandReturnObject.i +++ b/lldb/scripts/Python/interface/SBCommandReturnObject.i @@ -86,8 +86,14 @@ public: void PutCString(const char* string, int len = -1); - size_t - Printf(const char* format, ...); + // wrapping the variadic Printf() with a plain Print() + // because it is hard to support varargs in SWIG bridgings + %extend { + void Print (const char* str) + { + self->Printf("%s", str); + } + } }; diff --git a/lldb/scripts/Python/python-extensions.swig b/lldb/scripts/Python/python-extensions.swig index 84c719c6364..29eae6d331c 100644 --- a/lldb/scripts/Python/python-extensions.swig +++ b/lldb/scripts/Python/python-extensions.swig @@ -68,6 +68,12 @@ else return PyString_FromString(""); } + + /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage + they are meant to make an SBCommandReturnObject into a file-like object so that instructions of the sort + print >>sb_command_return_object, "something" + will work correctly */ + void lldb::SBCommandReturnObject::write (const char* str) { if (str) @@ -272,6 +278,20 @@ return PyString_FromString(""); } } +%extend lldb::SBStream { + /* the write() and flush() calls are not part of the SB API proper, and are solely for Python usage + they are meant to make an SBStream into a file-like object so that instructions of the sort + print >>sb_stream, "something" + will work correctly */ + + void lldb::SBStream::write (const char* str) + { + if (str) + $self->Printf("%s",str); + } + void lldb::SBStream::flush () + {} +} %extend lldb::SBSymbol { PyObject *lldb::SBSymbol::__str__ (){ lldb::SBStream description; diff --git a/lldb/www/python-reference.html b/lldb/www/python-reference.html index 86edbc54cdc..daf0b98869d 100755 --- a/lldb/www/python-reference.html +++ b/lldb/www/python-reference.html @@ -368,10 +368,9 @@ Enter your Python command(s). Type 'DONE' to end. <b>lldb.SBCommandReturnObject</b>
</td>
<td class="content">
- A return object where you can indicate the success or failure of your command. You can also
- provide information for the command result by printing data into it. You can also just print
- data as you normally would in a python script and the output will show up; this is useful for
- logging, but the real output for your command should go in the result object.
+ A return object which encapsulates success/failure information for the command and output text
+ that needs to be printed as a result of the command. The plain Python "print" command also works but
+ text won't go in the result by default (it is useful as a temporary logging facility).
</td>
</tr>
<tr>
@@ -387,6 +386,9 @@ Enter your Python command(s). Type 'DONE' to end. </td>
</tr>
</table>
+ <p>As a convenience, you can treat the result object as a Python file object, and say
+ print >>result, "my command does lots of cool stuff". SBCommandReturnObject and SBStream
+ both support this file-like behavior by providing write() and flush() calls at the Python layer.</p>
<p>One other handy convenience when defining lldb command-line commands is the command
<b>command script import</b> which will import a module specified by file path - so you
don't have to change your PYTHONPATH for temporary scripts. It also has another convenience
|