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

#ifndef __java_security_cert_PolicyQualifierInfo__
#define __java_security_cert_PolicyQualifierInfo__

#pragma interface

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

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace der
        {
            class DERValue;
        }
      }
    }
  }
  namespace java
  {
    namespace security
    {
      namespace cert
      {
          class PolicyQualifierInfo;
      }
    }
  }
}

class java::security::cert::PolicyQualifierInfo : public ::java::lang::Object
{

public:
  PolicyQualifierInfo(JArray< jbyte > *);
  virtual ::java::lang::String * getPolicyQualifierId();
  virtual JArray< jbyte > * getEncoded();
  virtual JArray< jbyte > * getPolicyQualifier();
  virtual ::java::lang::String * toString();
private:
  ::gnu::java::security::OID * __attribute__((aligned(__alignof__( ::java::lang::Object)))) oid;
  JArray< jbyte > * encoded;
  ::gnu::java::security::der::DERValue * qualifier;
public:
  static ::java::lang::Class class$;
};

#endif // __java_security_cert_PolicyQualifierInfo__
