From 49cb85db64046f0030134cf4eac27b1dbe02cc2c Mon Sep 17 00:00:00 2001 From: Johnny Chen Date: Mon, 28 Nov 2011 21:39:07 +0000 Subject: 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(). llvm-svn: 145282 --- lldb/scripts/Python/interface/SBCommandInterpreter.i | 2 ++ lldb/scripts/Python/interface/SBProcess.i | 4 ++++ lldb/scripts/Python/python-typemaps.swig | 9 +++++++++ 3 files changed, 15 insertions(+) (limited to 'lldb/scripts/Python') diff --git a/lldb/scripts/Python/interface/SBCommandInterpreter.i b/lldb/scripts/Python/interface/SBCommandInterpreter.i index 6a5ee2466b0..ec9e51c561a 100644 --- a/lldb/scripts/Python/interface/SBCommandInterpreter.i +++ b/lldb/scripts/Python/interface/SBCommandInterpreter.i @@ -99,8 +99,10 @@ public: 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/lldb/scripts/Python/interface/SBProcess.i b/lldb/scripts/Python/interface/SBProcess.i index 531cd5903cf..b2ab9231a26 100644 --- a/lldb/scripts/Python/interface/SBProcess.i +++ b/lldb/scripts/Python/interface/SBProcess.i @@ -64,6 +64,10 @@ public: 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/lldb/scripts/Python/python-typemaps.swig b/lldb/scripts/Python/python-typemaps.swig index 5fbe161aa4c..55f2819ce0c 100644 --- a/lldb/scripts/Python/python-typemaps.swig +++ b/lldb/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)) { -- cgit v1.2.3