]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/unix/apptbase.h
added wxXmlNode::InsertChildAfter and use it for (much) faster XML parsing (based...
[wxWidgets.git] / include / wx / unix / apptbase.h
index 3832761d138a441131186c0cb078d826ba49a454..153d65c73540fd2f4dad5fac1768c43846538dea 100644 (file)
@@ -5,43 +5,42 @@
 // Modified by:
 // Created:     23.06.2003
 // RCS-ID:      $Id$
-// Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
+// Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_UNIX_APPTBASE_H_
 #define _WX_UNIX_APPTBASE_H_
 
-class wxExecuteData;
-class wxPipe;
+struct wxEndProcessData;
+struct wxExecuteData;
 
 // ----------------------------------------------------------------------------
 // wxAppTraits: the Unix version adds extra hooks needed by Unix code
 // ----------------------------------------------------------------------------
 
-class WXDLLEXPORT wxAppTraits : public wxAppTraitsBase
+class WXDLLIMPEXP_BASE wxAppTraits : public wxAppTraitsBase
 {
 public:
     // wxExecute() support methods
     // ---------------------------
 
-    // called before starting the child process and creates the pipe used for
-    // detecting the process termination asynchronously in GUI, does nothing in
-    // wxBase
-    //
-    // if it returns false, we should return from wxExecute() with an error
-    virtual bool CreateEndProcessPipe(wxExecuteData& execData) = 0;
-
-    // test if the given descriptor is the end of the pipe create by the
-    // function above
-    virtual bool IsWriteFDOfEndProcessPipe(wxExecuteData& execData, int fd) = 0;
-
-    // ensure that the write end of the pipe is not closed by wxPipe dtor
-    virtual void DetachWriteFDOfEndProcessPipe(wxExecuteData& execData) = 0;
-
     // wait for the process termination, return whatever wxExecute() must
     // return
-    virtual int WaitForChild(wxExecuteData& execData) = 0;
+    //
+    // base class implementation handles all cases except wxEXEC_SYNC without
+    // wxEXEC_NOEVENTS one which is implemented at the GUI level
+    virtual int WaitForChild(wxExecuteData& execData);
+
+    // integrate the monitoring of the given fd with the port-specific event
+    // loop: when this fd, which corresponds to a dummy pipe opened between the
+    // parent and child processes, is closed by the child, the parent is
+    // notified about this via a call to wxHandleProcessTermination() function
+    //
+    // the default implementation uses wxFDIODispatcher and so is suitable for
+    // the console applications or ports which don't have any specific event
+    // loop
+    virtual int AddProcessCallback(wxEndProcessData *data, int fd);
 
 
     // wxThread helpers
@@ -49,14 +48,18 @@ public:
 
     // TODO
 
-
-    // other miscellaneous helpers
-    // ---------------------------
-
-    // wxGetOsVersion() behaves differently in GUI and non-GUI builds udner
-    // Unix: in the former case it returns the information about the toolkit
-    // and in the latter -- about the OS, so we need to virtualize it
-    virtual int GetOSVersion(int *verMaj, int *verMin) = 0;
+#if wxUSE_SOCKETS
+    // returns the select()-based socket manager for console applications which
+    // is also used by some ports (wxX11, wxDFB) in the GUI build (hence it is
+    // here and not in wxConsoleAppTraits)
+    virtual GSocketManager *GetSocketManager();
+#endif
+
+protected:
+    // a helper for the implementation of WaitForChild() in wxGUIAppTraits:
+    // checks the streams used for redirected IO in execData and returns true
+    // if there is any activity in them
+    bool CheckForRedirectedIO(wxExecuteData& execData);
 };
 
 #endif // _WX_UNIX_APPTBASE_H_