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

#ifndef __org_omg_PortableServer_ServantRetentionPolicyValue__
#define __org_omg_PortableServer_ServantRetentionPolicyValue__

#pragma interface

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

extern "Java"
{
  namespace org
  {
    namespace omg
    {
      namespace PortableServer
      {
          class ServantRetentionPolicyValue;
      }
    }
  }
}

class org::omg::PortableServer::ServantRetentionPolicyValue : public ::java::lang::Object
{

public: // actually protected
  ServantRetentionPolicyValue(jint);
public:
  static ::org::omg::PortableServer::ServantRetentionPolicyValue * from_int(jint);
  virtual ::java::lang::String * toString();
  virtual jint value();
private:
  static const jlong serialVersionUID = -7476100336036943822LL;
  jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) _value;
public:
  static const jint _RETAIN = 0;
  static ::org::omg::PortableServer::ServantRetentionPolicyValue * RETAIN;
  static const jint _NON_RETAIN = 1;
  static ::org::omg::PortableServer::ServantRetentionPolicyValue * NON_RETAIN;
private:
  static JArray< ::org::omg::PortableServer::ServantRetentionPolicyValue * > * enume;
  static JArray< ::java::lang::String * > * state_names;
public:
  static ::java::lang::Class class$;
};

#endif // __org_omg_PortableServer_ServantRetentionPolicyValue__
