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

#ifndef __gnu_xml_xpath_Selector__
#define __gnu_xml_xpath_Selector__

#pragma interface

#include <gnu/xml/xpath/Path.h>
#include <gcj/array.h>

extern "Java"
{
  namespace gnu
  {
    namespace xml
    {
      namespace xpath
      {
          class Expr;
          class Selector;
          class Test;
      }
    }
  }
  namespace javax
  {
    namespace xml
    {
      namespace namespace$
      {
          class QName;
      }
    }
  }
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
      }
    }
  }
}

class gnu::xml::xpath::Selector : public ::gnu::xml::xpath::Path
{

public:
  Selector(jint, ::java::util::List *);
  JArray< ::gnu::xml::xpath::Test * > * getTests();
  jboolean matches(::org::w3c::dom::Node *);
public: // actually package-private
  jboolean matches(::org::w3c::dom::Node *, jint, jint);
private:
  jint getContextPosition(::org::w3c::dom::Node *);
  jint getContextSize(::org::w3c::dom::Node *);
public:
  ::java::lang::Object * evaluate(::org::w3c::dom::Node *, jint, jint);
public: // actually package-private
  ::java::util::Collection * evaluate(::org::w3c::dom::Node *, ::java::util::Collection *);
  ::java::util::List * filterCandidates(::java::util::List *, jboolean);
  void addCandidates(::org::w3c::dom::Node *, ::java::util::Collection *);
  void addChildNodes(::org::w3c::dom::Node *, ::java::util::Collection *, jboolean);
  void addParentNode(::org::w3c::dom::Node *, ::java::util::Collection *, jboolean);
  void addFollowingNodes(::org::w3c::dom::Node *, ::java::util::Collection *, jboolean);
  void addPrecedingNodes(::org::w3c::dom::Node *, ::java::util::Collection *, jboolean);
  void addAttributes(::org::w3c::dom::Node *, ::java::util::Collection *);
  void addNamespaceAttributes(::org::w3c::dom::Node *, ::java::util::Collection *);
  jboolean isNamespaceAttribute(::org::w3c::dom::Node *);
public:
  ::gnu::xml::xpath::Expr * clone(::java::lang::Object *);
  jboolean references(::javax::xml::namespace$::QName *);
  ::java::lang::String * toString();
  static const jint ANCESTOR = 0;
  static const jint ANCESTOR_OR_SELF = 1;
  static const jint ATTRIBUTE = 2;
  static const jint CHILD = 3;
  static const jint DESCENDANT = 4;
  static const jint DESCENDANT_OR_SELF = 5;
  static const jint FOLLOWING = 6;
  static const jint FOLLOWING_SIBLING = 7;
  static const jint NAMESPACE = 8;
  static const jint PARENT = 9;
  static const jint PRECEDING = 10;
  static const jint PRECEDING_SIBLING = 11;
  static const jint SELF = 12;
public: // actually package-private
  jint __attribute__((aligned(__alignof__( ::gnu::xml::xpath::Path)))) axis;
  JArray< ::gnu::xml::xpath::Test * > * tests;
public:
  static ::java::lang::Class class$;
};

#endif // __gnu_xml_xpath_Selector__