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

#ifndef __gnu_javax_net_ssl_provider_ServerNameList$NameType__
#define __gnu_javax_net_ssl_provider_ServerNameList$NameType__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace net
      {
        namespace ssl
        {
          namespace provider
          {
              class ServerNameList$NameType;
          }
        }
      }
    }
  }
}

class gnu::javax::net::ssl::provider::ServerNameList$NameType : public ::java::lang::Enum
{

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

#endif // __gnu_javax_net_ssl_provider_ServerNameList$NameType__
