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

#ifndef __gnu_xml_validation_xmlschema_XMLSchemaValidator__
#define __gnu_xml_validation_xmlschema_XMLSchemaValidator__

#pragma interface

#include <javax/xml/validation/Validator.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace validation
      {
        namespace xmlschema
        {
            class XMLSchema;
            class XMLSchemaValidator;
        }
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace transform
      {
          class Result;
          class Source;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
        namespace ls
        {
            class LSResourceResolver;
        }
      }
    }
    namespace xml
    {
      namespace sax
      {
          class ErrorHandler;
      }
    }
  }
}

class gnu::xml::validation::xmlschema::XMLSchemaValidator : public ::javax::xml::validation::Validator
{

public: // actually package-private
  XMLSchemaValidator(::gnu::xml::validation::xmlschema::XMLSchema *);
public:
  void reset();
  void validate(::javax::xml::transform::Source *, ::javax::xml::transform::Result *);
  ::org::xml::sax::ErrorHandler * getErrorHandler();
  void setErrorHandler(::org::xml::sax::ErrorHandler *);
  ::org::w3c::dom::ls::LSResourceResolver * getResourceResolver();
  void setResourceResolver(::org::w3c::dom::ls::LSResourceResolver *);
public: // actually package-private
  ::gnu::xml::validation::xmlschema::XMLSchema * __attribute__((aligned(__alignof__( ::javax::xml::validation::Validator)))) schema;
  ::org::xml::sax::ErrorHandler * errorHandler;
  ::org::w3c::dom::ls::LSResourceResolver * resourceResolver;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_validation_xmlschema_XMLSchemaValidator__
