Xerces-C++  3.2.3
XSSimpleTypeDefinition.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_XSSIMPLETYPEDEFINITION_HPP)
23 #define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP
24 
26 
28 
37 // forward declarations
38 class XSAnnotation;
39 class XSFacet;
40 class XSMultiValueFacet;
41 class DatatypeValidator;
42 
44 {
45 public:
46 
47  // Variety definitions
48  enum VARIETY {
52  VARIETY_ABSENT = 0,
56  VARIETY_ATOMIC = 1,
60  VARIETY_LIST = 2,
64  VARIETY_UNION = 3
65  };
66 
67  // Facets
68  enum FACET {
72  FACET_NONE = 0,
76  FACET_LENGTH = 1,
80  FACET_MINLENGTH = 2,
84  FACET_MAXLENGTH = 4,
88  FACET_PATTERN = 8,
92  FACET_WHITESPACE = 16,
96  FACET_MAXINCLUSIVE = 32,
100  FACET_MAXEXCLUSIVE = 64,
104  FACET_MINEXCLUSIVE = 128,
108  FACET_MININCLUSIVE = 256,
112  FACET_TOTALDIGITS = 512,
116  FACET_FRACTIONDIGITS = 1024,
120  FACET_ENUMERATION = 2048
121  };
122 
123  // possible order relations
124  enum ORDERING {
128  ORDERED_FALSE = 0,
133  ORDERED_PARTIAL = 1,
137  ORDERED_TOTAL = 2
138  };
139 
140  // Constructors and Destructor
141  // -----------------------------------------------------------------------
144 
158  (
159  DatatypeValidator* const datatypeValidator
160  , VARIETY stVariety
161  , XSTypeDefinition* const xsBaseType
162  , XSSimpleTypeDefinition* const primitiveOrItemType
163  , XSSimpleTypeDefinitionList* const memberTypes
164  , XSAnnotation* headAnnot
165  , XSModel* const xsModel
167  );
168 
170 
175 
176  //---------------------
180 
184  VARIETY getVariety() const;
185 
191  XSSimpleTypeDefinition *getPrimitiveType();
192 
198  XSSimpleTypeDefinition *getItemType();
199 
205  XSSimpleTypeDefinitionList *getMemberTypes() const;
206 
211  int getDefinedFacets() const;
212 
219  bool isDefinedFacet(FACET facetName);
220 
224  int getFixedFacets() const;
225 
232  bool isFixedFacet(FACET facetName);
233 
245  const XMLCh *getLexicalFacetValue(FACET facetName);
246 
250  StringList *getLexicalEnumeration();
251 
255  StringList *getLexicalPattern();
256 
260  ORDERING getOrdered() const;
261 
265  bool getFinite() const;
266 
270  bool getBounded() const;
271 
275  bool getNumeric() const;
276 
280  XSAnnotationList *getAnnotations();
286  XSFacetList *getFacets();
287 
291  XSMultiValueFacetList *getMultiValueFacets();
292 
297  const XMLCh* getName() const;
298 
303  const XMLCh* getNamespace() const;
304 
311 
316  bool getAnonymous() const;
317 
323 
331  bool derivedFromType(const XSTypeDefinition* const ancestorType);
332 
336  inline DatatypeValidator* getDatatypeValidator() const;
337 
339 
340  //----------------------------------
344 
345 
347 
348 private:
349 
350  // -----------------------------------------------------------------------
351  // Unimplemented constructors and operators
352  // -----------------------------------------------------------------------
354  XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &);
355 
359  void setFacetInfo
360  (
361  int definedFacets
362  , int fixedFacets
363  , XSFacetList* const xsFacetList
364  , XSMultiValueFacetList* const xsMultiValueFacetList
365  , StringList* const patternList
366  );
367  void setPrimitiveType(XSSimpleTypeDefinition* const toSet);
368 
369  friend class XSObjectFactory;
370 
371 protected:
372 
373  // -----------------------------------------------------------------------
374  // data members
375  // -----------------------------------------------------------------------
379  DatatypeValidator* fDatatypeValidator;
386 };
387 
389 {
390  return fVariety;
391 }
392 
394 {
395  if (fVariety == VARIETY_ATOMIC)
396  return fPrimitiveOrItemType;
397 
398  return 0;
399 }
400 
402 {
403  if (fVariety == VARIETY_LIST)
404  return fPrimitiveOrItemType;
405 
406  return 0;
407 }
408 
410 {
411  return fMemberTypes;
412 }
413 
415 {
416  return fDefinedFacets;
417 }
418 
420 {
421  return fFixedFacets;
422 }
423 
425 {
426  return fPatternList;
427 }
428 
430 {
431  return fXSFacetList;
432 }
433 
435 {
436  return fXSMultiValueFacetList;
437 }
438 
440 {
441  return fXSAnnotationList;
442 }
443 
444 inline void
445 XSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet)
446 {
447  fPrimitiveOrItemType = toSet;
448 }
449 
450 inline DatatypeValidator*
452 {
453  return fDatatypeValidator;
454 }
455 
457 
458 #endif
XSSimpleTypeDefinition::getFacets
XSFacetList * getFacets()
Definition: XSSimpleTypeDefinition.hpp:429
XSSimpleTypeDefinition::getFixedFacets
int getFixedFacets() const
[facets]: get all facets defined and fixed on this type.
Definition: XSSimpleTypeDefinition.hpp:419
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.
XSSimpleTypeDefinition::fVariety
VARIETY fVariety
Definition: XSSimpleTypeDefinition.hpp:378
XSSimpleTypeDefinition::getVariety
VARIETY getVariety() const
[variety]: one of {atomic, list, union} or absent
Definition: XSSimpleTypeDefinition.hpp:388
XSSimpleTypeDefinition::fMemberTypes
XSSimpleTypeDefinitionList * fMemberTypes
Definition: XSSimpleTypeDefinition.hpp:384
XSNamespaceItem
Definition: XSNamespaceItem.hpp:53
XSSimpleTypeDefinition::fXSMultiValueFacetList
XSMultiValueFacetList * fXSMultiValueFacetList
Definition: XSSimpleTypeDefinition.hpp:381
XSSimpleTypeDefinition::getDatatypeValidator
DatatypeValidator * getDatatypeValidator() const
Definition: XSSimpleTypeDefinition.hpp:451
XSMultiValueFacet
Definition: XSMultiValueFacet.hpp:40
XSSimpleTypeDefinition::fFixedFacets
int fFixedFacets
Definition: XSSimpleTypeDefinition.hpp:377
XSSimpleTypeDefinition::getAnnotations
XSAnnotationList * getAnnotations()
Optional.
Definition: XSSimpleTypeDefinition.hpp:439
XSSimpleTypeDefinition::fPatternList
StringList * fPatternList
Definition: XSSimpleTypeDefinition.hpp:382
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.
XSFacet
Definition: XSFacet.hpp:40
XSModel
Definition: XSModel.hpp:59
XSMultiValueFacetList
RefVectorOf< XSMultiValueFacet > XSMultiValueFacetList
Definition: XSConstants.hpp:50
XSSimpleTypeDefinition::fDatatypeValidator
DatatypeValidator * fDatatypeValidator
Definition: XSSimpleTypeDefinition.hpp:379
XSSimpleTypeDefinition::FACET
FACET
Definition: XSSimpleTypeDefinition.hpp:68
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
XSSimpleTypeDefinition::ORDERING
ORDERING
Definition: XSSimpleTypeDefinition.hpp:124
XSTypeDefinition
This class represents a complexType or simpleType definition.
Definition: XSTypeDefinition.hpp:39
XSTypeDefinition::derivedFromType
virtual bool derivedFromType(const XSTypeDefinition *const ancestorType)=0
Convenience method: check if this type is derived from the given ancestorType.
XSSimpleTypeDefinition::VARIETY
VARIETY
Definition: XSSimpleTypeDefinition.hpp:48
XSSimpleTypeDefinition::VARIETY_LIST
@ VARIETY_LIST
List type.
Definition: XSSimpleTypeDefinition.hpp:60
XSTypeDefinition::getNamespace
virtual const XMLCh * getNamespace() const =0
The [target namespace] of this object, or null if it is unspecified.
XSSimpleTypeDefinition::getPrimitiveType
XSSimpleTypeDefinition * getPrimitiveType()
If variety is atomic the primitive type definition (a built-in primitive datatype definition or the s...
Definition: XSSimpleTypeDefinition.hpp:393
StringList
RefArrayVectorOf< XMLCh > StringList
Definition: XSConstants.hpp:54
XSTypeDefinition::getBaseType
virtual XSTypeDefinition * getBaseType()=0
{base type definition}: either a simple type definition or a complex type definition.
XSSimpleTypeDefinition::getDefinedFacets
int getDefinedFacets() const
[facets]: get all facets defined on this type.
Definition: XSSimpleTypeDefinition.hpp:414
XSSimpleTypeDefinition::getLexicalPattern
StringList * getLexicalPattern()
Returns a list of pattern values.
Definition: XSSimpleTypeDefinition.hpp:424
XSSimpleTypeDefinition::getMultiValueFacets
XSMultiValueFacetList * getMultiValueFacets()
Definition: XSSimpleTypeDefinition.hpp:434
XSTypeDefinition::getNamespaceItem
virtual XSNamespaceItem * getNamespaceItem()=0
A namespace schema information item corresponding to the target namespace of the component,...
XSSimpleTypeDefinition::getMemberTypes
XSSimpleTypeDefinitionList * getMemberTypes() const
If variety is union the list of member type definitions (a non-empty sequence of simple type definiti...
Definition: XSSimpleTypeDefinition.hpp:409
XSAnnotationList
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:39
XSSimpleTypeDefinition::fDefinedFacets
int fDefinedFacets
Definition: XSSimpleTypeDefinition.hpp:376
XSSimpleTypeDefinition::fPrimitiveOrItemType
XSSimpleTypeDefinition * fPrimitiveOrItemType
Definition: XSSimpleTypeDefinition.hpp:383
XSSimpleTypeDefinition::fXSAnnotationList
XSAnnotationList * fXSAnnotationList
Definition: XSSimpleTypeDefinition.hpp:385
XMLPARSER_EXPORT
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
XSFacetList
RefVectorOf< XSFacet > XSFacetList
Definition: XSConstants.hpp:49
XSSimpleTypeDefinition::VARIETY_ATOMIC
@ VARIETY_ATOMIC
Atomic type.
Definition: XSSimpleTypeDefinition.hpp:56
XSSimpleTypeDefinitionList
RefVectorOf< XSSimpleTypeDefinition > XSSimpleTypeDefinitionList
Definition: XSConstants.hpp:53
XSSimpleTypeDefinition
Definition: XSSimpleTypeDefinition.hpp:43
XSSimpleTypeDefinition::getItemType
XSSimpleTypeDefinition * getItemType()
If variety is list the item type definition (an atomic or union simple type definition) is available,...
Definition: XSSimpleTypeDefinition.hpp:401
XSSimpleTypeDefinition::fXSFacetList
XSFacetList * fXSFacetList
Definition: XSSimpleTypeDefinition.hpp:380