http://xml.apache.org/http://www.apache.org/http://www.w3.org/

Home

Readme
Installation
Build

API Docs
Samples
Programming
Migration
FAQs

Releases
Feedback
Bug-Todo

Download
CVS Repository
Mail Archive

API Docs for SAX and DOM
 

Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

ParentNode.hpp

Go to the documentation of this file.
00001 #ifndef ParentNode_HEADER_GUARD_
00002 #define ParentNode_HEADER_GUARD_
00003 /*
00004  * The Apache Software License, Version 1.1

00005  * 

00006  * Copyright (c) 1999-2000 The Apache Software Foundation.  All rights

00007  * reserved.

00008  * 

00009  * Redistribution and use in source and binary forms, with or without

00010  * modification, are permitted provided that the following conditions

00011  * are met:

00012  * 

00013  * 1. Redistributions of source code must retain the above copyright

00014  *    notice, this list of conditions and the following disclaimer. 

00015  * 

00016  * 2. Redistributions in binary form must reproduce the above copyright

00017  *    notice, this list of conditions and the following disclaimer in

00018  *    the documentation and/or other materials provided with the

00019  *    distribution.

00020  * 

00021  * 3. The end-user documentation included with the redistribution,

00022  *    if any, must include the following acknowledgment:  

00023  *       "This product includes software developed by the

00024  *        Apache Software Foundation (http://www.apache.org/)."

00025  *    Alternately, this acknowledgment may appear in the software itself,

00026  *    if and wherever such third-party acknowledgments normally appear.

00027  * 

00028  * 4. The names "Xerces" and "Apache Software Foundation" must

00029  *    not be used to endorse or promote products derived from this

00030  *    software without prior written permission. For written 

00031  *    permission, please contact apache\@apache.org.

00032  * 

00033  * 5. Products derived from this software may not be called "Apache",

00034  *    nor may "Apache" appear in their name, without prior written

00035  *    permission of the Apache Software Foundation.

00036  * 

00037  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED

00038  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES

00039  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

00040  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR

00041  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,

00042  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT

00043  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF

00044  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND

00045  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,

00046  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT

00047  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF

00048  * SUCH DAMAGE.

00049  * ====================================================================

00050  * 

00051  * This software consists of voluntary contributions made by many

00052  * individuals on behalf of the Apache Software Foundation, and was

00053  * originally based on software copyright (c) 1999, International

00054  * Business Machines, Inc., http://www.ibm.com .  For more information

00055  * on the Apache Software Foundation, please see

00056  * <http://www.apache.org/>.

00057  */
00058 
00059 //
00060 //  This file is part of the internal implementation of the C++ XML DOM.
00061 //  It should NOT be included or used directly by application programs.
00062 //
00063 //  Applications should include the file <dom/DOM.hpp> for the entire
00064 //  DOM API, or DOM_*.hpp for individual DOM classes, where the class
00065 //  name is substituded for the *.
00066 //
00067 
00068 /*
00069  * $Id: ParentNode.hpp,v 1.4 2001/01/18 02:49:56 lehors Exp $

00070  */
00071 
00100 
00101 #include <util/XercesDefs.hpp>
00102 #include "ChildNode.hpp"
00103 
00104 class  ParentNode: public ChildNode {
00105 public:
00106     DocumentImpl            *ownerDocument; // Document this node belongs to
00107 
00108     ChildNode                *firstChild;
00109 
00110 public:
00111     ParentNode(DocumentImpl *ownerDocument);
00112     ParentNode(const ParentNode &other);
00113     
00114     virtual DocumentImpl * getOwnerDocument();
00115     virtual void setOwnerDocument(DocumentImpl *doc);
00116 
00117     virtual NodeListImpl *getChildNodes();
00118     virtual NodeImpl * getFirstChild();
00119     virtual NodeImpl * getLastChild();
00120     virtual unsigned int getLength();
00121     virtual bool        hasChildNodes();
00122     virtual NodeImpl    *insertBefore(NodeImpl *newChild, NodeImpl *refChild);
00123     virtual NodeImpl    *item(unsigned int index);
00124     virtual NodeImpl    * removeChild(NodeImpl *oldChild);
00125     virtual NodeImpl    *replaceChild(NodeImpl *newChild, NodeImpl *oldChild);
00126     virtual void        setReadOnly(bool isReadOnly, bool deep);
00127 
00128     //Introduced in DOM Level 2
00129     virtual void    normalize();
00130 
00131     // NON-DOM
00132     // unlike getOwnerDocument this never returns null, even for Document nodes
00133     virtual DocumentImpl * getDocument();
00134 protected:
00135     void cloneChildren(const NodeImpl &other);
00136     ChildNode * lastChild();
00137     void lastChild(ChildNode *);
00138 
00140     int fCachedLength;
00141 
00143     ChildNode * fCachedChild;
00144 
00146     int fCachedChildIndex;
00147 };
00148 
00149 #endif


Copyright © 2000 The Apache Software Foundation. All Rights Reserved.