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

#ifndef __java_lang_management_ThreadInfo__
#define __java_lang_management_ThreadInfo__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace javax
  {
    namespace management
    {
      namespace openmbean
      {
        class CompositeData;
        class OpenType;
        class CompositeType;
      }
    }
  }
}

class java::lang::management::ThreadInfo : public ::java::lang::Object
{
private:
  ThreadInfo (::java::lang::Thread *, jlong, jlong, ::java::lang::Object *, ::java::lang::Thread *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement *> *);
  ThreadInfo (jlong, ::java::lang::String *, ::java::lang::String *, jlong, jlong, ::java::lang::String *, jlong, ::java::lang::String *, jlong, jlong, jboolean, jboolean, JArray< ::java::lang::StackTraceElement *> *);
public: // actually package-private
  static void checkAttribute (::javax::management::openmbean::CompositeType *, ::java::lang::String *, ::javax::management::openmbean::OpenType *);
public:
  static ::java::lang::management::ThreadInfo *from (::javax::management::openmbean::CompositeData *);
  virtual jlong getBlockedCount () { return blockedCount; }
  virtual jlong getBlockedTime ();
  virtual ::java::lang::String *getLockName ();
  virtual jlong getLockOwnerId ();
  virtual ::java::lang::String *getLockOwnerName ();
  virtual JArray< ::java::lang::StackTraceElement *> *getStackTrace () { return trace; }
  virtual jlong getThreadId () { return threadId; }
  virtual ::java::lang::String *getThreadName () { return threadName; }
  virtual ::java::lang::String *getThreadState () { return threadState; }
  virtual jlong getWaitedCount () { return waitedCount; }
  virtual jlong getWaitedTime ();
  virtual jboolean isInNative () { return isInNative__; }
  virtual jboolean isSuspended () { return isSuspended__; }
  virtual ::java::lang::String *toString ();
private:
  jlong __attribute__((aligned(__alignof__( ::java::lang::Object ))))  threadId;
  ::java::lang::String *threadName;
  ::java::lang::String *threadState;
  jlong blockedCount;
  jlong blockedTime;
  ::java::lang::String *lockName;
  jlong lockOwnerId;
  ::java::lang::String *lockOwnerName;
  jlong waitedCount;
  jlong waitedTime;
  jboolean isInNative__;
  jboolean isSuspended__;
  JArray< ::java::lang::StackTraceElement *> *trace;
  static ::java::lang::management::ThreadMXBean *bean;
public:

  static ::java::lang::Class class$;
};

#endif /* __java_lang_management_ThreadInfo__ */
