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

#ifndef __gnu_xml_libxmlj_dom_GnomeXPathExpression__
#define __gnu_xml_libxmlj_dom_GnomeXPathExpression__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace libxmlj
      {
        namespace dom
        {
            class GnomeDocument;
            class GnomeXPathExpression;
        }
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
        namespace xpath
        {
            class XPathNSResolver;
        }
      }
    }
  }
}

class gnu::xml::libxmlj::dom::GnomeXPathExpression : public ::java::lang::Object
{

public: // actually package-private
  GnomeXPathExpression(::gnu::xml::libxmlj::dom::GnomeDocument *, ::java::lang::String *, ::org::w3c::dom::xpath::XPathNSResolver *);
public: // actually protected
  virtual void finalize();
private:
  ::java::lang::Object * init(::java::lang::String *);
  void free(::java::lang::Object *);
public:
  virtual ::java::lang::Object * evaluate(::org::w3c::dom::Node *, jshort, ::java::lang::Object *);
private:
  ::java::lang::Object * doEvaluate(::java::lang::Object *, ::org::w3c::dom::Node *, jshort, ::java::lang::Object *);
public: // actually package-private
  ::java::lang::Object * __attribute__((aligned(__alignof__( ::java::lang::Object)))) expr;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_libxmlj_dom_GnomeXPathExpression__
