#pragma interface "thread.h"
 #endif
 
-// ----------------------------------------------------------------------------
-// headers
-// ----------------------------------------------------------------------------
 #include "wx/object.h"
 #include "wx/setup.h"
+#include "wx/module.h"
 
 // ----------------------------------------------------------------------------
 // constants
 // ----------------------------------------------------------------------------
 
-typedef enum {
+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_MISC_ERROR
 } wxMutexError;
 
-typedef enum {
+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_MISC_ERROR         // Some other error
 } wxThreadError;
 
-// defines the interval of priority.
+/* defines the interval of priority. */
 #define WXTHREAD_MIN_PRIORITY     0
 #define WXTHREAD_DEFAULT_PRIORITY 50
 #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();
 // ----------------------------------------------------------------------------
 // Condition handler.
 // ----------------------------------------------------------------------------
+
 class wxConditionInternal;
-class WXDLLEXPORT wxCondition {
+class WXDLLEXPORT wxCondition 
+{
 public:
   // constructor & destructor
   wxCondition();
 // ----------------------------------------------------------------------------
 // Thread management class
 // ----------------------------------------------------------------------------
+
 class wxThreadInternal;
-class WXDLLEXPORT wxThread {
+class WXDLLEXPORT wxThread 
+{
 public:
   // constructor & destructor.
   wxThread();
 };
 
 // ----------------------------------------------------------------------------
-// Global functions and variables
+// Automatic initialization
 // ----------------------------------------------------------------------------
 
-// GUI mutex handling.
-void WXDLLEXPORT wxMutexGuiEnter();
-void WXDLLEXPORT wxMutexGuiLeave();
+class wxThreadModule : public wxModule 
+{
+  DECLARE_DYNAMIC_CLASS(wxThreadModule)
+  
+public:
+  wxThreadModule() {}
+
+  virtual bool OnInit();
+  virtual void OnExit();
+};
+
+
 
 #endif // __THREADH__
 
 // Returns menu item id or -1 if none.
 WXDLLEXPORT int wxFindMenuItemId(wxFrame *frame, const wxString& menuString, const wxString& itemString);
 
-// A debugging stream buffer.
-// Under Windows, this writes to the Windows debug output.
-// Under other platforms, it writes to cerr.
-
-// ALl this horrible gubbins required for Borland, because the calling
-// convention needs to be the same as for streambuf.
-// Thanks to Gerhard.Vogt@embl-heidelberg.de for this solution.
-
-#if defined(__BORLANDC__) && defined(__BCOPT__) && !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
-#pragma option -po-
-#endif
-
-// Can't export a class derived from a non-export class
-#if !defined(_WINDLL) && !defined(WXUSINGDLL)
-
-// #ifdef new
-// #undef new
-// #endif
-
-class WXDLLEXPORT wxDebugStreamBuf: public streambuf
-{
-  public:
-    wxDebugStreamBuf(void);
-    ~wxDebugStreamBuf(void) {}
-
-    int overflow(int i);
-    inline int underflow(void) { return EOF; }
-    int sync(void);
-};
-
-// #if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS
-// #define new WXDEBUG_NEW
-// #endif
-
-#endif
-
-#if defined(__BORLANDC__) && defined(__BCOPT__) && !defined(_RTL_ALLOW_po) && !defined(__FLAT__)
-#pragma option -po.
-#endif
-
 /*
 #if (!defined(__MINMAX_DEFINED) && !defined(max))
 #define max(a,b)            (((a) > (b)) ? (a) : (b))
 #define __MINMAX_DEFINED 1
 #endif
 */
+
 #define wxMax(a,b)            (((a) > (b)) ? (a) : (b))
 #define wxMin(a,b)            (((a) < (b)) ? (a) : (b))
 
 
 test.o
 
 # additional things needed to link
-BIN_LINK= $(THREADS_LINK)
+BIN_LINK=
 
 # additional things needed to compile
 ADD_COMPILE=
 
 $(OPENGL_INCLUDE) \
 $(X_CFLAGS)
 
-# -I$(WXBASEDIR)/src/png \
-# -I$(WXBASEDIR)/src/zlib \
-# -I$(WXBASEDIR)/src/gdk_imlib \
-
 WX_LIBS = -L$(GLOBAL_LIB_DIR) $(WX_LINK)
 
 OPENGL_LIBS = $(OPENGL_LIBRARY) $(OPENGL_LINK)
 
   return menuBar->FindMenuItem (menuString, itemString);
 }
 
-/*
- * wxDebugStreamBuf
- */
-#if !defined(_WINDLL)
- 
-wxDebugStreamBuf::wxDebugStreamBuf(void)
-{
-       // <iostream> usage doesn't need this, and i have no idea how to simulate it.
-#if wxUSE_IOSTREAMH
-       if (allocate())
-         setp(base(),ebuf());
-#endif
-}
-
-int wxDebugStreamBuf::overflow(int WXUNUSED(i))
-{
-  int len = pptr() - pbase();
-  char *txt = new char[len+1];
-  strncpy(txt, pbase(), len);
-  txt[len] = '\0';
-#ifdef __WXMSW__
-  OutputDebugString((LPCSTR)txt);
-#else
-  fprintf(stderr, txt);
-#endif
-  setp(pbase(), epptr());
-  delete[] txt;
-  return EOF;
-}
-
-int wxDebugStreamBuf::sync(void)
-{
-  int len = pptr() - pbase();
-  char *txt = new char[len+1];
-  strncpy(txt, pbase(), len);
-  txt[len] = '\0';
-#ifdef __WXMSW__
-  OutputDebugString((LPCSTR)txt);
-#else
-  fprintf(stderr, txt);
-#endif
-  setp(pbase(), epptr());
-  delete[] txt;
-  return 0;
-}
-
-#endif
-
 /*
 On Fri, 21 Jul 1995, Paul Craven wrote:
 
 
 {
     static bool inOnIdle = FALSE;
 
-    // Avoid recursion (via ProcessEvent default case)
+    /* Avoid recursion (via ProcessEvent default case) */
     if (inOnIdle)
         return;
 
     inOnIdle = TRUE;
 
-    // 'Garbage' collection of windows deleted with Close().
+    /* 'Garbage' collection of windows deleted with Close(). */
     DeletePendingObjects();
 
-    // flush the logged messages if any
-    wxLog *pLog = wxLog::GetActiveTarget();
-    if (pLog != NULL && pLog->HasPendingMessages())
-        pLog->Flush();
+    /* flush the logged messages if any */
+    wxLog *log = wxLog::GetActiveTarget();
+    if (log != NULL && log->HasPendingMessages())
+        log->Flush();
 
-    // Send OnIdle events to all windows
+    /* Send OnIdle events to all windows */
     bool needMore = SendIdleEvents();
 
     if (needMore)
 
     wxClassInfo::InitializeClasses();
 
-  /* Debug stream no longer used
-#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
-
-  streambuf* sBuf = new wxDebugStreamBuf;
-  ostream* oStr = new ostream(sBuf) ;
-  wxDebugContext::SetStream(oStr, sBuf);
-#endif
-*/
 
     if (!wxTheApp)
     {
         wxDebugContext::Dump();
         wxDebugContext::PrintStatistics();
     }
-//  wxDebugContext::SetStream(NULL, NULL);
 
 #endif
 
 
 }
 
 
-// Automatic initialization
-class wxThreadModule : public wxModule {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-public:
-  bool OnInit();
-  void OnExit();
-};
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
-bool wxThreadModule::OnInit() {
+bool wxThreadModule::OnInit() 
+{
   wxMainMutex = new wxMutex();
   wxMainMutex->Lock();
   return TRUE;
   delete wxMainMutex;
 }
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
 
 void wxMutexGuiEnter()
 {
 
 
 static pthread_t p_mainid;
 
-wxMutex *wxMainMutex; // controls access to all GUI functions
+wxMutex *wxMainMutex; /* controls access to all GUI functions */
 
 //--------------------------------------------------------------------
 // common GUI thread code
 {
     wxThread *thread = (wxThread *)ptr;
 
-    // Call the main entry
+    /* Call the main entry */
     pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
     void* status = thread->Entry();
 
     if (p_internal->state != STATE_IDLE)
         return wxTHREAD_RUNNING;
 
-    // Change thread priority
+    /* Change thread priority */
     pthread_attr_init(&a);
     pthread_attr_getschedpolicy(&a, &p);
 
     delete p_internal;
 }
 
-// The default callback just joins the thread and throws away the result.
+/* The default callback just joins the thread and throws away the result. */
 void wxThread::OnExit()
 {
     Join();
 // wxThreadModule 
 //--------------------------------------------------------------------
 
-class wxThreadModule : public wxModule 
-{
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-  
-public:
-  virtual bool OnInit() 
-    {
-        wxMainMutex = new wxMutex();
-        wxThreadGuiInit();
-        p_mainid = pthread_self();
-       wxMainMutex->Lock();
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
-       return TRUE;
-    }
+bool wxThreadModule::OnInit() 
+{
+    wxMainMutex = new wxMutex();
+    wxThreadGuiInit();
+    p_mainid = (int)getpid();
+    wxMainMutex->Lock();
+    return TRUE;
+}
 
-  virtual void OnExit() 
-  {
-      wxMainMutex->Unlock();
-      wxThreadGuiExit();
-      delete wxMainMutex;
-  }
-};
+void wxThreadModule::OnExit()
+{
+    wxMainMutex->Unlock();
+    wxThreadGuiExit();
+    delete wxMainMutex;
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
 
 }
 
 // Global initialization
-class wxThreadModule : public wxModule {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-public:
-  virtual bool OnInit() {
+
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
+bool wxThreadModule::OnInit() 
+{
     wxMainMutex = new wxMutex();
     wxThreadGuiInit();
     p_mainid = (int)getpid();
     wxMainMutex->Lock();
-  }
+    return TRUE;
+}
 
-  virtual void OnExit() {
+void wxThreadModule::OnExit()
+{
     wxMainMutex->Unlock();
     wxThreadGuiExit();
     delete wxMainMutex;
-  }
-};
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
 {
     static bool inOnIdle = FALSE;
 
-    // Avoid recursion (via ProcessEvent default case)
+    /* Avoid recursion (via ProcessEvent default case) */
     if (inOnIdle)
         return;
 
     inOnIdle = TRUE;
 
-    // 'Garbage' collection of windows deleted with Close().
+    /* 'Garbage' collection of windows deleted with Close(). */
     DeletePendingObjects();
 
-    // flush the logged messages if any
-    wxLog *pLog = wxLog::GetActiveTarget();
-    if (pLog != NULL && pLog->HasPendingMessages())
-        pLog->Flush();
+    /* flush the logged messages if any */
+    wxLog *log = wxLog::GetActiveTarget();
+    if (log != NULL && log->HasPendingMessages())
+        log->Flush();
 
-    // Send OnIdle events to all windows
+    /* Send OnIdle events to all windows */
     bool needMore = SendIdleEvents();
 
     if (needMore)
 
     wxClassInfo::InitializeClasses();
 
-  /* Debug stream no longer used
-#if (defined(__WXDEBUG__) && wxUSE_MEMORY_TRACING) || wxUSE_DEBUG_CONTEXT
-
-  streambuf* sBuf = new wxDebugStreamBuf;
-  ostream* oStr = new ostream(sBuf) ;
-  wxDebugContext::SetStream(oStr, sBuf);
-#endif
-*/
 
     if (!wxTheApp)
     {
         wxDebugContext::Dump();
         wxDebugContext::PrintStatistics();
     }
-//  wxDebugContext::SetStream(NULL, NULL);
 
 #endif
 
 
 }
 
 
-// Automatic initialization
-class wxThreadModule : public wxModule {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-public:
-  bool OnInit();
-  void OnExit();
-};
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
-bool wxThreadModule::OnInit() {
+bool wxThreadModule::OnInit() 
+{
   wxMainMutex = new wxMutex();
   wxMainMutex->Lock();
   return TRUE;
   delete wxMainMutex;
 }
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
 
 void wxMutexGuiEnter()
 {
 
 
 static pthread_t p_mainid;
 
-wxMutex *wxMainMutex; // controls access to all GUI functions
+wxMutex *wxMainMutex; /* controls access to all GUI functions */
 
 //--------------------------------------------------------------------
 // common GUI thread code
 {
     wxThread *thread = (wxThread *)ptr;
 
-    // Call the main entry
+    /* Call the main entry */
     pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL);
     void* status = thread->Entry();
 
     if (p_internal->state != STATE_IDLE)
         return wxTHREAD_RUNNING;
 
-    // Change thread priority
+    /* Change thread priority */
     pthread_attr_init(&a);
     pthread_attr_getschedpolicy(&a, &p);
 
     delete p_internal;
 }
 
-// The default callback just joins the thread and throws away the result.
+/* The default callback just joins the thread and throws away the result. */
 void wxThread::OnExit()
 {
     Join();
 // wxThreadModule 
 //--------------------------------------------------------------------
 
-class wxThreadModule : public wxModule 
-{
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-  
-public:
-  virtual bool OnInit() 
-    {
-        wxMainMutex = new wxMutex();
-        wxThreadGuiInit();
-        p_mainid = pthread_self();
-       wxMainMutex->Lock();
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
-       return TRUE;
-    }
+bool wxThreadModule::OnInit() 
+{
+    wxMainMutex = new wxMutex();
+    wxThreadGuiInit();
+    p_mainid = (int)getpid();
+    wxMainMutex->Lock();
+    return TRUE;
+}
 
-  virtual void OnExit() 
-  {
-      wxMainMutex->Unlock();
-      wxThreadGuiExit();
-      delete wxMainMutex;
-  }
-};
+void wxThreadModule::OnExit()
+{
+    wxMainMutex->Unlock();
+    wxThreadGuiExit();
+    delete wxMainMutex;
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
 
 }
 
 // Global initialization
-class wxThreadModule : public wxModule {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-public:
-  virtual bool OnInit() {
+
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
+bool wxThreadModule::OnInit() 
+{
     wxMainMutex = new wxMutex();
     wxThreadGuiInit();
     p_mainid = (int)getpid();
     wxMainMutex->Lock();
-  }
+    return TRUE;
+}
 
-  virtual void OnExit() {
+void wxThreadModule::OnExit()
+{
     wxMainMutex->Unlock();
     wxThreadGuiExit();
     delete wxMainMutex;
-  }
-};
+}
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
 
 // wxThreadModule 
 //--------------------------------------------------------------------
 
-class wxThreadModule : public wxModule 
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
+bool wxThreadModule::OnInit() 
 {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-  
-public:
-  virtual bool OnInit() 
-    {
-        wxMainMutex = new wxMutex();
-        wxThreadGuiInit();
-        p_mainid = pthread_self();
-       wxMainMutex->Lock();
+    wxMainMutex = new wxMutex();
+    wxThreadGuiInit();
+    p_mainid = pthread_self();
+    wxMainMutex->Lock();
 
-       return TRUE;
-    }
+    return TRUE;
+}
 
-  virtual void OnExit() 
-  {
-      wxMainMutex->Unlock();
-      wxThreadGuiExit();
-      delete wxMainMutex;
-  }
+void wxThreadModule::OnExit()
+{
+    wxMainMutex->Unlock();
+    wxThreadGuiExit();
+    delete wxMainMutex;
 };
 
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
-
 #endif
   // wxUSE_THREADS
 
   Join();
 }
 
-// Automatic initialization
-class wxThreadModule : public wxModule {
-  DECLARE_DYNAMIC_CLASS(wxThreadModule)
-public:
-  virtual bool OnInit() {
-    wxMainMutex = new wxMutex();
-    p_mainid = GetCurrentThread();
-    wxMainMutex->Lock();
-    return TRUE;
-  }
-
-  // Global cleanup
-  virtual void OnExit() {
-    wxMainMutex->Unlock();
-    delete wxMainMutex;
-  }
-};
-
-IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+// GUI mutex functions
 
 void WXDLLEXPORT wxMutexGuiEnter()
 {
 {
   wxFAIL_MSG("not implemented");
 }
+
+// Automatic initialization
+
+IMPLEMENT_DYNAMIC_CLASS(wxThreadModule, wxModule)
+
+bool wxThreadModule::OnInit() 
+{
+    wxMainMutex = new wxMutex();
+    p_mainid = GetCurrentThread();
+    wxMainMutex->Lock();
+    return TRUE;
+}
+
+void wxThreadModule::OnExit() 
+{
+    wxMainMutex->Unlock();
+    delete wxMainMutex;
+};
+