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

#ifndef __gnu_java_security_x509_ext_PolicyConstraint__
#define __gnu_java_security_x509_ext_PolicyConstraint__

#pragma interface

#include <gnu/java/security/x509/ext/Extension$Value.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace java
    {
      namespace security
      {
          class OID;
        namespace x509
        {
          namespace ext
          {
              class PolicyConstraint;
          }
        }
      }
    }
  }
}

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

public:
  PolicyConstraint(JArray< jbyte > *);
  virtual jint getRequireExplicitPolicy();
  virtual jint getInhibitPolicyMapping();
  virtual ::java::lang::String * toString();
  static ::gnu::java::security::OID * ID;
private:
  jint __attribute__((aligned(__alignof__( ::gnu::java::security::x509::ext::Extension$Value)))) requireExplicitPolicy;
  jint inhibitPolicyMapping;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_java_security_x509_ext_PolicyConstraint__
