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

#ifndef __javax_net_ssl_SSLEngineResult$Status__
#define __javax_net_ssl_SSLEngineResult$Status__

#pragma interface

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

extern "Java"
{
  namespace javax
  {
    namespace net
    {
      namespace ssl
      {
          class SSLEngineResult$Status;
      }
    }
  }
}

class javax::net::ssl::SSLEngineResult$Status : public ::java::lang::Enum
{

  SSLEngineResult$Status(::java::lang::String *, jint);
public:
  static JArray< ::javax::net::ssl::SSLEngineResult$Status * > * values();
  static ::javax::net::ssl::SSLEngineResult$Status * valueOf(::java::lang::String *);
  static ::javax::net::ssl::SSLEngineResult$Status * BUFFER_UNDERFLOW;
  static ::javax::net::ssl::SSLEngineResult$Status * BUFFER_OVERFLOW;
  static ::javax::net::ssl::SSLEngineResult$Status * OK;
  static ::javax::net::ssl::SSLEngineResult$Status * CLOSED;
private:
  static JArray< ::javax::net::ssl::SSLEngineResult$Status * > * ENUM$VALUES;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_net_ssl_SSLEngineResult$Status__
