00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #if !defined(XSSIMPLETYPEDEFINITION_HPP)
00022 #define XSSIMPLETYPEDEFINITION_HPP
00023
00024 #include <xercesc/framework/psvi/XSTypeDefinition.hpp>
00025
00026 XERCES_CPP_NAMESPACE_BEGIN
00027
00036
00037 class XSAnnotation;
00038 class XSFacet;
00039 class XSMultiValueFacet;
00040 class DatatypeValidator;
00041
00042 class XSSimpleTypeDefinition : public XSTypeDefinition
00043 {
00044 public:
00045
00046
00047 enum VARIETY {
00051 VARIETY_ABSENT = 0,
00055 VARIETY_ATOMIC = 1,
00059 VARIETY_LIST = 2,
00063 VARIETY_UNION = 3
00064 };
00065
00066
00067 enum FACET {
00071 FACET_NONE = 0,
00075 FACET_LENGTH = 1,
00079 FACET_MINLENGTH = 2,
00083 FACET_MAXLENGTH = 4,
00087 FACET_PATTERN = 8,
00091 FACET_WHITESPACE = 16,
00095 FACET_MAXINCLUSIVE = 32,
00099 FACET_MAXEXCLUSIVE = 64,
00103 FACET_MINEXCLUSIVE = 128,
00107 FACET_MININCLUSIVE = 256,
00111 FACET_TOTALDIGITS = 512,
00115 FACET_FRACTIONDIGITS = 1024,
00119 FACET_ENUMERATION = 2048
00120 };
00121
00122
00123 enum ORDERING {
00127 ORDERED_FALSE = 0,
00132 ORDERED_PARTIAL = 1,
00136 ORDERED_TOTAL = 2
00137 };
00138
00139
00140
00143
00156 XSSimpleTypeDefinition
00157 (
00158 DatatypeValidator* const datatypeValidator
00159 , VARIETY stVariety
00160 , XSTypeDefinition* const xsBaseType
00161 , XSSimpleTypeDefinition* const primitiveOrItemType
00162 , XSSimpleTypeDefinitionList* const memberTypes
00163 , XSAnnotation* headAnnot
00164 , XSModel* const xsModel
00165 , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager
00166 );
00167
00169
00172 ~XSSimpleTypeDefinition();
00174
00175
00179
00183 VARIETY getVariety() const;
00184
00190 XSSimpleTypeDefinition *getPrimitiveType();
00191
00197 XSSimpleTypeDefinition *getItemType();
00198
00204 XSSimpleTypeDefinitionList *getMemberTypes() const;
00205
00210 int getDefinedFacets() const;
00211
00218 bool isDefinedFacet(FACET facetName);
00219
00223 int getFixedFacets() const;
00224
00231 bool isFixedFacet(FACET facetName);
00232
00244 const XMLCh *getLexicalFacetValue(FACET facetName);
00245
00249 StringList *getLexicalEnumeration();
00250
00254 StringList *getLexicalPattern();
00255
00259 ORDERING getOrdered() const;
00260
00264 bool getFinite() const;
00265
00269 bool getBounded() const;
00270
00274 bool getNumeric() const;
00275
00279 XSAnnotationList *getAnnotations();
00285 XSFacetList *getFacets();
00286
00290 XSMultiValueFacetList *getMultiValueFacets();
00291
00296 const XMLCh* getName();
00297
00302 const XMLCh* getNamespace();
00303
00309 XSNamespaceItem *getNamespaceItem();
00310
00315 bool getAnonymous() const;
00316
00321 XSTypeDefinition *getBaseType();
00322
00330 bool derivedFromType(const XSTypeDefinition* const ancestorType);
00331
00335 inline DatatypeValidator* getDatatypeValidator() const;
00336
00338
00339
00343
00344
00346
00347 private:
00348
00349
00350
00351
00352 XSSimpleTypeDefinition(const XSSimpleTypeDefinition&);
00353 XSSimpleTypeDefinition & operator=(const XSSimpleTypeDefinition &);
00354
00358 void setFacetInfo
00359 (
00360 int definedFacets
00361 , int fixedFacets
00362 , XSFacetList* const xsFacetList
00363 , XSMultiValueFacetList* const xsMultiValueFacetList
00364 , StringList* const patternList
00365 );
00366 void setPrimitiveType(XSSimpleTypeDefinition* const toSet);
00367
00368 friend class XSObjectFactory;
00369
00370 protected:
00371
00372
00373
00374
00375 int fDefinedFacets;
00376 int fFixedFacets;
00377 VARIETY fVariety;
00378 DatatypeValidator* fDatatypeValidator;
00379 XSFacetList* fXSFacetList;
00380 XSMultiValueFacetList* fXSMultiValueFacetList;
00381 StringList* fPatternList;
00382 XSSimpleTypeDefinition* fPrimitiveOrItemType;
00383 XSSimpleTypeDefinitionList* fMemberTypes;
00384 XSAnnotationList* fXSAnnotationList;
00385 };
00386
00387 inline XSSimpleTypeDefinition::VARIETY XSSimpleTypeDefinition::getVariety() const
00388 {
00389 return fVariety;
00390 }
00391
00392 inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getPrimitiveType()
00393 {
00394 if (fVariety == VARIETY_ATOMIC)
00395 return fPrimitiveOrItemType;
00396
00397 return 0;
00398 }
00399
00400 inline XSSimpleTypeDefinition* XSSimpleTypeDefinition::getItemType()
00401 {
00402 if (fVariety == VARIETY_LIST)
00403 return fPrimitiveOrItemType;
00404
00405 return 0;
00406 }
00407
00408 inline XSSimpleTypeDefinitionList* XSSimpleTypeDefinition::getMemberTypes() const
00409 {
00410 return fMemberTypes;
00411 }
00412
00413 inline int XSSimpleTypeDefinition::getDefinedFacets() const
00414 {
00415 return fDefinedFacets;
00416 }
00417
00418 inline int XSSimpleTypeDefinition::getFixedFacets() const
00419 {
00420 return fFixedFacets;
00421 }
00422
00423 inline StringList* XSSimpleTypeDefinition::getLexicalPattern()
00424 {
00425 return fPatternList;
00426 }
00427
00428 inline XSFacetList* XSSimpleTypeDefinition::getFacets()
00429 {
00430 return fXSFacetList;
00431 }
00432
00433 inline XSMultiValueFacetList* XSSimpleTypeDefinition::getMultiValueFacets()
00434 {
00435 return fXSMultiValueFacetList;
00436 }
00437
00438 inline XSAnnotationList *XSSimpleTypeDefinition::getAnnotations()
00439 {
00440 return fXSAnnotationList;
00441 }
00442
00443 inline void
00444 XSSimpleTypeDefinition::setPrimitiveType(XSSimpleTypeDefinition* const toSet)
00445 {
00446 fPrimitiveOrItemType = toSet;
00447 }
00448
00449 inline DatatypeValidator*
00450 XSSimpleTypeDefinition::getDatatypeValidator() const
00451 {
00452 return fDatatypeValidator;
00453 }
00454
00455 XERCES_CPP_NAMESPACE_END
00456
00457 #endif