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

#ifndef __javax_xml_stream_FactoryConfigurationError__
#define __javax_xml_stream_FactoryConfigurationError__

#pragma interface

#include <java/lang/Error.h>
extern "Java"
{
  namespace javax
  {
    namespace xml
    {
      namespace stream
      {
          class FactoryConfigurationError;
      }
    }
  }
}

class javax::xml::stream::FactoryConfigurationError : public ::java::lang::Error
{

public:
  FactoryConfigurationError();
  FactoryConfigurationError(::java::lang::Exception *);
  FactoryConfigurationError(::java::lang::Exception *, ::java::lang::String *);
  FactoryConfigurationError(::java::lang::String *, ::java::lang::Exception *);
  FactoryConfigurationError(::java::lang::String *);
  virtual ::java::lang::Exception * getException();
  virtual ::java::lang::String * getMessage();
private:
  ::java::lang::Exception * __attribute__((aligned(__alignof__( ::java::lang::Error)))) exception;
public:
  static ::java::lang::Class class$;
};

#endif // __javax_xml_stream_FactoryConfigurationError__
