Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:27:02

0001 /*
0002  * Licensed to the Apache Software Foundation (ASF) under one or more
0003  * contributor license agreements.  See the NOTICE file distributed with
0004  * this work for additional information regarding copyright ownership.
0005  * The ASF licenses this file to You under the Apache License, Version 2.0
0006  * (the "License"); you may not use this file except in compliance with
0007  * the License.  You may obtain a copy of the License at
0008  * 
0009  *      http://www.apache.org/licenses/LICENSE-2.0
0010  * 
0011  * Unless required by applicable law or agreed to in writing, software
0012  * distributed under the License is distributed on an "AS IS" BASIS,
0013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
0014  * See the License for the specific language governing permissions and
0015  * limitations under the License.
0016  */
0017 
0018 /*
0019  * $Id$
0020  */
0021 
0022 #if !defined(XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP)
0023 #define XERCESC_INCLUDE_GUARD_DOMNODEVECTOR_HPP
0024 
0025 //
0026 //  This file is part of the internal implementation of the C++ XML DOM.
0027 //  It should NOT be included or used directly by application programs.
0028 //
0029 //  Applications should include the file <xercesc/dom/DOM.hpp> for the entire
0030 //  DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class
0031 //  name is substituded for the *.
0032 //
0033 
0034 #include <xercesc/util/XercesDefs.hpp>
0035 
0036 XERCES_CPP_NAMESPACE_BEGIN
0037 
0038 
0039 class DOMNode;
0040 class DOMDocument;
0041 
0042 
0043 class  DOMNodeVector {
0044 private:
0045     DOMNode        **data;
0046     XMLSize_t       allocatedSize;
0047     XMLSize_t       nextFreeSlot;
0048     void           init(DOMDocument *doc, XMLSize_t size);
0049     void           checkSpace();
0050 
0051     // unimplemented
0052     DOMNodeVector ( const DOMNodeVector& toCopy);
0053     DOMNodeVector& operator= (const DOMNodeVector& other);
0054 
0055 public:
0056     DOMNodeVector(DOMDocument *doc);
0057     DOMNodeVector(DOMDocument *doc, XMLSize_t size);
0058     ~DOMNodeVector();
0059 
0060     XMLSize_t      size();
0061     DOMNode*       elementAt(XMLSize_t index);
0062     DOMNode*       lastElement();
0063     void           addElement(DOMNode *);
0064     void           insertElementAt(DOMNode *, XMLSize_t index);
0065     void           setElementAt(DOMNode *val, XMLSize_t index);
0066     void           removeElementAt(XMLSize_t index);
0067     void           reset();
0068 };
0069 
0070 inline DOMNode *DOMNodeVector::elementAt(XMLSize_t index) {
0071     if (index >= nextFreeSlot)
0072         return 0;
0073     return data[index];
0074 }
0075 
0076 inline DOMNode *DOMNodeVector::lastElement() {
0077     if (nextFreeSlot == 0)
0078         return 0;
0079     return data[nextFreeSlot-1];
0080 }
0081 
0082 inline XMLSize_t DOMNodeVector::size() {
0083     return nextFreeSlot;
0084 }
0085 
0086 XERCES_CPP_NAMESPACE_END
0087 
0088 #endif