
// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __gnu_java_awt_peer_qt_MainQtThread__
#define __gnu_java_awt_peer_qt_MainQtThread__

#pragma interface

#include <java/lang/Thread.h>
extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace awt
      {
        namespace peer
        {
          namespace qt
          {
              class MainQtThread;
          }
        }
      }
    }
  }
}

class gnu::java::awt::peer::qt::MainQtThread : public ::java::lang::Thread
{

public:
  MainQtThread(::java::lang::String *, jboolean);
  virtual jboolean isRunning();
  virtual jlong init(::java::lang::String *, jboolean);
  virtual void exec(jlong);
  virtual void run();
public: // actually package-private
  jlong __attribute__((aligned(__alignof__( ::java::lang::Thread)))) QApplicationPointer;
  jlong mainThreadInterface;
  ::java::lang::String * theme;
private:
  jboolean running;
  jboolean doublebuffer;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_awt_peer_qt_MainQtThread__
