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

#ifndef __gnu_java_security_ber_BERValue__
#define __gnu_java_security_ber_BERValue__

#pragma interface

#include <gnu/java/security/der/DERValue.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
        namespace ber
        {
            class BERValue;
        }
        namespace der
        {
            class DERValue;
        }
      }
    }
  }
}

class gnu::java::security::ber::BERValue : public ::gnu::java::security::der::DERValue
{

public:
  BERValue(jint, ::java::lang::Object *, JArray< jbyte > *);
  BERValue(jint, jint, ::java::lang::Object *, JArray< jbyte > *);
  BERValue(jint, ::java::lang::Object *);
  static jboolean isIndefinite(::gnu::java::security::der::DERValue *);
  virtual jboolean getIndefinite();
  virtual jint getLength();
private:
  jboolean __attribute__((aligned(__alignof__( ::gnu::java::security::der::DERValue)))) indefinite;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_ber_BERValue__
