XSSimpleTypeDefinition.hpp
Go to the documentation of this file.
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* $Id: XSSimpleTypeDefinition.hpp 1801237 2017-07-07 21:55:11Z scantor $
*/
#if !defined(XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP)
#define XERCESC_INCLUDE_GUARD_XSSIMPLETYPEDEFINITION_HPP
#include <xercesc/framework/psvi/XSTypeDefinition.hpp>
XERCES_CPP_NAMESPACE_BEGIN
// forward declarations
class XSAnnotation;
class XSFacet;
class XSMultiValueFacet;
class DatatypeValidator;
class XMLPARSER_EXPORT XSSimpleTypeDefinition : public XSTypeDefinition
{
public:
// Variety definitions
enum VARIETY {
VARIETY_ABSENT = 0,
VARIETY_ATOMIC = 1,
VARIETY_LIST = 2,
VARIETY_UNION = 3
};
// Facets
enum FACET {
FACET_NONE = 0,
FACET_LENGTH = 1,
FACET_MINLENGTH = 2,
FACET_MAXLENGTH = 4,
FACET_PATTERN = 8,
FACET_WHITESPACE = 16,
FACET_MAXINCLUSIVE = 32,
FACET_MAXEXCLUSIVE = 64,
FACET_MINEXCLUSIVE = 128,
FACET_MININCLUSIVE = 256,
FACET_TOTALDIGITS = 512,
FACET_FRACTIONDIGITS = 1024,
FACET_ENUMERATION = 2048
};
// possible order relations
enum ORDERING {
ORDERED_FALSE = 0,
ORDERED_PARTIAL = 1,
ORDERED_TOTAL = 2
};
// Constructors and Destructor
// -----------------------------------------------------------------------
XSSimpleTypeDefinition
(
DatatypeValidator* const datatypeValidator
, VARIETY stVariety
, XSTypeDefinition* const xsBaseType
, XSSimpleTypeDefinition* const primitiveOrItemType
, XSSimpleTypeDefinitionList* const memberTypes
, XSAnnotation* headAnnot
, XSModel* const xsModel
, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
);
~XSSimpleTypeDefinition();
//---------------------
VARIETY getVariety() const;
XSSimpleTypeDefinition *getPrimitiveType();
XSSimpleTypeDefinition *getItemType();
XSSimpleTypeDefinitionList *getMemberTypes() const;
int getDefinedFacets() const;
bool isDefinedFacet(FACET facetName);
int getFixedFacets() const;
bool isFixedFacet(FACET facetName);
const XMLCh *getLexicalFacetValue(FACET facetName);
StringList *getLexicalEnumeration();
StringList *getLexicalPattern();
ORDERING getOrdered() const;
bool getFinite() const;
bool getBounded() const;
bool getNumeric() const;
XSAnnotationList *getAnnotations();
XSFacetList *getFacets();
XSMultiValueFacetList *getMultiValueFacets();
const XMLCh* getName() const;
const XMLCh* getNamespace() const;
XSNamespaceItem *getNamespaceItem();
bool getAnonymous() const;
XSTypeDefinition *getBaseType();
bool derivedFromType(const XSTypeDefinition* const ancestorType);
inline DatatypeValidator* getDatatypeValidator() const;
//----------------------------------
private:
// -----------------------------------------------------------------------
// Unimplemented constructors and operators
// -----------------------------------------------------------------------
XSSimpleTypeDefinition(const XSSimpleTypeDefinition&);
XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &);
void setFacetInfo
(
int definedFacets
, int fixedFacets
, XSFacetList* const xsFacetList
, XSMultiValueFacetList* const xsMultiValueFacetList
, StringList* const patternList
);
void setPrimitiveType(XSSimpleTypeDefinition* const toSet);
friend class XSObjectFactory;
protected:
// -----------------------------------------------------------------------
// data members
// -----------------------------------------------------------------------
int fDefinedFacets;
int fFixedFacets;
VARIETY fVariety;
DatatypeValidator* fDatatypeValidator;
XSFacetList* fXSFacetList;
XSMultiValueFacetList* fXSMultiValueFacetList;
StringList* fPatternList;
XSSimpleTypeDefinition* fPrimitiveOrItemType;
XSSimpleTypeDefinitionList* fMemberTypes;
XSAnnotationList* fXSAnnotationList;
};
inline XSSimpleTypeDefinition::VARIETY XSSimpleTypeDefinition::getVariety() const
{
return fVariety;
}
inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getPrimitiveType()
{
if (fVariety == VARIETY_ATOMIC)
return fPrimitiveOrItemType;
return 0;
}
inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getItemType()
{
if (fVariety == VARIETY_LIST)
return fPrimitiveOrItemType;
return 0;
}
inline XSSimpleTypeDefinitionList* XSSimpleTypeDefinition::getMemberTypes() const
{
return fMemberTypes;
}
inline int XSSimpleTypeDefinition::getDefinedFacets() const
{
return fDefinedFacets;
}
inline int XSSimpleTypeDefinition::getFixedFacets() const
{
return fFixedFacets;
}
inline StringList* XSSimpleTypeDefinition::getLexicalPattern()
{
return fPatternList;
}
inline XSFacetList* XSSimpleTypeDefinition::getFacets()
{
return fXSFacetList;
}
inline XSMultiValueFacetList* XSSimpleTypeDefinition::getMultiValueFacets()
{
return fXSMultiValueFacetList;
}
inline XSAnnotationList *XSSimpleTypeDefinition::getAnnotations()
{
return fXSAnnotationList;
}
inline void
XSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet)
{
fPrimitiveOrItemType = toSet;
}
inline DatatypeValidator*
XSSimpleTypeDefinition::getDatatypeValidator() const
{
return fDatatypeValidator;
}
XERCES_CPP_NAMESPACE_END
#endif
XSMultiValueFacet
Definition: XSMultiValueFacet.hpp:40
XSSimpleTypeDefinition::getMultiValueFacets
XSMultiValueFacetList * getMultiValueFacets()
Definition: XSSimpleTypeDefinition.hpp:434
XSSimpleTypeDefinition::FACET
FACET
Definition: XSSimpleTypeDefinition.hpp:68
XMLPlatformUtils::fgMemoryManager
static MemoryManager * fgMemoryManager
The configurable memory manager.
Definition: PlatformUtils.hpp:121
XSTypeDefinition::getNamespaceItem
virtual XSNamespaceItem * getNamespaceItem()=0
A namespace schema information item corresponding to the target namespace of the component, if it&#39;s globally declared; or null otherwise.
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
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
XSTypeDefinition::derivedFromType
virtual bool derivedFromType(const XSTypeDefinition *const ancestorType)=0
Convenience method: check if this type is derived from the given ancestorType.
XSSimpleTypeDefinition::getFacets
XSFacetList * getFacets()
Definition: XSSimpleTypeDefinition.hpp:429
XSSimpleTypeDefinition::fPrimitiveOrItemType
XSSimpleTypeDefinition * fPrimitiveOrItemType
Definition: XSSimpleTypeDefinition.hpp:383
XSMultiValueFacetList
RefVectorOf< XSMultiValueFacet > XSMultiValueFacetList
Definition: XSConstants.hpp:50
XSNamespaceItem
Definition: XSNamespaceItem.hpp:53
XSSimpleTypeDefinition::fXSFacetList
XSFacetList * fXSFacetList
Definition: XSSimpleTypeDefinition.hpp:380
XSSimpleTypeDefinition::getLexicalPattern
StringList * getLexicalPattern()
Returns a list of pattern values.
Definition: XSSimpleTypeDefinition.hpp:424
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.
XSSimpleTypeDefinition::fDefinedFacets
int fDefinedFacets
Definition: XSSimpleTypeDefinition.hpp:376
XSSimpleTypeDefinition::fXSAnnotationList
XSAnnotationList * fXSAnnotationList
Definition: XSSimpleTypeDefinition.hpp:385
XMLPARSER_EXPORT
#define XMLPARSER_EXPORT
Definition: XercesDefs.hpp:163
XSModel
Definition: XSModel.hpp:59
XSSimpleTypeDefinition::getDefinedFacets
int getDefinedFacets() const
[facets]: get all facets defined on this type.
Definition: XSSimpleTypeDefinition.hpp:414
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
XSAnnotation
Definition: XSAnnotation.hpp:41
XSSimpleTypeDefinition::fXSMultiValueFacetList
XSMultiValueFacetList * fXSMultiValueFacetList
Definition: XSSimpleTypeDefinition.hpp:381
XSSimpleTypeDefinition::fDatatypeValidator
DatatypeValidator * fDatatypeValidator
Definition: XSSimpleTypeDefinition.hpp:379
XSSimpleTypeDefinition::fFixedFacets
int fFixedFacets
Definition: XSSimpleTypeDefinition.hpp:377
XSFacet
Definition: XSFacet.hpp:40
MemoryManager
Configurable memory manager.
Definition: MemoryManager.hpp:39
XSSimpleTypeDefinition::fPatternList
StringList * fPatternList
Definition: XSSimpleTypeDefinition.hpp:382
XSSimpleTypeDefinition::getAnnotations
XSAnnotationList * getAnnotations()
Optional.
Definition: XSSimpleTypeDefinition.hpp:439
XSSimpleTypeDefinition
Definition: XSSimpleTypeDefinition.hpp:43
XSSimpleTypeDefinition::fMemberTypes
XSSimpleTypeDefinitionList * fMemberTypes
Definition: XSSimpleTypeDefinition.hpp:384
XMLCh
uint16_t XMLCh
Definition: Xerces_autoconf_config.hpp:120
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.
StringList
RefArrayVectorOf< XMLCh > StringList
Definition: XSConstants.hpp:54
XSSimpleTypeDefinition::ORDERING
ORDERING
Definition: XSSimpleTypeDefinition.hpp:124
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
XERCES_CPP_NAMESPACE_END
#define XERCES_CPP_NAMESPACE_END
Definition: XercesDefs.hpp:113
XSTypeDefinition.hpp
XSTypeDefinition::getAnonymous
virtual bool getAnonymous() const =0
A boolean that specifies if the type definition is anonymous.
XSAnnotationList
RefVectorOf< XSAnnotation > XSAnnotationList
Definition: XSConstants.hpp:41
XSSimpleTypeDefinition::VARIETY
VARIETY
Definition: XSSimpleTypeDefinition.hpp:48
XSSimpleTypeDefinitionList
RefVectorOf< XSSimpleTypeDefinition > XSSimpleTypeDefinitionList
Definition: XSConstants.hpp:53
XSFacetList
RefVectorOf< XSFacet > XSFacetList
Definition: XSConstants.hpp:49
XSSimpleTypeDefinition::getDatatypeValidator
DatatypeValidator * getDatatypeValidator() const
Definition: XSSimpleTypeDefinition.hpp:451
XSTypeDefinition
This class represents a complexType or simpleType definition.
Definition: XSTypeDefinition.hpp:39