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

#ifndef __gnu_javax_net_ssl_provider_CertificateType__
#define __gnu_javax_net_ssl_provider_CertificateType__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class CertificateType;
          }
        }
      }
    }
  }
}

class gnu::javax::net::ssl::provider::CertificateType : public ::java::lang::Enum
{

  CertificateType(::java::lang::String *, jint, jint);
public:
  static ::gnu::javax::net::ssl::provider::CertificateType * forValue(jint);
  static JArray< ::gnu::javax::net::ssl::provider::CertificateType * > * values();
  static ::gnu::javax::net::ssl::provider::CertificateType * valueOf(::java::lang::String *);
  static ::gnu::javax::net::ssl::provider::CertificateType * X509;
  static ::gnu::javax::net::ssl::provider::CertificateType * OPEN_PGP;
private:
  jint __attribute__((aligned(__alignof__( ::java::lang::Enum)))) value;
  static JArray< ::gnu::javax::net::ssl::provider::CertificateType * > * ENUM$VALUES;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_net_ssl_provider_CertificateType__
