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

#ifndef __java_security_cert_PKIXBuilderParameters__
#define __java_security_cert_PKIXBuilderParameters__

#pragma interface

#include <java/security/cert/PKIXParameters.h>
extern "Java"
{
  namespace java
  {
    namespace security
    {
        class KeyStore;
      namespace cert
      {
          class CertSelector;
          class PKIXBuilderParameters;
      }
    }
  }
}

class java::security::cert::PKIXBuilderParameters : public ::java::security::cert::PKIXParameters
{

public:
  PKIXBuilderParameters(::java::security::KeyStore *, ::java::security::cert::CertSelector *);
  PKIXBuilderParameters(::java::util::Set *, ::java::security::cert::CertSelector *);
  virtual jint getMaxPathLength();
  virtual void setMaxPathLength(jint);
  virtual ::java::lang::String * toString();
private:
  jint __attribute__((aligned(__alignof__( ::java::security::cert::PKIXParameters)))) maxPathLength;
public:
  static ::java::lang::Class class$;
};

#endif // __java_security_cert_PKIXBuilderParameters__
