⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dom2_traversal.cpp

📁 khtml在gtk上的移植版本
💻 CPP
字号:
/** * This file is part of the DOM implementation for KDE. * * (C) 1999 Lars Knoll (knoll@kde.org) * (C) 2000 Frederik Holljen (frederik.holljen@hig.no) * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * */#include "dom/dom2_traversal.h"#include "dom/dom_exception.h"#include "dom/dom_string.h"#include "xml/dom2_traversalimpl.h"namespace DOM {// --------------------------------------------------------------short NodeFilterCondition::acceptNode(const Node &) const{    return NodeFilter::FILTER_ACCEPT;}// --------------------------------------------------------------NodeFilter::NodeFilter() : impl(0){}NodeFilter::NodeFilter(NodeFilterCondition *condition){    impl = new NodeFilterImpl(condition);    impl->ref();}NodeFilter::NodeFilter(const NodeFilter &other){    impl = other.impl;    if (impl)         impl->ref();}NodeFilter::NodeFilter(NodeFilterImpl *i){    impl = i;    if (impl)        impl->ref();}NodeFilter &NodeFilter::operator=(const NodeFilter &other){    if (impl == other.impl)        return *this;        NodeFilterImpl *old = impl;    impl = other.impl;    if (impl)         impl->ref();    if (old)         old->deref();    return *this;}NodeFilter::~NodeFilter(){    if (impl)         impl->deref();}short NodeFilter::acceptNode(const Node &node) const{    if (impl)        return impl->acceptNode(node.handle());    return FILTER_ACCEPT;}// --------------------------------------------------------------NodeIterator::NodeIterator(){    impl = 0;}NodeIterator::NodeIterator(const NodeIterator &other){    impl = other.impl;    if (impl)         impl->ref();}NodeIterator::NodeIterator(NodeIteratorImpl *i){    impl = i;    if (impl)         impl->ref();}NodeIterator &NodeIterator::operator=(const NodeIterator &other){    if (impl == other.impl)        return *this;        NodeIteratorImpl *old = impl;    impl = other.impl;    if (impl)         impl->ref();    if (old)         old->deref();    return *this;}NodeIterator::~NodeIterator(){    if (impl)         impl->deref();}Node NodeIterator::root() const{    if (impl)         return impl->root();    return 0;}unsigned long NodeIterator::whatToShow() const{    if (impl)         return impl->whatToShow();    return 0;}NodeFilter NodeIterator::filter() const{    if (impl)         return impl->filter();    return NodeFilter();}bool NodeIterator::expandEntityReferences() const{    if (impl)         return impl->expandEntityReferences();    return 0;}Node NodeIterator::nextNode(){    if (!impl)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = DOMException::INVALID_STATE_ERR; return Node(); }#else        throw DOMException(DOMException::INVALID_STATE_ERR);#endif        int exceptioncode = 0;    NodeImpl *result = impl->nextNode(exceptioncode);    if (exceptioncode)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = exceptioncode; return result; }#else        throw DOMException(exceptioncode);#endif        return result;}Node NodeIterator::previousNode(){    if (!impl)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = DOMException::INVALID_STATE_ERR; return Node(); }#else        throw DOMException(DOMException::INVALID_STATE_ERR);#endif        int exceptioncode = 0;    NodeImpl *result = impl->previousNode(exceptioncode);    if (exceptioncode)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = exceptioncode; return result; }#else        throw DOMException(exceptioncode);#endif        return result;}void NodeIterator::detach(){    if (!impl)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = DOMException::INVALID_STATE_ERR; return; }#else        throw DOMException(DOMException::INVALID_STATE_ERR);#endif        int exceptioncode = 0;    impl->detach(exceptioncode);    if (exceptioncode)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = exceptioncode; return; }#else        throw DOMException(exceptioncode);#endif    }Node NodeIterator::referenceNode() const{    if (!impl)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = DOMException::INVALID_STATE_ERR; return Node(); }#else        throw DOMException(DOMException::INVALID_STATE_ERR);#endif                return impl->referenceNode();}bool NodeIterator::pointerBeforeReferenceNode() const{    if (!impl)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = DOMException::INVALID_STATE_ERR; return false; }#else        throw DOMException(DOMException::INVALID_STATE_ERR);#endif                return impl->pointerBeforeReferenceNode();}// --------------------------------------------------------------TreeWalker::TreeWalker(){    impl = 0;}TreeWalker::TreeWalker(const TreeWalker &other){    impl = other.impl;    if (impl)         impl->ref();}TreeWalker::TreeWalker(TreeWalkerImpl *i){    impl = i;    if (impl)         impl->ref();}TreeWalker &TreeWalker::operator=(const TreeWalker &other){    if (impl == other.impl)        return *this;        TreeWalkerImpl *old = impl;    impl = other.impl;    if (impl)         impl->ref();    if (old)         old->deref();    return *this;}TreeWalker::~TreeWalker(){    if (impl)         impl->deref();}Node TreeWalker::root() const{    if (impl)         return impl->root();    return 0;}unsigned long TreeWalker::whatToShow() const{    if (impl)         return impl->whatToShow();    return 0;}NodeFilter TreeWalker::filter() const{    if (impl)         return impl->filter();    return NodeFilter();}bool TreeWalker::expandEntityReferences() const{    if (impl) return impl->expandEntityReferences();    return false;}Node TreeWalker::currentNode() const{    if (impl)         return impl->currentNode();    return 0;}void TreeWalker::setCurrentNode(const Node &node){    if (impl) {        int exceptioncode = 0;        impl->setCurrentNode(node.handle(), exceptioncode);        if (exceptioncode)#if KHTML_NO_EXCEPTIONS        { _exceptioncode = exceptioncode; return; }#else            throw DOMException(exceptioncode);#endif        }}Node TreeWalker::parentNode(){    if (impl)         return impl->parentNode();    return 0;}Node TreeWalker::firstChild(){    if (impl)         return impl->firstChild();    return 0;}Node TreeWalker::lastChild(){    if (impl)         return impl->lastChild();    return 0;}Node TreeWalker::previousSibling(){    if (impl)         return impl->previousSibling();    return 0;}Node TreeWalker::nextSibling(){    if (impl)         return impl->nextSibling();    return 0;}Node TreeWalker::previousNode(){    if (impl)         return impl->previousNode();    return 0;}Node TreeWalker::nextNode(){    if (impl)         return impl->nextNode();    return 0;}} // namespace DOM

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -