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

#ifndef __gnu_javax_crypto_key_KeyAgreementException__
#define __gnu_javax_crypto_key_KeyAgreementException__

#pragma interface

#include <java/security/KeyManagementException.h>
extern "Java"
{
  namespace gnu
  {
    namespace javax
    {
      namespace crypto
      {
        namespace key
        {
            class KeyAgreementException;
        }
      }
    }
  }
}

class gnu::javax::crypto::key::KeyAgreementException : public ::java::security::KeyManagementException
{

public:
  KeyAgreementException();
  KeyAgreementException(::java::lang::String *);
  KeyAgreementException(::java::lang::String *, ::java::lang::Throwable *);
  virtual ::java::lang::Throwable * getCause();
  virtual void printStackTrace();
  virtual void printStackTrace(::java::io::PrintStream *);
  virtual void printStackTrace(::java::io::PrintWriter *);
  virtual ::java::lang::String * toString();
private:
  ::java::lang::Throwable * __attribute__((aligned(__alignof__( ::java::security::KeyManagementException)))) cause;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_javax_crypto_key_KeyAgreementException__
