From 411165f3f40f411d6feba4d13d4934f7fff6cc4f Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Tue, 20 Aug 2002 22:33:20 +0000
Subject: [PATCH] added and documented wxProcess::Is{Input|Error}Available()
 and IsInputOpened

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/process.tex | 32 ++++++++++++++++++++++++++++++++
 include/wx/process.h      |  7 +++++++
 src/common/process.cpp    | 22 ++++++++++++++++++++++
 3 files changed, 61 insertions(+)

diff --git a/docs/latex/wx/process.tex b/docs/latex/wx/process.tex
index 95c907c979..e3ced73249 100644
--- a/docs/latex/wx/process.tex
+++ b/docs/latex/wx/process.tex
@@ -121,6 +121,38 @@ It returns an output stream correspoding to the input stream of the subprocess.
 If it is NULL, you have not turned on the redirection.
 See \helpref{wxProcess::Redirect}{wxprocessredirect}.
 
+\membersection{wxProcess::IsErrorAvailable}\label{wxprocessiserroravailable}
+
+\constfunc{bool}{IsErrorAvailable}{\void}
+
+Returns {\tt TRUE} if there is data to be read on the child process standard
+error stream.
+
+\wxheading{See also}
+
+\helpref{IsInputAvailable}{wxprocessisinputavailable}
+
+\membersection{wxProcess::IsInputAvailable}\label{wxprocessisinputavailable}
+
+\constfunc{bool}{IsInputAvailable}{\void}
+
+Returns {\tt TRUE} if there is data to be read on the child process standard
+output stream. This allows to write simple (and extremely inefficient)
+polling-based code waiting for a better mechanism in future wxWindows versions.
+
+See the \helpref{exec sample}{sampleexec} for an example of using this
+function.
+
+\wxheading{See also}
+
+\helpref{IsInputOpened}{wxprocessisinputopened}
+
+\membersection{wxProcess::IsInputOpened}\label{wxprocessisinputopened}
+
+\constfunc{bool}{IsInputOpened}{\void}
+
+Returns {\tt TRUE} if the child process standard output stream is opened.
+
 \membersection{wxProcess::Kill}\label{wxprocesskill}
 
 \func{static wxKillError}{Kill}{\param{int}{ pid}, \param{wxSignal}{ signal = wxSIGNONE}}
diff --git a/include/wx/process.h b/include/wx/process.h
index 03993984bb..c5136d203a 100644
--- a/include/wx/process.h
+++ b/include/wx/process.h
@@ -88,6 +88,13 @@ public:
     // close the output stream indicating that nothing more will be written
     void CloseOutput() { delete m_outputStream; m_outputStream = NULL; }
 
+    // return TRUE if the child process stdout is not closed
+    bool IsInputOpened() const;
+
+    // return TRUE if any input is available on the child process stdout/err
+    bool IsInputAvailable() const;
+    bool IsErrorAvailable() const;
+
     // implementation only (for wxExecute)
     //
     // NB: the streams passed here should correspond to the child process
diff --git a/src/common/process.cpp b/src/common/process.cpp
index 7c23c47620..c8f7cae09a 100644
--- a/src/common/process.cpp
+++ b/src/common/process.cpp
@@ -120,6 +120,28 @@ void wxProcess::SetPipeStreams(wxInputStream *inputSstream,
     m_outputStream = outputStream;
 }
 
+// these are implemented in platform-dependent (and correct!) way under MSW and
+// Unix but we still have to provide these dummy versions for the other
+// platforms here
+#if !defined(__WIN32__) && !defined(__UNIX_LIKE__)
+
+bool wxProcess::IsInputOpened() const
+{
+    return TRUE;
+}
+
+bool wxProcess::IsInputAvailable() const
+{
+    return FALSE;
+}
+
+bool wxProcess::IsErrorAvailable() const
+{
+    return FALSE;
+}
+
+#endif // !Win32 && !Unix
+
 #endif // wxUSE_STREAMS
 
 // ----------------------------------------------------------------------------
-- 
2.50.0

