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

#ifndef __gnu_classpath_jdwp_event_ClassPrepareEvent__
#define __gnu_classpath_jdwp_event_ClassPrepareEvent__

#pragma interface

#include <gnu/classpath/jdwp/event/Event.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace jdwp
      {
        namespace event
        {
            class ClassPrepareEvent;
        }
      }
    }
  }
}

class gnu::classpath::jdwp::event::ClassPrepareEvent : public ::gnu::classpath::jdwp::event::Event
{

public:
  ClassPrepareEvent(::java::lang::Thread *, ::java::lang::Class *, jint);
  virtual ::java::lang::Object * getParameter(jint);
public: // actually protected
  virtual void _writeData(::java::io::DataOutputStream *);
private:
  ::java::lang::Thread * __attribute__((aligned(__alignof__( ::gnu::classpath::jdwp::event::Event)))) _thread;
  ::java::lang::Class * _class;
  jint _status;
public:
  static const jint STATUS_VERIFIED = 1;
  static const jint STATUS_PREPARED = 2;
  static const jint STATUS_INITIALIZED = 4;
  static const jint STATUS_ERROR = 8;
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_jdwp_event_ClassPrepareEvent__
