forked from OSchip/llvm-project
- Masking out SBCommandReturnObject::Printf() from the Python layer because SWIG and varargs do not get along well.
It is replaced by a Print("str") call which is equivalent to Printf("%s","str") - Providing file-like behavior for SBStream with appropriate extension write() and flush() calls, plus documenting that these are only meant and only exist for Python Documenting the file-like behavior on our website llvm-svn: 177877
This commit is contained in:
parent
51cb2fa1c3
commit
ceba071330
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue