Xerces-C++ 3.2.3

XSModel.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$
20 */
21
22 #if !defined(XERCESC_INCLUDE_GUARD_XSMODEL_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSMODEL_HPP
24
25 #include <xercesc/util/PlatformUtils.hpp>
26 #include <xercesc/framework/psvi/XSObject.hpp>
27 #include <xercesc/framework/psvi/XSNamedMap.hpp>
28
29 #include <xercesc/util/ValueVectorOf.hpp>
30 #include <xercesc/validators/schema/SchemaElementDecl.hpp>
31
32 XERCES_CPP_NAMESPACE_BEGIN
33
46 // forward declarations
47 class Grammar;
48 class XMLGrammarPool;
49 class XSAnnotation;
50 class XSAttributeDeclaration;
51 class XSAttributeGroupDefinition;
52 class XSElementDeclaration;
53 class XSModelGroupDefinition;
54 class XSNamespaceItem;
55 class XSNotationDeclaration;
56 class XSTypeDefinition;
57 class XSObjectFactory;
58
59 class XMLPARSER_EXPORT XSModel : public XMemory
60 {
61 public:
62
63 // Constructors and Destructor
64 // -----------------------------------------------------------------------
67
73 XSModel( XMLGrammarPool *grammarPool
74 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
75
85 XSModel( XSModel *baseModel
86 , GrammarResolver *grammarResolver
87 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager);
88
90
93 ~XSModel();
95
96 //---------------------
100
107 StringList *getNamespaces();
108
117 XSNamespaceItemList *getNamespaceItems();
118
129 XSNamedMap<XSObject> *getComponents(XSConstants::COMPONENT_TYPE objectType);
130
143 XSNamedMap<XSObject> *getComponentsByNamespace(XSConstants::COMPONENT_TYPE objectType,
144 const XMLCh *compNamespace);
145
149 XSAnnotationList *getAnnotations();
150
158 XSElementDeclaration *getElementDeclaration(const XMLCh *name
159 , const XMLCh *compNamespace);
160
168 XSAttributeDeclaration *getAttributeDeclaration(const XMLCh *name
169 , const XMLCh *compNamespace);
170
179 XSTypeDefinition *getTypeDefinition(const XMLCh *name
180 , const XMLCh *compNamespace);
181
189 XSAttributeGroupDefinition *getAttributeGroup(const XMLCh *name
190 , const XMLCh *compNamespace);
191
199 XSModelGroupDefinition *getModelGroupDefinition(const XMLCh *name
200 , const XMLCh *compNamespace);
201
209 XSNotationDeclaration *getNotationDeclaration(const XMLCh *name
210 , const XMLCh *compNamespace);
211
221 XSObject *getXSObjectById(XMLSize_t compId,
222 XSConstants::COMPONENT_TYPE compType);
223
225
226 //----------------------------------
230 XMLStringPool* getURIStringPool();
231
232 XSNamespaceItem* getNamespaceItem(const XMLCh* const key);
233
241 XSObject* getXSObject(void* key);
242
244 private:
245
246 // -----------------------------------------------------------------------
247 // Helper methods
248 // -----------------------------------------------------------------------
249 void addGrammarToXSModel
250 (
251 XSNamespaceItem* namespaceItem
252 );
253 void addS4SToXSModel
254 (
255 XSNamespaceItem* const namespaceItem
256 , RefHashTableOf<DatatypeValidator>* const builtInDV
257 );
258 void addComponentToNamespace
259 (
260 XSNamespaceItem* const namespaceItem
261 , XSObject* const component
262 , XMLSize_t componentIndex
263 , bool addToXSModel = true
264 );
265
266 void addComponentToIdVector
267 (
268 XSObject* const component
269 , XMLSize_t componentIndex
270 );
271
272 // -----------------------------------------------------------------------
273 // Unimplemented constructors and operators
274 // -----------------------------------------------------------------------
275 XSModel(const XSModel&);
276 XSModel & operator=(const XSModel &);
277
278 protected:
279 friend class XSObjectFactory;
280 friend class XSObject;
281
282 // -----------------------------------------------------------------------
283 // data members
284 // -----------------------------------------------------------------------
285 // fMemoryManager:
286 // used for any memory allocations
287 MemoryManager* const fMemoryManager;
288
289 StringList* fNamespaceStringList;
290 XSNamespaceItemList* fXSNamespaceItemList;
291
292 RefVectorOf<XSObject>* fIdVector[XSConstants::MULTIVALUE_FACET];
293
294 /* Need a XSNamedMap for each component top-level?
295 ATTRIBUTE_DECLARATION = 1,
296 ELEMENT_DECLARATION = 2,
297 TYPE_DEFINITION = 3,
298 ATTRIBUTE_USE = 4, no
299 ATTRIBUTE_GROUP_DEFINITION= 5,
300 MODEL_GROUP_DEFINITION = 6,
301 MODEL_GROUP = 7, no
302 PARTICLE = 8, no
303 WILDCARD = 9, no
304 IDENTITY_CONSTRAINT = 10, no
305 NOTATION_DECLARATION = 11,
306 ANNOTATION = 12, no
307 FACET = 13, no
308 MULTIVALUE_FACET = 14 no
309 */
310 XSNamedMap<XSObject>* fComponentMap[XSConstants::MULTIVALUE_FACET];
311 XMLStringPool* fURIStringPool;
312 XSAnnotationList* fXSAnnotationList;
313 RefHashTableOf<XSNamespaceItem>* fHashNamespace;
314 XSObjectFactory* fObjFactory;
315 RefVectorOf<XSNamespaceItem>* fDeleteNamespace;
316 XSModel* fParent;
317 bool fDeleteParent;
318 bool fAddedS4SGrammar;
319 };
320
321 inline XMLStringPool* XSModel::getURIStringPool()
322 {
323 return fURIStringPool;
324 }
325
326 inline StringList *XSModel::getNamespaces()
327 {
328 return fNamespaceStringList;
329 }
330
331 inline XSNamespaceItemList *XSModel::getNamespaceItems()
332 {
333 return fXSNamespaceItemList;
334 }
335
336 XERCES_CPP_NAMESPACE_END
337
338 #endif
XSNamedMap.hpp
XMemory
This class makes it possible to override the C++ memory management by adding new/delete operators to ...
Definition: XMemory.hpp:40
XERCES_CPP_NAMESPACE_BEGIN
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
XSModel::fAddedS4SGrammar
bool fAddedS4SGrammar
Definition: XSModel.hpp:318
XSModelGroupDefinition
Definition: XSModelGroupDefinition.hpp:42
XSAttributeDeclaration
Definition: XSAttributeDeclaration.hpp:42
XSNamespaceItem
Definition: XSNamespaceItem.hpp:53
XSObject
Definition: XSObject.hpp:42
XSModel::fXSAnnotationList
XSAnnotationList * fXSAnnotationList
Definition: XSModel.hpp:312
XERCES_CPP_NAMESPACE_END
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XSModel
Definition: XSModel.hpp:59
XSModel::fHashNamespace
RefHashTableOf< XSNamespaceItem > * fHashNamespace
Definition: XSModel.hpp:313
XSModel::fXSNamespaceItemList
XSNamespaceItemList * fXSNamespaceItemList
Definition: XSModel.hpp:290
PlatformUtils.hpp
XSObject.hpp
XMLCh
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:120
XMLGrammarPool
Definition: XMLGrammarPool.hpp:43
XMLPlatformUtils::fgMemoryManager
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
XSAnnotation
Definition: XSAnnotation.hpp:41
XSTypeDefinition
This class represents a complexType or simpleType definition.
Definition: XSTypeDefinition.hpp:39
XMLSize_t
size_t XMLSize_t
Definition: Xerces_autoconf_config.hpp:112
XSModel::getNamespaceItems
XSNamespaceItemList * getNamespaceItems()
A set of namespace schema information information items ( of type XSNamespaceItem),...
Definition: XSModel.hpp:331
XSNamespaceItemList
RefVectorOf< XSNamespaceItem > XSNamespaceItemList
Definition: XSConstants.hpp:51
XSNotationDeclaration
Definition: XSNotationDeclaration.hpp:40
XSModel::fParent
XSModel * fParent
Definition: XSModel.hpp:316
StringList
RefArrayVectorOf< XMLCh > StringList
Definition: XSConstants.hpp:54
XSModel::fMemoryManager
MemoryManager *const fMemoryManager
Definition: XSModel.hpp:287
XSAttributeGroupDefinition
Definition: XSAttributeGroupDefinition.hpp:42
XSConstants::COMPONENT_TYPE
COMPONENT_TYPE
Definition: XSConstants.hpp:61
XSAnnotationList
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
XSElementDeclaration
Definition: XSElementDeclaration.hpp:44
XSModel::fDeleteNamespace
RefVectorOf< XSNamespaceItem > * fDeleteNamespace
Definition: XSModel.hpp:315
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:39
XSModel::getURIStringPool
XMLStringPool * getURIStringPool()
methods needed by implementation
Definition: XSModel.hpp:321
XMLPARSER_EXPORT
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
XSModel::fObjFactory
XSObjectFactory * fObjFactory
Definition: XSModel.hpp:314
XSModel::fNamespaceStringList
StringList * fNamespaceStringList
Definition: XSModel.hpp:289
XSNamedMap< XSObject >
XSModel::fDeleteParent
bool fDeleteParent
Definition: XSModel.hpp:317
XSModel::fURIStringPool
XMLStringPool * fURIStringPool
Definition: XSModel.hpp:311
XSConstants::MULTIVALUE_FACET
@ MULTIVALUE_FACET
The object describes enumeration/pattern facets.
Definition: XSConstants.hpp:118
XSModel::getNamespaces
StringList * getNamespaces()
Convenience method.
Definition: XSModel.hpp:326