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

#ifndef __gnu_xml_xpath_VariableReference__
#define __gnu_xml_xpath_VariableReference__

#pragma interface

#include <gnu/xml/xpath/Expr.h>
extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace xpath
      {
          class Expr;
          class VariableReference;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace
      {
          class QName;
      }
      namespace xpath
      {
          class XPathVariableResolver;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
      }
    }
  }
}

class gnu::xml::xpath::VariableReference : public ::gnu::xml::xpath::Expr
{

public:
  VariableReference(::javax::xml::xpath::XPathVariableResolver *, ::javax::xml::namespace::QName *);
  virtual ::java::lang::Object * evaluate(::org::w3c::dom::Node *, jint, jint);
  virtual ::gnu::xml::xpath::Expr * clone(::java::lang::Object *);
  virtual jboolean references(::javax::xml::namespace::QName *);
  virtual ::java::lang::String * toString();
public: // actually package-private
  ::javax::xml::xpath::XPathVariableResolver * __attribute__((aligned(__alignof__( ::gnu::xml::xpath::Expr)))) resolver;
  ::javax::xml::namespace::QName * name;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_xpath_VariableReference__
