00001 /* 00002 * Copyright 2003,2004 The Apache Software Foundation. 00003 * 00004 * Licensed under the Apache License, Version 2.0 (the "License"); 00005 * you may not use this file except in compliance with the License. 00006 * You may obtain a copy of the License at 00007 * 00008 * http://www.apache.org/licenses/LICENSE-2.0 00009 * 00010 * Unless required by applicable law or agreed to in writing, software 00011 * distributed under the License is distributed on an "AS IS" BASIS, 00012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 * See the License for the specific language governing permissions and 00014 * limitations under the License. 00015 */ 00016 00017 /* 00018 * $Log: PSVIItem.hpp,v $ 00019 * Revision 1.10 2004/09/13 21:22:42 peiyongz 00020 * new method: getActualValue() 00021 * 00022 * Revision 1.9 2004/09/08 13:56:07 peiyongz 00023 * Apache License Version 2.0 00024 * 00025 * Revision 1.8 2003/11/28 21:18:31 knoaman 00026 * Make use of canonical representation in PSVIElement 00027 * 00028 * Revision 1.7 2003/11/27 17:58:59 neilg 00029 * fix compilation error 00030 * 00031 * Revision 1.6 2003/11/27 16:44:59 neilg 00032 * implement isSpecified; thanks to Pete Lloyd 00033 * 00034 * Revision 1.5 2003/11/27 06:10:32 neilg 00035 * PSVIAttribute implementation 00036 * 00037 * Revision 1.4 2003/11/25 16:14:28 neilg 00038 * move inlines into PSVIItem.hpp 00039 * 00040 * Revision 1.3 2003/11/21 22:34:45 neilg 00041 * More schema component model implementation, thanks to David Cargill. 00042 * In particular, this cleans up and completes the XSModel, XSNamespaceItem, 00043 * XSAttributeDeclaration and XSAttributeGroup implementations. 00044 * 00045 * Revision 1.2 2003/11/06 15:30:04 neilg 00046 * first part of PSVI/schema component model implementation, thanks to David Cargill. This covers setting the PSVIHandler on parser objects, as well as implementing XSNotation, XSSimpleTypeDefinition, XSIDCDefinition, and most of XSWildcard, XSComplexTypeDefinition, XSElementDeclaration, XSAttributeDeclaration and XSAttributeUse. 00047 * 00048 * Revision 1.1 2003/09/16 14:33:36 neilg 00049 * PSVI/schema component model classes, with Makefile/configuration changes necessary to build them 00050 * 00051 */ 00052 00053 #if !defined(PSVIITEM_HPP) 00054 #define PSVIITEM_HPP 00055 00056 #include <xercesc/util/PlatformUtils.hpp> 00057 00058 XERCES_CPP_NAMESPACE_BEGIN 00059 00067 // forward declarations 00068 class XSTypeDefinition; 00069 class XSSimpleTypeDefinition; 00070 class XSValue; 00071 00072 class PSVIItem : public XMemory 00073 { 00074 public: 00075 00076 enum VALIDITY_STATE { 00081 VALIDITY_NOTKNOWN = 0, 00082 00087 VALIDITY_INVALID = 1, 00088 00093 VALIDITY_VALID = 2 00094 }; 00095 00096 enum ASSESSMENT_TYPE { 00100 VALIDATION_NONE = 0, 00101 00105 VALIDATION_PARTIAL = 1, 00106 00109 VALIDATION_FULL = 2 00110 }; 00111 00112 // Constructors and Destructor 00113 // ----------------------------------------------------------------------- 00116 00122 PSVIItem(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); 00123 00125 00128 virtual ~PSVIItem(); 00130 00131 //--------------------- 00135 00145 const XMLCh *getValidationContext(); 00146 00154 VALIDITY_STATE getValidity() const; 00155 00162 ASSESSMENT_TYPE getValidationAttempted() const; 00163 00170 /*** 00171 const XMLCh ** getErrorCodes(); 00172 ****/ 00173 00180 const XMLCh *getSchemaNormalizedValue(); 00181 00187 virtual XSTypeDefinition *getTypeDefinition() = 0; 00188 00198 virtual XSSimpleTypeDefinition *getMemberTypeDefinition() = 0; 00199 00206 const XMLCh *getSchemaDefault(); 00207 00213 bool getIsSchemaSpecified() const; 00214 00222 const XMLCh *getCanonicalRepresentation() const; 00223 00225 00233 virtual XSValue *getActualValue() const; 00234 00235 //---------------------------------- 00239 00240 void setValidationAttempted(PSVIItem::ASSESSMENT_TYPE attemptType); 00241 void setValidity(PSVIItem::VALIDITY_STATE validity); 00242 00249 void reset( 00250 const XMLCh* const validationContext 00251 , const XMLCh* const normalizedValue 00252 , const VALIDITY_STATE validityState 00253 , const ASSESSMENT_TYPE assessmentType 00254 ); 00256 private: 00257 00258 // ----------------------------------------------------------------------- 00259 // Unimplemented constructors and operators 00260 // ----------------------------------------------------------------------- 00261 PSVIItem(const PSVIItem&); 00262 PSVIItem & operator=(const PSVIItem &); 00263 00264 00265 protected: 00266 // ----------------------------------------------------------------------- 00267 // data members 00268 // ----------------------------------------------------------------------- 00269 // fMemoryManager: 00270 // used for any memory allocations 00271 // fValidationContext 00272 // corresponds to the schema [validation context] property 00273 // fNormalizedValue 00274 // The schema normalized value (when present) 00275 // fDefaultValue 00276 // default value specified in the schema, if any 00277 // fCanonicalValue 00278 // canonicalized version of normalizedValue 00279 // fValidityState 00280 // Whether this item is valid or not 00281 // fAssessmentType 00282 // The kind of assessment that produced the given validity outcome 00283 // fIsSpecified 00284 // Whether this item exists because a default was specified in the schema 00285 // fType 00286 // type responsible for validating this item 00287 // fMemberType 00288 // If fType is a union type, the member type that validated this item 00289 MemoryManager* const fMemoryManager; 00290 const XMLCh* fValidationContext; 00291 const XMLCh* fNormalizedValue; 00292 const XMLCh* fDefaultValue; 00293 XMLCh* fCanonicalValue; 00294 VALIDITY_STATE fValidityState; 00295 ASSESSMENT_TYPE fAssessmentType; 00296 bool fIsSpecified; 00297 XSTypeDefinition * fType; 00298 XSSimpleTypeDefinition* fMemberType; 00299 }; 00300 00301 inline PSVIItem::~PSVIItem() {} 00302 00303 inline const XMLCh *PSVIItem::getValidationContext() 00304 { 00305 return fValidationContext; 00306 } 00307 00308 inline const XMLCh* PSVIItem::getSchemaNormalizedValue() 00309 { 00310 return fNormalizedValue; 00311 } 00312 00313 inline const XMLCh* PSVIItem::getSchemaDefault() 00314 { 00315 return fDefaultValue; 00316 } 00317 00318 inline const XMLCh* PSVIItem::getCanonicalRepresentation() const 00319 { 00320 return fCanonicalValue; 00321 } 00322 00323 inline PSVIItem::VALIDITY_STATE PSVIItem::getValidity() const 00324 { 00325 return fValidityState; 00326 } 00327 00328 inline bool PSVIItem::getIsSchemaSpecified() const 00329 { 00330 return fIsSpecified; 00331 } 00332 00333 inline PSVIItem::ASSESSMENT_TYPE PSVIItem::getValidationAttempted() const 00334 { 00335 return fAssessmentType; 00336 } 00337 00338 XERCES_CPP_NAMESPACE_END 00339 00340 #endif