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

#ifndef __gnu_classpath_debug_Component__
#define __gnu_classpath_debug_Component__

#pragma interface

#include <java/util/logging/Level.h>
extern "Java"
{
  namespace gnu
  {
    namespace classpath
    {
      namespace debug
      {
          class Component;
      }
    }
  }
}

class gnu::classpath::debug::Component : public ::java::util::logging::Level
{

  Component(::java::lang::String *, jint);
  Component(::java::lang::String *, jint, jint);
public:
  static ::gnu::classpath::debug::Component * forName(::java::lang::String *);
  jint startIndex();
  jint endIndex();
  static ::gnu::classpath::debug::Component * EVERYTHING;
  static ::gnu::classpath::debug::Component * SSL;
  static ::gnu::classpath::debug::Component * SSL_HANDSHAKE;
  static ::gnu::classpath::debug::Component * SSL_RECORD_LAYER;
  static ::gnu::classpath::debug::Component * SSL_KEY_EXCHANGE;
  static ::gnu::classpath::debug::Component * SSL_DELEGATED_TASK;
  static ::gnu::classpath::debug::Component * CRYPTO;
  static ::gnu::classpath::debug::Component * X509;
  static ::gnu::classpath::debug::Component * POLICY;
  static ::gnu::classpath::debug::Component * IPP;
private:
  jint __attribute__((aligned(__alignof__( ::java::util::logging::Level)))) startIndex__;
  jint endIndex__;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_classpath_debug_Component__
