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

#ifndef __gnu_javax_net_ssl_provider_CompressionMethod__
#define __gnu_javax_net_ssl_provider_CompressionMethod__

#pragma interface

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

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

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

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

#endif // __gnu_javax_net_ssl_provider_CompressionMethod__
