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)) {