|
||||
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_DOMNODEIDMAP_HPP) 0023 #define XERCESC_INCLUDE_GUARD_DOMNODEIDMAP_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 XERCES_CPP_NAMESPACE_BEGIN 0036 0037 0038 // 0039 // Class DOMNodeIDMap is a hash table that is used in the implementation of 0040 // of DOM_Document::getElementsByID(). 0041 // 0042 // Why Yet Another HashTable implementation? Becuase it can be significantly 0043 // smaller when tuned for this exact usage, and the generic RefHashTableOf 0044 // from the xerces utils project is not a paricularly good fit. 0045 // 0046 class DOMAttr; 0047 class DOMDocument; 0048 0049 0050 class DOMNodeIDMap { 0051 public: 0052 0053 DOMNodeIDMap(XMLSize_t initialSize, DOMDocument *doc); // Create a new hash table, sized to hold "initialSize" 0054 // Entries. It will automatically grow if need be. 0055 0056 ~DOMNodeIDMap(); 0057 0058 private: 0059 DOMNodeIDMap(const DOMNodeIDMap &other); // No copy, assignement, comparison. 0060 DOMNodeIDMap &operator = (const DOMNodeIDMap &other); 0061 bool operator == (const DOMNodeIDMap &other); 0062 0063 public: 0064 void add(DOMAttr *attr); // Add the specified attribute to the table. 0065 void remove(DOMAttr *other); // Remove the specified attribute. 0066 // Does nothing if the node is not in the table. 0067 DOMAttr *find(const XMLCh *ID); // Find the attribute node in the table with this ID 0068 0069 private: 0070 void growTable(); 0071 0072 private: 0073 DOMAttr **fTable; 0074 XMLSize_t fSizeIndex; // Index of the current table size in the 0075 // array of possible table sizes. 0076 XMLSize_t fSize; // The current size of the table array 0077 // (number of slots, not bytes.) 0078 XMLSize_t fNumEntries; // The number of entries used. 0079 XMLSize_t fMaxEntries; // The max number of entries to use before 0080 // growing the table. 0081 DOMDocument *fDoc; // The owning document. 0082 }; 0083 0084 XERCES_CPP_NAMESPACE_END 0085 0086 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |