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

#ifndef __gnu_xml_dom_DomXPathExpression__
#define __gnu_xml_dom_DomXPathExpression__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace dom
      {
          class DomDocument;
          class DomXPathExpression;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace xpath
      {
          class XPathExpression;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
        namespace xpath
        {
            class XPathNSResolver;
        }
      }
    }
  }
}

class gnu::xml::dom::DomXPathExpression : public ::java::lang::Object
{

public: // actually package-private
  DomXPathExpression(::gnu::xml::dom::DomDocument *, ::java::lang::String *, ::org::w3c::dom::xpath::XPathNSResolver *);
public:
  virtual ::java::lang::Object * evaluate(::org::w3c::dom::Node *, jshort, ::java::lang::Object *);
  virtual ::java::lang::String * toString();
public: // actually package-private
  ::gnu::xml::dom::DomDocument * __attribute__((aligned(__alignof__( ::java::lang::Object)))) doc;
  ::javax::xml::xpath::XPathExpression * expression;
  ::org::w3c::dom::xpath::XPathNSResolver * resolver;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_dom_DomXPathExpression__
