Xerces-C++  3.1.3
XSNamedMap.hpp
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 /*
19  * $Id: XSNamedMap.hpp 674012 2008-07-04 11:18:21Z borisk $
20  */
21 
22 #if !defined(XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSNAMEDMAP_HPP
24 
25 
26 #include <xercesc/util/XMemory.hpp>
27 #include <xercesc/util/RefHash2KeysTableOf.hpp>
28 #include <xercesc/util/RefVectorOf.hpp>
29 
31 
32 class XMLStringPool;
33 
34 /*
35  * This template provides convenient mappings between name,namespace
36  * pairs and individual components, as well as means to iterate through all the
37  * named components on some object.
38  */
39 
40 template <class TVal> class XSNamedMap: public XMemory
41 {
42 public:
43  // -----------------------------------------------------------------------
44  // Constructors and Destructor
45  // -----------------------------------------------------------------------
48 
49  XSNamedMap(const XMLSize_t maxElems,
50  const XMLSize_t modulus,
51  XMLStringPool* uriStringPool,
52  const bool adoptElems,
54  );
56 
59  ~XSNamedMap();
60 
62 
63  // -----------------------------------------------------------------------
64  // XSNamedMap methods
65  // -----------------------------------------------------------------------
68 
74  XMLSize_t getLength() const;
75 
85  TVal *item(XMLSize_t index);
86  const TVal *item(XMLSize_t index) const;
87 
99  TVal *itemByName(const XMLCh *compNamespace,
100  const XMLCh *localName);
101 
103 
104  //----------------------------------
108  void addElement(TVal* const toAdd, const XMLCh* key1, const XMLCh* key2);
110 
111 
112 private :
113  // -----------------------------------------------------------------------
114  // Unimplemented constructors and operators
115  // -----------------------------------------------------------------------
117  XSNamedMap<TVal>& operator=(const XSNamedMap<TVal>&);
118 
119  // -----------------------------------------------------------------------
120  // Data members
121  //
122  // fMemoryManager
123  // manager used to allocate memory needed by this object
124  MemoryManager *const fMemoryManager;
125  XMLStringPool* fURIStringPool;
126  RefVectorOf<TVal>* fVector;
127  RefHash2KeysTableOf<TVal>* fHash;
128 };
129 
130 
131 
133 
134 #if !defined(XERCES_TMPLSINC)
135 #include <xercesc/framework/psvi/XSNamedMap.c>
136 #endif
137 
138 #endif