text: #ifndef DOMNodeVector_HEADER_GUARD_
  #define DOMNodeVector_HEADER_GUARD_
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You 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: DOMNodeVector.hpp 568078 2007-08-21 11:43:25Z amassari $
   */
  
  //
  //  This file is part of the internal implementation of the C++ XML DOM.
  //  It should NOT be included or used directly by application programs.
  //
  //  Applications should include the file <xercesc/dom/DOM.hpp> for the entire
  //  DOM API, or xercesc/dom/DOM*.hpp for individual DOM classes, where the class
  //  name is substituded for the *.
  //
  
  #include <xercesc/util/XercesDefs.hpp>
  
  XERCES_CPP_NAMESPACE_BEGIN
  
  
  class DOMNode;
  class DOMDocument;
  
  
  class  DOMNodeVector {
  private:
      DOMNode        **data;
      XMLSize_t      allocatedSize;
      XMLSize_t      nextFreeSlot;
      void           init(DOMDocument *doc, XMLSize_t size);
      void           checkSpace();
      
      // unimplemented
      DOMNodeVector ( const DOMNodeVector& toCopy);
      DOMNodeVector& operator= (const DOMNodeVector& other);
  
  public:
      DOMNodeVector(DOMDocument *doc);
      DOMNodeVector(DOMDocument *doc, XMLSize_t size);
      ~DOMNodeVector();
  
      XMLSize_t      size();
      DOMNode*       elementAt(XMLSize_t index);
      DOMNode*       lastElement();
      void           addElement(DOMNode *);
      void           insertElementAt(DOMNode *, XMLSize_t index);
      void           setElementAt(DOMNode *val, XMLSize_t index);
      void           removeElementAt(XMLSize_t index);
      void           reset();
  };
  
  inline DOMNode *DOMNodeVector::elementAt(XMLSize_t index) {
      if (index >= nextFreeSlot)
          return 0;
  	return data[index];
  }
  
  inline DOMNode *DOMNodeVector::lastElement() {
  	if (nextFreeSlot == 0)
  		return 0;
  	return data[nextFreeSlot-1];
  }
  
  inline XMLSize_t DOMNodeVector::size() {
  	return nextFreeSlot;
  }
  
  XERCES_CPP_NAMESPACE_END
  
  #endif
  