dom2_traversal.cpp [plain text]
#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)
throw DOMException(DOMException::INVALID_STATE_ERR);
int exceptioncode = 0;
NodeImpl *result = impl->nextNode(exceptioncode);
if (exceptioncode)
throw DOMException(exceptioncode);
return result;
}
Node NodeIterator::previousNode()
{
if (!impl)
throw DOMException(DOMException::INVALID_STATE_ERR);
int exceptioncode = 0;
NodeImpl *result = impl->previousNode(exceptioncode);
if (exceptioncode)
throw DOMException(exceptioncode);
return result;
}
void NodeIterator::detach()
{
if (!impl)
throw DOMException(DOMException::INVALID_STATE_ERR);
int exceptioncode = 0;
impl->detach(exceptioncode);
if (exceptioncode)
throw DOMException(exceptioncode);
}
Node NodeIterator::referenceNode() const
{
if (!impl)
throw DOMException(DOMException::INVALID_STATE_ERR);
return impl->referenceNode();
}
bool NodeIterator::pointerBeforeReferenceNode() const
{
if (!impl)
throw DOMException(DOMException::INVALID_STATE_ERR);
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)
throw DOMException(exceptioncode);
}
}
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;
}
}