Xerces-C++  3.2.2
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: XSComplexTypeDefinition.hpp 1801237 2017-07-07 21:55:11Z scantor $
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 {
273  return fXSSimpleTypeDefinition;
274 }
275 
277 {
278  return fProhibitedSubstitution;
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
CONTENT_TYPE
Definition: XSComplexTypeDefinition.hpp:50
XSParticle * getParticle() const
A particle for mixed or element-only content model, otherwise null
Definition: XSComplexTypeDefinition.hpp:281
Definition: XSComplexTypeDefinition.hpp:45
Definition: XSAttributeUse.hpp:39
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
Definition: XSWildcard.hpp:41
virtual XSNamespaceItem * getNamespaceItem()=0
A namespace schema information item corresponding to the target namespace of the component, if it's globally declared; or null otherwise.
ComplexTypeInfo * fComplexTypeInfo
Definition: XSComplexTypeDefinition.hpp:251
DERIVATION_TYPE
Definition: XSConstants.hpp:122
virtual bool derivedFromType(const XSTypeDefinition *const ancestorType)=0
Convenience method: check if this type is derived from the given ancestorType.
XSAttributeUseList * getAttributeUses()
A set of attribute uses.
Definition: XSComplexTypeDefinition.hpp:261
Definition: XSNamespaceItem.hpp:53
virtual const XMLCh * getNamespace() const =0
The [target namespace] of this object, or null if it is unspecified.
XSWildcard * fXSWildcard
Definition: XSComplexTypeDefinition.hpp:252
virtual XSTypeDefinition * getBaseType()=0
{base type definition}: either a simple type definition or a complex type definition.
XSWildcard * getAttributeWildcard() const
Optional.An attribute wildcard.
Definition: XSComplexTypeDefinition.hpp:266
XSAttributeUseList * fXSAttributeUseList
Definition: XSComplexTypeDefinition.hpp:253
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
Definition: XSModel.hpp:59
RefVectorOf< XSAttributeUse > XSAttributeUseList
Definition: XSConstants.hpp:48
Definition: XSAnnotation.hpp:41
Configurable memory manager.
Definition: MemoryManager.hpp:39
Definition: XSSimpleTypeDefinition.hpp:43
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:120
#define XERCES_CPP_NAMESPACE_BEGIN
Definition: XercesDefs.hpp:112
virtual const XMLCh * getName() const =0
The name of type NCName of this declaration as defined in XML Namespaces.
XSAnnotationList * fXSAnnotationList
Definition: XSComplexTypeDefinition.hpp:255
XSSimpleTypeDefinition * getSimpleType() const
A simple type definition corresponding to simple content model, otherwise null
Definition: XSComplexTypeDefinition.hpp:271
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XSSimpleTypeDefinition * fXSSimpleTypeDefinition
Definition: XSComplexTypeDefinition.hpp:254
virtual bool getAnonymous() const =0
A boolean that specifies if the type definition is anonymous.
short fProhibitedSubstitution
Definition: XSComplexTypeDefinition.hpp:257
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
Definition: XSParticle.hpp:41
This class represents a complexType or simpleType definition.
Definition: XSTypeDefinition.hpp:39
XSParticle * fParticle
Definition: XSComplexTypeDefinition.hpp:256
short getProhibitedSubstitutions() const
[prohibited substitutions]: A subset of {extension, restriction} or DERIVATION_NONE represented as a ...
Definition: XSComplexTypeDefinition.hpp:276