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

#ifndef __gnu_xml_xpath_XPathFactoryImpl__
#define __gnu_xml_xpath_XPathFactoryImpl__

#pragma interface

#include <javax/xml/xpath/XPathFactory.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace xpath
      {
          class XPathFactoryImpl;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace xpath
      {
          class XPath;
          class XPathFunctionResolver;
          class XPathVariableResolver;
      }
    }
  }
}

class gnu::xml::xpath::XPathFactoryImpl : public ::javax::xml::xpath::XPathFactory
{

public:
  XPathFactoryImpl();
  virtual jboolean isObjectModelSupported(::java::lang::String *);
  virtual void setFeature(::java::lang::String *, jboolean);
  virtual jboolean getFeature(::java::lang::String *);
  virtual void setXPathVariableResolver(::javax::xml::xpath::XPathVariableResolver *);
  virtual void setXPathFunctionResolver(::javax::xml::xpath::XPathFunctionResolver *);
  virtual ::javax::xml::xpath::XPath * newXPath();
public: // actually package-private
  ::javax::xml::xpath::XPathVariableResolver * __attribute__((aligned(__alignof__( ::javax::xml::xpath::XPathFactory)))) variableResolver;
  ::javax::xml::xpath::XPathFunctionResolver * functionResolver;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_xpath_XPathFactoryImpl__
