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

#ifndef __gnu_java_security_x509_ext_Extension$Value__
#define __gnu_java_security_x509_ext_Extension$Value__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace x509
        {
          namespace ext
          {
              class Extension$Value;
          }
        }
      }
    }
  }
}

class gnu::java::security::x509::ext::Extension$Value : public ::java::lang::Object
{

public:
  Extension$Value(JArray< jbyte > *);
public: // actually protected
  Extension$Value();
public:
  virtual JArray< jbyte > * getEncoded();
  virtual jint hashCode();
  virtual jboolean equals(::java::lang::Object *);
  virtual ::java::lang::String * toString();
public: // actually protected
  JArray< jbyte > * __attribute__((aligned(__alignof__( ::java::lang::Object)))) encoded;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_x509_ext_Extension$Value__
