00001 #ifndef NodeVector_HEADER_GUARD_ 00002 #define NodeVector_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 * $Log: NodeVector.hpp,v $ 00061 * Revision 1.1 2002/05/11 19:56:45 bhavani 00062 * CR#CR062582# adding xercesc 1.7 file 00063 * 00064 * Revision 1.1.1.1 2002/02/01 22:21:48 peiyongz 00065 * sane_include 00066 * 00067 * Revision 1.5 2000/03/02 19:54:04 roddey 00068 * This checkin includes many changes done while waiting for the 00069 * 1.1.0 code to be finished. I can't list them all here, but a list is 00070 * available elsewhere. 00071 * 00072 * Revision 1.4 2000/02/24 20:11:30 abagchi 00073 * Swat for removing Log from API docs 00074 * 00075 * Revision 1.3 2000/02/06 07:47:34 rahulj 00076 * Year 2K copyright swat. 00077 * 00078 * Revision 1.2 2000/02/04 01:49:25 aruna1 00079 * TreeWalker and NodeIterator changes 00080 * 00081 * Revision 1.1.1.1 1999/11/09 01:09:17 twl 00082 * Initial checkin 00083 * 00084 * Revision 1.2 1999/11/08 20:44:31 rahul 00085 * Swat for adding in Product name and CVS comment log variable. 00086 * 00087 */ 00088 00089 // 00090 // This file is part of the internal implementation of the C++ XML DOM. 00091 // It should NOT be included or used directly by application programs. 00092 // 00093 // Applications should include the file <dom/DOM.hpp> for the entire 00094 // DOM API, or DOM_*.hpp for individual DOM classes, where the class 00095 // name is substituded for the *. 00096 // 00097 00098 00099 #include <xercesc/util/XercesDefs.hpp> 00100 class NodeImpl; 00101 00102 00103 class NodeVector { 00104 private: 00105 NodeImpl **data; 00106 unsigned int allocatedSize; 00107 unsigned int nextFreeSlot; 00108 void init(unsigned int size); 00109 void checkSpace(); 00110 00111 public: 00112 NodeVector(); 00113 NodeVector(unsigned int size); 00114 ~NodeVector(); 00115 00116 unsigned int size(); 00117 NodeImpl *elementAt(unsigned int index); 00118 NodeImpl *lastElement(); 00119 void addElement(NodeImpl *); 00120 void insertElementAt(NodeImpl *, unsigned int index); 00121 void setElementAt(NodeImpl *val, unsigned int index); 00122 void removeElementAt(unsigned int index); 00123 void reset(); 00124 }; 00125 00126 #endif