SBProcess.PutSTDIN() needs to be properly typemapped when swigging,
so that we can do Python scripting like this:
target = self.dbg.CreateTarget(self.exe)
self.dbg.SetAsync(True)
process = target.LaunchSimple(None, None, os.getcwd())
process.PutSTDIN("Line 1 Entered.\n")
process.PutSTDIN("Line 2 Entered.\n")
process.PutSTDIN("Line 3 Entered.\n")
Add TestProcessIO.py to exercise the process IO API: PutSTDIN()/GetSTDOUT()/GetSTDERR().
git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@145282 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/scripts/Python/interface/SBCommandInterpreter.i b/scripts/Python/interface/SBCommandInterpreter.i
index 6a5ee24..ec9e51c 100644
--- a/scripts/Python/interface/SBCommandInterpreter.i
+++ b/scripts/Python/interface/SBCommandInterpreter.i
@@ -99,8 +99,10 @@
lldb::SBProcess
GetProcess ();
+#if 0
ssize_t
WriteToScriptInterpreter (const char *src);
+#endif
ssize_t
WriteToScriptInterpreter (const char *src, size_t src_len);
diff --git a/scripts/Python/interface/SBProcess.i b/scripts/Python/interface/SBProcess.i
index 531cd59..b2ab923 100644
--- a/scripts/Python/interface/SBProcess.i
+++ b/scripts/Python/interface/SBProcess.i
@@ -64,6 +64,10 @@
lldb::ByteOrder
GetByteOrder() const;
+ %feature("autodoc", "
+ Writes data into the current process's stdin. API client specifies a Python
+ string as the only argument.
+ ") PutSTDIN;
size_t
PutSTDIN (const char *src, size_t src_len);
diff --git a/scripts/Python/python-typemaps.swig b/scripts/Python/python-typemaps.swig
index 5fbe161..55f2819 100644
--- a/scripts/Python/python-typemaps.swig
+++ b/scripts/Python/python-typemaps.swig
@@ -76,6 +76,15 @@
$1 = (char *) PyString_AsString($input);
$2 = PyString_Size($input);
}
+// Ditto for SBProcess::PutSTDIN(const char *src, size_t src_len).
+%typemap(in) (const char *src, size_t src_len) {
+ if (!PyString_Check($input)) {
+ PyErr_SetString(PyExc_ValueError, "Expecting a string");
+ return NULL;
+ }
+ $1 = (char *) PyString_AsString($input);
+ $2 = PyString_Size($input);
+}
// And SBProcess::WriteMemory.
%typemap(in) (const void *buf, size_t size) {
if (!PyString_Check($input)) {