KHTML
dom2_traversal.cpp
Go to the documentation of this file.00001 00023 #include "dom/dom_exception.h" 00024 #include "dom/dom_string.h" 00025 #include "xml/dom2_traversalimpl.h" 00026 00027 using namespace DOM; 00028 00029 00030 NodeIterator::NodeIterator() 00031 { 00032 impl = 0; 00033 } 00034 00035 NodeIterator::NodeIterator(const NodeIterator &other) 00036 { 00037 impl = other.impl; 00038 if (impl) impl->ref(); 00039 } 00040 00041 NodeIterator::NodeIterator(NodeIteratorImpl *i) 00042 { 00043 impl = i; 00044 if (impl) impl->ref(); 00045 } 00046 00047 NodeIterator &NodeIterator::operator = (const NodeIterator &other) 00048 { 00049 if ( impl != other.impl ) { 00050 if (impl) impl->deref(); 00051 impl = other.impl; 00052 if (impl) impl->ref(); 00053 } 00054 return *this; 00055 } 00056 00057 NodeIterator::~NodeIterator() 00058 { 00059 if (impl) impl->deref(); 00060 } 00061 00062 Node NodeIterator::root() 00063 { 00064 if (impl) return impl->root(); 00065 return 0; 00066 } 00067 00068 unsigned long NodeIterator::whatToShow() 00069 { 00070 if (impl) return impl->whatToShow(); 00071 return 0; 00072 } 00073 00074 NodeFilter NodeIterator::filter() 00075 { 00076 if (impl) return impl->filter(); 00077 return 0; 00078 } 00079 00080 bool NodeIterator::expandEntityReferences() 00081 { 00082 if (impl) return impl->expandEntityReferences(); 00083 return 0; 00084 } 00085 00086 Node NodeIterator::nextNode( ) 00087 { 00088 if (!impl) 00089 throw DOMException(DOMException::INVALID_STATE_ERR); 00090 00091 int exceptioncode = 0; 00092 NodeImpl *r = impl->nextNode(exceptioncode); 00093 if (exceptioncode) 00094 throw DOMException(exceptioncode); 00095 return r; 00096 } 00097 00098 Node NodeIterator::previousNode( ) 00099 { 00100 if (!impl) 00101 throw DOMException(DOMException::INVALID_STATE_ERR); 00102 00103 int exceptioncode = 0; 00104 NodeImpl *r = impl->previousNode(exceptioncode); 00105 if (exceptioncode) 00106 throw DOMException(exceptioncode); 00107 return r; 00108 } 00109 00110 void NodeIterator::detach() 00111 { 00112 if (!impl) 00113 throw DOMException(DOMException::INVALID_STATE_ERR); 00114 00115 int exceptioncode = 0; 00116 impl->detach(exceptioncode); 00117 if (exceptioncode) 00118 throw DOMException(exceptioncode); 00119 } 00120 00121 NodeIteratorImpl *NodeIterator::handle() const 00122 { 00123 return impl; 00124 } 00125 00126 bool NodeIterator::isNull() const 00127 { 00128 return (impl == 0); 00129 } 00130 00131 // ----------------------------------------------------------- 00132 00133 NodeFilter::NodeFilter() 00134 { 00135 impl = 0; 00136 } 00137 00138 NodeFilter::NodeFilter(const NodeFilter &other) 00139 { 00140 impl = other.impl; 00141 if (impl) impl->ref(); 00142 } 00143 00144 NodeFilter::NodeFilter(NodeFilterImpl *i) 00145 { 00146 impl = i; 00147 if (impl) impl->ref(); 00148 } 00149 00150 NodeFilter &NodeFilter::operator = (const NodeFilter &other) 00151 { 00152 if ( impl != other.impl ) { 00153 if (impl) impl->deref(); 00154 impl = other.impl; 00155 if (impl) impl->ref(); 00156 } 00157 return *this; 00158 } 00159 00160 NodeFilter::~NodeFilter() 00161 { 00162 if (impl) impl->deref(); 00163 } 00164 00165 short NodeFilter::acceptNode(const Node &n) 00166 { 00167 if (impl) return impl->acceptNode(n); 00168 return 0; 00169 } 00170 00171 void NodeFilter::setCustomNodeFilter(CustomNodeFilter *custom) 00172 { 00173 if (impl) impl->setCustomNodeFilter(custom); 00174 } 00175 00176 CustomNodeFilter *NodeFilter::customNodeFilter() 00177 { 00178 if (impl) return impl->customNodeFilter(); 00179 return 0; 00180 } 00181 00182 NodeFilterImpl *NodeFilter::handle() const 00183 { 00184 return impl; 00185 } 00186 00187 bool NodeFilter::isNull() const 00188 { 00189 return (impl == 0); 00190 } 00191 00192 NodeFilter NodeFilter::createCustom(CustomNodeFilter *custom) 00193 { 00194 NodeFilterImpl *i = new NodeFilterImpl(); 00195 i->setCustomNodeFilter(custom); 00196 return i; 00197 } 00198 00199 // -------------------------------------------------------------- 00200 CustomNodeFilter::CustomNodeFilter() 00201 { 00202 impl = 0; 00203 } 00204 00205 CustomNodeFilter::~CustomNodeFilter() 00206 { 00207 } 00208 00209 short CustomNodeFilter::acceptNode (const Node &/*n*/) 00210 { 00211 return NodeFilter::FILTER_ACCEPT; 00212 } 00213 00214 bool CustomNodeFilter::isNull() 00215 { 00216 return false; 00217 } 00218 00219 DOMString CustomNodeFilter::customNodeFilterType() 00220 { 00221 return ""; 00222 } 00223 00224 // -------------------------------------------------------------- 00225 00226 TreeWalker::TreeWalker() 00227 { 00228 impl = 0; 00229 } 00230 00231 TreeWalker::TreeWalker(const TreeWalker &other) 00232 { 00233 impl = other.impl; 00234 if (impl) impl->ref(); 00235 } 00236 00237 TreeWalker::TreeWalker(TreeWalkerImpl *i) 00238 { 00239 impl = i; 00240 if (impl) impl->ref(); 00241 } 00242 00243 TreeWalker & TreeWalker::operator = (const TreeWalker &other) 00244 { 00245 if ( impl != other.impl ) { 00246 if (impl) impl->deref(); 00247 impl = other.impl; 00248 if (impl) impl->ref(); 00249 } 00250 00251 return *this; 00252 } 00253 00254 TreeWalker::~TreeWalker() 00255 { 00256 if (impl) impl->deref(); 00257 } 00258 00259 Node TreeWalker::root() 00260 { 00261 if (impl) return impl->getRoot(); 00262 return 0; 00263 } 00264 00265 unsigned long TreeWalker::whatToShow() 00266 { 00267 if (impl) return impl->getWhatToShow(); 00268 return 0; 00269 } 00270 00271 NodeFilter TreeWalker::filter() 00272 { 00273 if (impl) return impl->getFilter(); 00274 return 0; 00275 } 00276 00277 bool TreeWalker::expandEntityReferences() 00278 { 00279 if (impl) return impl->getExpandEntityReferences(); 00280 return false; 00281 } 00282 00283 Node TreeWalker::currentNode() 00284 { 00285 if (impl) return impl->getCurrentNode(); 00286 return 0; 00287 } 00288 00289 void TreeWalker::setCurrentNode(const Node& _currentNode) 00290 { 00291 if (impl) impl->setCurrentNode(_currentNode.handle()); 00292 } 00293 00294 Node TreeWalker::parentNode() 00295 { 00296 if (impl) return impl->parentNode(); 00297 return 0; 00298 } 00299 00300 Node TreeWalker::firstChild() 00301 { 00302 if (impl) return impl->firstChild(); 00303 return 0; 00304 } 00305 00306 Node TreeWalker::lastChild() 00307 { 00308 if (impl) return impl->lastChild(); 00309 return 0; 00310 } 00311 00312 Node TreeWalker::previousSibling() 00313 { 00314 if (impl) return impl->previousSibling(); 00315 return 0; 00316 } 00317 00318 Node TreeWalker::nextSibling() 00319 { 00320 if (impl) return impl->nextSibling(); 00321 return 0; 00322 } 00323 00324 Node TreeWalker::previousNode() 00325 { 00326 if (impl) return impl->previousNode(); 00327 return 0; 00328 } 00329 00330 Node TreeWalker::nextNode() 00331 { 00332 if (impl) return impl->nextNode(); 00333 return 0; 00334 } 00335 00336 TreeWalkerImpl *TreeWalker::handle() const 00337 { 00338 return impl; 00339 } 00340 00341 bool TreeWalker::isNull() const 00342 { 00343 return (impl == 0); 00344 } 00345 00346 // ----------------------------------------------------------------------- 00347 00348 /*DocumentTraversal::DocumentTraversal() 00349 { 00350 } 00351 00352 DocumentTraversal::DocumentTraversal(const DocumentTraversal &other) 00353 { 00354 } 00355 00356 DocumentTraversal &DocumentTraversal::operator = (const DocumentTraversal &other) 00357 { 00358 DocumentTraversal::operator = (other); 00359 return *this; 00360 } 00361 00362 DocumentTraversal::~DocumentTraversal() 00363 { 00364 } 00365 00366 NodeIterator DocumentTraversal::createNodeIterator( const Node &root, long whatToShow, 00367 const NodeFilter &filter, 00368 bool entityReferenceExpansion ) 00369 { 00370 return NodeIterator(); 00371 } 00372 00373 TreeWalker DocumentTraversal::createTreeWalker( const Node &root, long whatToShow, 00374 const NodeFilter &filter, 00375 bool entityReferenceExpansion ) 00376 { 00377 return TreeWalker(); 00378 } 00379 00380 */ 00381