Xerces-C++  3.2.3
XSComplexTypeDefinition.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_XSCOMPLEXTYPEDEFINITION_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSCOMPLEXTYPEDEFINITION_HPP
24 
26 
28 
37 // forward declarations
38 class XSAnnotation;
39 class XSAttributeUse;
41 class XSParticle;
42 class XSWildcard;
43 class ComplexTypeInfo;
44 
46 {
47 public:
48 
49  // Content Model Types
50  enum CONTENT_TYPE {
56  CONTENTTYPE_EMPTY = 0,
61  CONTENTTYPE_SIMPLE = 1,
67  CONTENTTYPE_ELEMENT = 2,
71  CONTENTTYPE_MIXED = 3
72  };
73 
74  // Constructors and Destructor
75  // -----------------------------------------------------------------------
78 
93  (
94  ComplexTypeInfo* const complexTypeInfo
95  , XSWildcard* const xsWildcard
96  , XSSimpleTypeDefinition* const xsSimpleType
97  , XSAttributeUseList* const xsAttList
98  , XSTypeDefinition* const xsBaseType
99  , XSParticle* const xsParticle
100  , XSAnnotation* const headAnnot
101  , XSModel* const xsModel
103  );
104 
106 
111 
112  //---------------------
116 
122  XSConstants::DERIVATION_TYPE getDerivationMethod() const;
123 
129  bool getAbstract() const;
130 
134  XSAttributeUseList *getAttributeUses();
135 
139  XSWildcard *getAttributeWildcard() const;
140 
147  CONTENT_TYPE getContentType() const;
148 
153  XSSimpleTypeDefinition *getSimpleType() const;
154 
159  XSParticle *getParticle() const;
160 
168  bool isProhibitedSubstitution(XSConstants::DERIVATION_TYPE toTest);
169 
175  short getProhibitedSubstitutions() const;
176 
180  XSAnnotationList *getAnnotations();
181 
186  const XMLCh* getName() const;
187 
192  const XMLCh* getNamespace() const;
193 
200 
205  bool getAnonymous() const;
206 
212 
220  bool derivedFromType(const XSTypeDefinition* const ancestorType);
221 
223 
224  //----------------------------------
228 
229 
231 
232 private:
233 
237  void setBaseType(XSTypeDefinition* const xsBaseType);
238  friend class XSObjectFactory;
239 
240  // -----------------------------------------------------------------------
241  // Unimplemented constructors and operators
242  // -----------------------------------------------------------------------
245 
246 protected:
247 
248  // -----------------------------------------------------------------------
249  // data members
250  // -----------------------------------------------------------------------
251  ComplexTypeInfo* fComplexTypeInfo;
258 };
259 
260 
262 {
263  return fXSAttributeUseList;
264 }
265 
267 {
268  return fXSWildcard;
269 }
270 
272 {
274 }
275 
277 {
279 }
280 
282 {
283  return fParticle;
284 }
285 
286 inline void
287 XSComplexTypeDefinition::setBaseType(XSTypeDefinition* const xsBaseType)
288 {
289  fBaseType = xsBaseType;
290 }
291 
293 
294 #endif
XSComplexTypeDefinition::fParticle
XSParticle * fParticle
Definition: XSComplexTypeDefinition.hpp:256
XERCES_CPP_NAMESPACE_BEGIN
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
XSTypeDefinition::getName
virtual const XMLCh * getName() const =0
The name of type NCName of this declaration as defined in XML Namespaces.
XSComplexTypeDefinition::CONTENT_TYPE
CONTENT_TYPE
Definition: XSComplexTypeDefinition.hpp:50
XSComplexTypeDefinition::fComplexTypeInfo
ComplexTypeInfo * fComplexTypeInfo
Definition: XSComplexTypeDefinition.hpp:251
XSNamespaceItem
Definition: XSNamespaceItem.hpp:53
XSParticle
Definition: XSParticle.hpp:41
XSComplexTypeDefinition::getAttributeUses
XSAttributeUseList * getAttributeUses()
A set of attribute uses.
Definition: XSComplexTypeDefinition.hpp:261
XERCES_CPP_NAMESPACE_END
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XSTypeDefinition::getAnonymous
virtual bool getAnonymous() const =0
A boolean that specifies if the type definition is anonymous.
XSModel
Definition: XSModel.hpp:59
XSComplexTypeDefinition::getAttributeWildcard
XSWildcard * getAttributeWildcard() const
Optional.An attribute wildcard.
Definition: XSComplexTypeDefinition.hpp:266
XSComplexTypeDefinition::fXSAttributeUseList
XSAttributeUseList * fXSAttributeUseList
Definition: XSComplexTypeDefinition.hpp:253
XSConstants::DERIVATION_TYPE
DERIVATION_TYPE
Definition: XSConstants.hpp:122
XSWildcard
Definition: XSWildcard.hpp:41
XSComplexTypeDefinition::fXSWildcard
XSWildcard * fXSWildcard
Definition: XSComplexTypeDefinition.hpp:252
XSAttributeUseList
RefVectorOf< XSAttributeUse > XSAttributeUseList
Definition: XSConstants.hpp:48
XSTypeDefinition.hpp
XMLCh
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:120
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
XSAttributeUse
Definition: XSAttributeUse.hpp:39
XSTypeDefinition::derivedFromType
virtual bool derivedFromType(const XSTypeDefinition *const ancestorType)=0
Convenience method: check if this type is derived from the given ancestorType.
XSComplexTypeDefinition
Definition: XSComplexTypeDefinition.hpp:45
XSComplexTypeDefinition::getSimpleType
XSSimpleTypeDefinition * getSimpleType() const
A simple type definition corresponding to simple content model, otherwise null
Definition: XSComplexTypeDefinition.hpp:271
XSComplexTypeDefinition::fXSAnnotationList
XSAnnotationList * fXSAnnotationList
Definition: XSComplexTypeDefinition.hpp:255
XSTypeDefinition::getNamespace
virtual const XMLCh * getNamespace() const =0
The [target namespace] of this object, or null if it is unspecified.
XSTypeDefinition::getBaseType
virtual XSTypeDefinition * getBaseType()=0
{base type definition}: either a simple type definition or a complex type definition.
XSTypeDefinition::getNamespaceItem
virtual XSNamespaceItem * getNamespaceItem()=0
A namespace schema information item corresponding to the target namespace of the component,...
XSComplexTypeDefinition::fProhibitedSubstitution
short fProhibitedSubstitution
Definition: XSComplexTypeDefinition.hpp:257
XSAnnotationList
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
XSComplexTypeDefinition::fXSSimpleTypeDefinition
XSSimpleTypeDefinition * fXSSimpleTypeDefinition
Definition: XSComplexTypeDefinition.hpp:254
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:39
XMLPARSER_EXPORT
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
XSTypeDefinition::fBaseType
XSTypeDefinition * fBaseType
Definition: XSTypeDefinition.hpp:198
XSComplexTypeDefinition::getProhibitedSubstitutions
short getProhibitedSubstitutions() const
[prohibited substitutions]: A subset of {extension, restriction} or DERIVATION_NONE represented as a ...
Definition: XSComplexTypeDefinition.hpp:276
XSComplexTypeDefinition::getParticle
XSParticle * getParticle() const
A particle for mixed or element-only content model, otherwise null
Definition: XSComplexTypeDefinition.hpp:281
XSSimpleTypeDefinition
Definition: XSSimpleTypeDefinition.hpp:43