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

#ifndef __gnu_classpath_jdwp_JdwpConstants$Error__
#define __gnu_classpath_jdwp_JdwpConstants$Error__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace jdwp
      {
          class JdwpConstants$Error;
      }
    }
  }
}

class gnu::classpath::jdwp::JdwpConstants$Error : public ::java::lang::Object
{

public:
  JdwpConstants$Error();
  static const jshort NONE = 0;
  static const jshort INVALID_THREAD = 10;
  static const jshort INVALID_THREAD_GROUP = 11;
  static const jshort INVALID_PRIORITY = 12;
  static const jshort THREAD_NOT_SUSPENDED = 13;
  static const jshort THREAD_SUSPENDED = 14;
  static const jshort INVALID_OBJECT = 20;
  static const jshort INVALID_CLASS = 21;
  static const jshort CLASS_NOT_PREPARED = 22;
  static const jshort INVALID_METHODID = 23;
  static const jshort INVALID_LOCATION = 24;
  static const jshort INVALID_FIELDID = 25;
  static const jshort INVALID_FRAMEID = 30;
  static const jshort NO_MORE_FRAMES = 31;
  static const jshort OPAQUE_FRAME = 32;
  static const jshort NOT_CURRENT_FRAME = 33;
  static const jshort TYPE_MISMATCH = 34;
  static const jshort INVALID_SLOT = 35;
  static const jshort DUPLICATE = 40;
  static const jshort NOT_FOUND = 41;
  static const jshort INVALID_MONITOR = 50;
  static const jshort NOT_MONITOR_OWNER = 51;
  static const jshort INTERRUPT = 52;
  static const jshort INVALID_CLASS_FORMAT = 60;
  static const jshort CIRCULAR_CLASS_DEFINITION = 61;
  static const jshort FAILS_VERIFICATION = 62;
  static const jshort ADD_METHOD_NOT_IMPLEMENTED = 63;
  static const jshort SCHEMA_CHANGE_NOT_IMPLEMENTED = 64;
  static const jshort INVALID_TYPESTATE = 65;
  static const jshort HIERARCHY_CHANGE_NOT_IMPLEMENTED = 66;
  static const jshort DELETE_METHOD_NOT_IMPLEMENTED = 67;
  static const jshort UNSUPPORTED_VERSION = 68;
  static const jshort NAMES_DONT_MATCH = 69;
  static const jshort CLASS_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 70;
  static const jshort METHOD_MODIFIERS_CHANGE_NOT_IMPLEMENTED = 71;
  static const jshort NOT_IMPLEMENTED = 99;
  static const jshort NULL_POINTER = 100;
  static const jshort ABSENT_INFORMATION = 101;
  static const jshort INVALID_EVENT_TYPE = 102;
  static const jshort ILLEGAL_ARGUMENT = 103;
  static const jshort OUT_OF_MEMORY = 110;
  static const jshort ACCESS_DENIED = 111;
  static const jshort VM_DEAD = 112;
  static const jshort INTERNAL = 113;
  static const jshort UNATTACHED_THREAD = 115;
  static const jshort INVALID_TAG = 500;
  static const jshort ALREADY_INVOKING = 502;
  static const jshort INVALID_INDEX = 503;
  static const jshort INVALID_LENGTH = 504;
  static const jshort INVALID_STRING = 506;
  static const jshort INVALID_CLASS_LOADER = 507;
  static const jshort INVALID_ARRAY = 508;
  static const jshort TRANSPORT_LOAD = 509;
  static const jshort TRANSPORT_INIT = 510;
  static const jshort NATIVE_METHOD = 511;
  static const jshort INVALID_COUNT = 512;
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_jdwp_JdwpConstants$Error__
