Xerces-C++ 3.2.0

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: XSModel.hpp 674012 2008-07-04 11:18:21Z borisk $
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
XSModel::fXSNamespaceItemList
XSNamespaceItemList * fXSNamespaceItemList
Definition: XSModel.hpp:290
XSModel::getNamespaceItems
XSNamespaceItemList * getNamespaceItems()
A set of namespace schema information information items ( of type XSNamespaceItem), one for each namespace name which appears as the target namespace of any schema component in the schema used for that assessment, and one for absent if any schema component in the schema had no target namespace.
Definition: XSModel.hpp:331
XSModel::getURIStringPool
XMLStringPool * getURIStringPool()
methods needed by implementation
Definition: XSModel.hpp:321
XSModel::fParent
XSModel * fParent
Definition: XSModel.hpp:316
XMemory
This class makes it possible to override the C++ memory management by adding new/delete operators to ...
Definition: XMemory.hpp:40
XMLPlatformUtils::fgMemoryManager
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
XSAttributeGroupDefinition
Definition: XSAttributeGroupDefinition.hpp:42
XSModel::fAddedS4SGrammar
bool fAddedS4SGrammar
Definition: XSModel.hpp:318
XMLGrammarPool
Definition: XMLGrammarPool.hpp:43
XSModel::fMemoryManager
MemoryManager *const fMemoryManager
Definition: XSModel.hpp:287
XSModel::fDeleteParent
bool fDeleteParent
Definition: XSModel.hpp:317
XSNamespaceItem
Definition: XSNamespaceItem.hpp:53
XSModel::fXSAnnotationList
XSAnnotationList * fXSAnnotationList
Definition: XSModel.hpp:312
XSModel::fObjFactory
XSObjectFactory * fObjFactory
Definition: XSModel.hpp:314
XSElementDeclaration
Definition: XSElementDeclaration.hpp:44
XMLPARSER_EXPORT
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
XSModel
Definition: XSModel.hpp:59
XSAnnotation
Definition: XSAnnotation.hpp:41
XSNamedMap.hpp
XSModel::fURIStringPool
XMLStringPool * fURIStringPool
Definition: XSModel.hpp:311
PlatformUtils.hpp
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:39
XSNotationDeclaration
Definition: XSNotationDeclaration.hpp:40
XMLCh
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:118
XSNamespaceItemList
RefVectorOf< XSNamespaceItem > XSNamespaceItemList
Definition: XSConstants.hpp:51
XERCES_CPP_NAMESPACE_BEGIN
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
StringList
RefArrayVectorOf< XMLCh > StringList
Definition: XSConstants.hpp:54
XSObject
Definition: XSObject.hpp:42
XMLSize_t
size_t XMLSize_t
Definition: Xerces_autoconf_config.hpp:110
XERCES_CPP_NAMESPACE_END
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XSModel::getNamespaces
StringList * getNamespaces()
Convenience method.
Definition: XSModel.hpp:326
XSObject.hpp
XSConstants::COMPONENT_TYPE
COMPONENT_TYPE
Definition: XSConstants.hpp:61
XSNamedMap< XSObject >
XSAnnotationList
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
XSModel::fHashNamespace
RefHashTableOf< XSNamespaceItem > * fHashNamespace
Definition: XSModel.hpp:313
XSConstants::MULTIVALUE_FACET
The object describes enumeration/pattern facets.
Definition: XSConstants.hpp:118
XSModelGroupDefinition
Definition: XSModelGroupDefinition.hpp:42
XSAttributeDeclaration
Definition: XSAttributeDeclaration.hpp:42
XSModel::fDeleteNamespace
RefVectorOf< XSNamespaceItem > * fDeleteNamespace
Definition: XSModel.hpp:315
XSModel::fNamespaceStringList
StringList * fNamespaceStringList
Definition: XSModel.hpp:289
XSTypeDefinition
This class represents a complexType or simpleType definition.
Definition: XSTypeDefinition.hpp:39