/* * Copyright 1999-2002,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * $Id: ChildNode.cpp 176278 2005-01-07 14:38:22Z amassari $ */ // This class only adds the ability to have siblings #include "ChildNode.hpp" XERCES_CPP_NAMESPACE_BEGIN ChildNode::ChildNode(DocumentImpl *ownerDoc) : NodeImpl(ownerDoc) { this->previousSibling = null; this->nextSibling = null; } // This only makes a shallow copy, cloneChildren must also be called for a // deep clone ChildNode::ChildNode(const ChildNode &other) : NodeImpl(other) { // Need to break the association w/ original siblings and parent this->previousSibling = null; this->nextSibling = null; isFirstChild(false); } ChildNode::~ChildNode() { } NodeImpl * ChildNode::getNextSibling() { return nextSibling; } NodeImpl * ChildNode::getParentNode() { // if we have an owner, ownerNode is our parent, otherwise it's // our ownerDocument and we don't have a parent return isOwned() ? ownerNode : null; } NodeImpl * ChildNode::getPreviousSibling() { // if we are the firstChild, previousSibling actually refers to our // parent's lastChild, but we hide that return isFirstChild() ? null : previousSibling; } XERCES_CPP_NAMESPACE_END