dom2_traversal.h00001
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
|