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

#ifndef __org_w3c_dom_traversal_TreeWalker__
#define __org_w3c_dom_traversal_TreeWalker__

#pragma interface

#include <java/lang/Object.h>
extern "Java"
{
  namespace org
  {
    namespace w3c
    {
      namespace dom
      {
          class Node;
        namespace traversal
        {
            class NodeFilter;
            class TreeWalker;
        }
      }
    }
  }
}

class org::w3c::dom::traversal::TreeWalker : public ::java::lang::Object
{

public:
  virtual ::org::w3c::dom::Node * getRoot() = 0;
  virtual jint getWhatToShow() = 0;
  virtual ::org::w3c::dom::traversal::NodeFilter * getFilter() = 0;
  virtual jboolean getExpandEntityReferences() = 0;
  virtual ::org::w3c::dom::Node * getCurrentNode() = 0;
  virtual void setCurrentNode(::org::w3c::dom::Node *) = 0;
  virtual ::org::w3c::dom::Node * parentNode() = 0;
  virtual ::org::w3c::dom::Node * firstChild() = 0;
  virtual ::org::w3c::dom::Node * lastChild() = 0;
  virtual ::org::w3c::dom::Node * previousSibling() = 0;
  virtual ::org::w3c::dom::Node * nextSibling() = 0;
  virtual ::org::w3c::dom::Node * previousNode() = 0;
  virtual ::org::w3c::dom::Node * nextNode() = 0;
  static ::java::lang::Class class$;
} __attribute__ ((java_interface));

#endif // __org_w3c_dom_traversal_TreeWalker__
