KHTML
dom2_traversal.h
Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef _dom2_traversal_h_
00028 #define _dom2_traversal_h_
00029 #include <dom/dom_node.h>
00030 #include <dom/dom_misc.h>
00031 
00032 #include <kdelibs_export.h>
00033 
00034 namespace DOM {
00035 class Node;
00036 class NodeFilter;
00037 class NodeImpl;
00038 class NodeIteratorImpl;
00039 class NodeFilterImpl;
00040 class TreeWalkerImpl;
00041 class CustomNodeFilter;
00042 class CustomNodeFilterImpl;
00043 
00060 class KHTML_EXPORT NodeIterator
00061 {
00062     friend class NodeIteratorImpl;
00063     friend class Document;
00064 public:
00065     NodeIterator();
00066     NodeIterator(const NodeIterator &other);
00067 
00068     NodeIterator & operator = (const NodeIterator &other);
00069 
00070     ~NodeIterator();
00071 
00075     Node root();
00076 
00084     unsigned long whatToShow();
00085 
00089     NodeFilter filter();
00090 
00107     bool expandEntityReferences();
00108 
00123     Node nextNode();
00124 
00138     Node previousNode();
00139 
00146     void detach();
00147 
00152     NodeIteratorImpl *handle() const;
00153     bool isNull() const;
00154 
00155 protected:
00156     NodeIteratorImpl *impl;
00157     NodeIterator(NodeIteratorImpl *i);
00158 };
00159 
00160 
00184 class KHTML_EXPORT NodeFilter
00185 {
00186     friend class NodeIterator;
00187     friend class NodeIteratorImpl;
00188     friend class TreeWalker;
00189     friend class TreeWalkerImpl;
00190     friend class NodeFilterImpl;
00191 public:
00192     NodeFilter();
00193     NodeFilter(const NodeFilter &other);
00194     NodeFilter(NodeFilterImpl *i);
00195 
00196     virtual NodeFilter & operator = (const NodeFilter &other);
00197 
00198     virtual ~NodeFilter();
00204     enum AcceptCode {
00205         FILTER_ACCEPT = 1,
00206         FILTER_REJECT = 2,
00207         FILTER_SKIP   = 3
00208     };
00209 
00217     enum ShowCode {
00218         SHOW_ALL                       = 0xFFFFFFFF,
00219         SHOW_ELEMENT                   = 0x00000001,
00220         SHOW_ATTRIBUTE                 = 0x00000002,
00221         SHOW_TEXT                      = 0x00000004,
00222         SHOW_CDATA_SECTION             = 0x00000008,
00223         SHOW_ENTITY_REFERENCE          = 0x00000010,
00224         SHOW_ENTITY                    = 0x00000020,
00225         SHOW_PROCESSING_INSTRUCTION    = 0x00000040,
00226         SHOW_COMMENT                   = 0x00000080,
00227         SHOW_DOCUMENT                  = 0x00000100,
00228         SHOW_DOCUMENT_TYPE             = 0x00000200,
00229         SHOW_DOCUMENT_FRAGMENT         = 0x00000400,
00230         SHOW_NOTATION                  = 0x00000800
00231     };
00232 
00247     virtual short acceptNode (const Node &n);
00248 
00253     virtual NodeFilterImpl *handle() const;
00254     virtual bool isNull() const;
00255 
00256     void setCustomNodeFilter(CustomNodeFilter *custom);
00257     CustomNodeFilter *customNodeFilter();
00258     static NodeFilter createCustom(CustomNodeFilter *custom);
00259 
00260 protected:
00261     NodeFilterImpl *impl;
00262 };
00263 
00295 class KHTML_EXPORT CustomNodeFilter : public DomShared {
00296 public:
00297     CustomNodeFilter();
00298     virtual ~CustomNodeFilter();
00299     virtual short acceptNode (const Node &n);
00300     virtual bool isNull();
00301 
00310     virtual DOMString customNodeFilterType();
00311 
00312 protected:
00317     CustomNodeFilterImpl *impl;
00318 };
00319 
00339 class KHTML_EXPORT TreeWalker
00340 {
00341     friend class Document;
00342     friend class TreeWalkerImpl;
00343 public:
00344     TreeWalker();
00345     TreeWalker(const TreeWalker &other);
00346 
00347     TreeWalker & operator = (const TreeWalker &other);
00348 
00349     ~TreeWalker();
00350 
00351 
00355     Node root();
00356 
00364     unsigned long whatToShow();
00365 
00369     NodeFilter filter();
00370 
00385     bool expandEntityReferences();
00386 
00400     Node currentNode();
00401 
00405     void setCurrentNode(const Node &_currentNode);
00406 
00421     Node parentNode();
00422 
00437     Node firstChild();
00438 
00453     Node lastChild();
00454 
00469     Node previousSibling();
00470 
00485     Node nextSibling();
00486 
00501     Node previousNode();
00502 
00517     Node nextNode();
00518 
00523     TreeWalkerImpl *handle() const;
00524     bool isNull() const;
00525 
00526 protected:
00527     TreeWalker(TreeWalkerImpl *i);
00528     TreeWalkerImpl *impl;
00529 };
00530 
00531 
00532 
00533 
00534 
00615 } 
00616 
00617 #endif