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

#ifndef __javax_xml_parsers_FactoryConfigurationError__
#define __javax_xml_parsers_FactoryConfigurationError__

#pragma interface

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

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

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

#endif // __javax_xml_parsers_FactoryConfigurationError__
