Xerces-C++  3.1.2
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
This class makes it possible to override the C++ memory management by adding new/delete operators to ...
Definition: XMemory.hpp:40
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
void addElement(TVal *const toAdd, const XMLCh *key1, const XMLCh *key2)
methods needed by implementation
TVal * item(XMLSize_t index)
Returns the indexth item in the collection.
XSNamedMap(const XMLSize_t maxElems, const XMLSize_t modulus, XMLStringPool *uriStringPool, const bool adoptElems, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)
XMLSize_t getLength() const
The number of XSObjects in the XSObjectList.
Configurable memory manager.
Definition: MemoryManager.hpp:39
SIZE_T XMLSize_t
Definition: Xerces_autoconf_config.borland.hpp:86
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
TVal * itemByName(const XMLCh *compNamespace, const XMLCh *localName)
Retrieves a component specified by local name and namespace URI.
wchar_t XMLCh
Definition: Xerces_autoconf_config.borland.hpp:92
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
Definition: XSNamedMap.hpp:40