📄 xssimpletypedefinition.hpp
字号:
/* * 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 568078 2007-08-21 11:43:25Z amassari $ */#if !defined(XSSIMPLETYPEDEFINITION_HPP)#define XSSIMPLETYPEDEFINITION_HPP#include <xercesc/framework/psvi/XSTypeDefinition.hpp>XERCES_CPP_NAMESPACE_BEGIN/** * This class represents a simpleType definition * schema component. * This is *always* owned by the validator /parser object from which * it is obtained. * */// forward declarationsclass XSAnnotation;class XSFacet;class XSMultiValueFacet;class DatatypeValidator;class XMLPARSER_EXPORT XSSimpleTypeDefinition : public XSTypeDefinition{public: // Variety definitions enum VARIETY { /** * The variety is absent for the anySimpleType definition. */ VARIETY_ABSENT = 0, /** * <code>Atomic</code> type. */ VARIETY_ATOMIC = 1, /** * <code>List</code> type. */ VARIETY_LIST = 2, /** * <code>Union</code> type. */ VARIETY_UNION = 3 }; // Facets enum FACET { /** * No facets defined. */ FACET_NONE = 0, /** * 4.3.1 Length */ FACET_LENGTH = 1, /** * 4.3.2 minLength. */ FACET_MINLENGTH = 2, /** * 4.3.3 maxLength. */ FACET_MAXLENGTH = 4, /** * 4.3.4 pattern. */ FACET_PATTERN = 8, /** * 4.3.5 whitespace. */ FACET_WHITESPACE = 16, /** * 4.3.7 maxInclusive. */ FACET_MAXINCLUSIVE = 32, /** * 4.3.9 maxExclusive. */ FACET_MAXEXCLUSIVE = 64, /** * 4.3.9 minExclusive. */ FACET_MINEXCLUSIVE = 128, /** * 4.3.10 minInclusive. */ FACET_MININCLUSIVE = 256, /** * 4.3.11 totalDigits . */ FACET_TOTALDIGITS = 512, /** * 4.3.12 fractionDigits. */ FACET_FRACTIONDIGITS = 1024, /** * 4.3.5 enumeration. */ FACET_ENUMERATION = 2048 }; // possible order relations enum ORDERING { /** * A constant defined for the 'ordered' fundamental facet: Not ordered. */ ORDERED_FALSE = 0, /** * A constant defined for the 'ordered' fundamental facet: partially * ordered. */ ORDERED_PARTIAL = 1, /** * A constant defined for the 'ordered' fundamental facet: total ordered. */ ORDERED_TOTAL = 2 }; // Constructors and Destructor // ----------------------------------------------------------------------- /** @name Constructors */ //@{ /** * The default constructor * * @param datatypeValidator * @param stVariety * @param xsBaseType * @param primitiveOrItemType * @param memberTypes * @param headAnnot * @param xsModel * @param manager The configurable memory manager */ 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 ); //@}; /** @name Destructor */ //@{ ~XSSimpleTypeDefinition(); //@} //--------------------- /** @name XSSimpleTypeDefinition methods */ //@{ /** * [variety]: one of {atomic, list, union} or absent */ VARIETY getVariety() const; /** * If variety is <code>atomic</code> the primitive type definition (a * built-in primitive datatype definition or the simple ur-type * definition) is available, otherwise <code>null</code>. */ XSSimpleTypeDefinition *getPrimitiveType(); /** * If variety is <code>list</code> the item type definition (an atomic or * union simple type definition) is available, otherwise * <code>null</code>. */ XSSimpleTypeDefinition *getItemType(); /** * If variety is <code>union</code> the list of member type definitions (a * non-empty sequence of simple type definitions) is available, * otherwise <code>null</code>. */ XSSimpleTypeDefinitionList *getMemberTypes() const; /** * [facets]: get all facets defined on this type. The value is a bit * combination of FACET_XXX constants of all defined facets. */ int getDefinedFacets() const; /** * Convenience method. [Facets]: check whether a facet is defined on this * type. * @param facetName The name of the facet. * @return True if the facet is defined, false otherwise. */ bool isDefinedFacet(FACET facetName); /** * [facets]: get all facets defined and fixed on this type. */ int getFixedFacets() const; /** * Convenience method. [Facets]: check whether a facet is defined and * fixed on this type. * @param facetName The name of the facet. * @return True if the facet is fixed, false otherwise. */ bool isFixedFacet(FACET facetName); /** * Convenience method. Returns a value of a single constraining facet for * this simple type definition. This method must not be used to retrieve * values for <code>enumeration</code> and <code>pattern</code> facets. * @param facetName The name of the facet, i.e. * <code>FACET_LENGTH, FACET_TOTALDIGITS </code> (see * <code>XSConstants</code>).To retrieve value for pattern or * enumeration, see <code>enumeration</code> and <code>pattern</code>. * @return A value of the facet specified in <code>facetName</code> for * this simple type definition or <code>null</code>. */ const XMLCh *getLexicalFacetValue(FACET facetName); /** * Returns a list of enumeration values. */ StringList *getLexicalEnumeration(); /** * Returns a list of pattern values. */ StringList *getLexicalPattern(); /** * Fundamental Facet: ordered */ ORDERING getOrdered() const; /** * Fundamental Facet: cardinality. */ bool getFinite() const; /** * Fundamental Facet: bounded. */ bool getBounded() const; /** * Fundamental Facet: numeric. */ bool getNumeric() const; /** * Optional. A set of [annotation]s. */ XSAnnotationList *getAnnotations(); /** * @return list of constraining facets. * This method must not be used to retrieve * values for <code>enumeration</code> and <code>pattern</code> facets. */ XSFacetList *getFacets(); /** * @return list of enumeration and pattern facets. */ XSMultiValueFacetList *getMultiValueFacets(); /** * The name of type <code>NCName</code> of this declaration as defined in * XML Namespaces. */ const XMLCh* getName(); /** * The [target namespace] of this object, or <code>null</code> if it is * unspecified. */ const XMLCh* getNamespace(); /** * A namespace schema information item corresponding to the target * namespace of the component, if it's globally declared; or null * otherwise. */ XSNamespaceItem *getNamespaceItem(); /** * A boolean that specifies if the type definition is * anonymous. Convenience attribute. */ bool getAnonymous() const; /** * {base type definition}: either a simple type definition or a complex * type definition. */ XSTypeDefinition *getBaseType(); /** * Convenience method: check if this type is derived from the given * <code>ancestorType</code>. * @param ancestorType An ancestor type definition. * @return Return true if this type is derived from * <code>ancestorType</code>. */ bool derivedFromType(const XSTypeDefinition* const ancestorType); /** * */ inline DatatypeValidator* getDatatypeValidator() const; //@} //---------------------------------- /** methods needed by implementation */ //@{ //@}private: // ----------------------------------------------------------------------- // Unimplemented constructors and operators // ----------------------------------------------------------------------- XSSimpleTypeDefinition(const XSSimpleTypeDefinition&); XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &); /** * Helper method for construct */ 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 voidXSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet){ fPrimitiveOrItemType = toSet;}inline DatatypeValidator* XSSimpleTypeDefinition::getDatatypeValidator() const{ return fDatatypeValidator;}XERCES_CPP_NAMESPACE_END#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -