]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/thread.h
Simplified BC++ makefiles; C++Builder 1.0 compilation seems to work;
[wxWidgets.git] / include / wx / thread.h
index 4ecfaa271ee0faf451384f3a403618e7a2cb7e60..aa435992563832a4cc1945eb73f08a7190c17bf5 100644 (file)
 
 #include "wx/object.h"
 #include "wx/setup.h"
-
-typedef enum {
-  MUTEX_NO_ERROR=0,
-  MUTEX_DEAD_LOCK,             // Mutex has been already locked by THE CALLING thread 
-  MUTEX_BUSY,                  // Mutex has been already locked by ONE thread
-  MUTEX_UNLOCKED
+#include "wx/module.h"
+
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+typedef enum 
+{
+  wxMUTEX_NO_ERROR = 0,
+  wxMUTEX_DEAD_LOCK,      // Mutex has been already locked by THE CALLING thread 
+  wxMUTEX_BUSY,           // Mutex has been already locked by ONE thread
+  wxMUTEX_UNLOCKED,
+  wxMUTEX_MISC_ERROR
 } wxMutexError;
 
-typedef enum {
-  THREAD_NO_ERROR=0,           // No error
-  THREAD_NO_RESOURCE,          // No resource left to create a new thread
-  THREAD_RUNNING,              // The thread is already running
-  THREAD_NOT_RUNNING,          // The thread isn't running
-  THREAD_MISC_ERROR             // Some other error
+typedef enum 
+{
+  wxTHREAD_NO_ERROR = 0,      // No error
+  wxTHREAD_NO_RESOURCE,       // No resource left to create a new thread
+  wxTHREAD_RUNNING,           // The thread is already running
+  wxTHREAD_NOT_RUNNING,       // The thread isn't running
+  wxTHREAD_MISC_ERROR         // Some other error
 } wxThreadError;
 
-// defines the interval of priority.
-#define WXTHREAD_MIN_PRIORITY 0
+/* defines the interval of priority. */
+#define WXTHREAD_MIN_PRIORITY     0
 #define WXTHREAD_DEFAULT_PRIORITY 50
-#define WXTHREAD_MAX_PRIORITY 100
+#define WXTHREAD_MAX_PRIORITY     100
+
+// ----------------------------------------------------------------------------
+// GUI mutex handling.
+// ----------------------------------------------------------------------------
+
+void WXDLLEXPORT wxMutexGuiEnter();
+void WXDLLEXPORT wxMutexGuiLeave();
 
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 // Mutex handler
+// ----------------------------------------------------------------------------
+
 class WXDLLEXPORT wxMutexInternal;
-class WXDLLEXPORT wxMutex {
+class WXDLLEXPORT wxMutex 
+{
 public:
   // constructor & destructor 
   wxMutex();
@@ -57,6 +75,7 @@ public:
 
   // Returns true if the mutex is locked.
   bool IsLocked() const { return (m_locked > 0); }
+
 protected:
   friend class wxCondition;
 
@@ -64,10 +83,13 @@ protected:
   wxMutexInternal *p_internal;
 };
 
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 // Condition handler.
+// ----------------------------------------------------------------------------
+
 class wxConditionInternal;
-class WXDLLEXPORT wxCondition {
+class WXDLLEXPORT wxCondition 
+{
 public:
   // constructor & destructor
   wxCondition();
@@ -81,14 +103,18 @@ public:
   void Signal();
   // Broadcasts to all "Waiters".
   void Broadcast();
+
 private:
   wxConditionInternal *p_internal;
 };
 
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 // Thread management class
+// ----------------------------------------------------------------------------
+
 class wxThreadInternal;
-class WXDLLEXPORT wxThread {
+class WXDLLEXPORT wxThread 
+{
 public:
   // constructor & destructor.
   wxThread();
@@ -126,6 +152,9 @@ public:
   bool IsAlive() const;
   // Returns true if the thread is running (not paused, not killed).
   bool IsRunning() const;
+  // Returns true if the thread is suspended
+  bool IsPaused() const { return IsAlive() && !IsRunning(); }
+
   // Returns true if the thread is the main thread (aka the GUI thread).
   static bool IsMain();
 
@@ -137,6 +166,7 @@ protected:
   void TestDestroy();
   // Exits from the current thread.
   void Exit(void *status = NULL);
+
 private:
   // Entry point for the thread.
   virtual void *Entry() = 0;
@@ -147,11 +177,21 @@ private:
   wxThreadInternal *p_internal;
 };
 
-// ---------------------------------------------------------------------------
-// Global variables
+// ----------------------------------------------------------------------------
+// Automatic initialization
+// ----------------------------------------------------------------------------
 
-// GUI mutex handling.
-void WXDLLEXPORT wxMutexGuiEnter();
-void WXDLLEXPORT wxMutexGuiLeave();
+class wxThreadModule : public wxModule 
+{
+  DECLARE_DYNAMIC_CLASS(wxThreadModule)
+  
+public:
+  wxThreadModule() {}
 
-#endif
+  virtual bool OnInit();
+  virtual void OnExit();
+};
+
+
+
+#endif // __THREADH__