knoaman 2003/11/28 13:18:32 Modified: c/src/xercesc/framework/psvi PSVIElement.cpp PSVIElement.hpp PSVIItem.cpp PSVIItem.hpp c/src/xercesc/internal IGXMLScanner.cpp SGXMLScanner.cpp XMLScanner.hpp c/src/xercesc/validators/schema SchemaValidator.hpp Log: Make use of canonical representation in PSVIElement Revision Changes Path 1.5 +10 -1 xml-xerces/c/src/xercesc/framework/psvi/PSVIElement.cpp Index: PSVIElement.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/PSVIElement.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PSVIElement.cpp 27 Nov 2003 22:52:37 -0000 1.4 +++ PSVIElement.cpp 28 Nov 2003 21:18:31 -0000 1.5 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.5 2003/11/28 21:18:31 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.4 2003/11/27 22:52:37 knoaman * PSVIElement implementation * @@ -87,6 +90,11 @@ { } +PSVIElement::~PSVIElement() +{ + fMemoryManager->deallocate(fCanonicalValue); +} + XSTypeDefinition* PSVIElement::getTypeDefinition() { return fType; @@ -118,7 +126,7 @@ , XSModel* const schemaInfo , const XMLCh* const defaultValue , const XMLCh* const normalizedValue - , const XMLCh* const canonicalValue + , XMLCh* const canonicalValue , XSNotationDeclaration* const notationDecl) { fValidationContext = validationContext; @@ -132,6 +140,7 @@ fSchemaInfo = schemaInfo; fDefaultValue = defaultValue; fNormalizedValue = normalizedValue; + fMemoryManager->deallocate(fCanonicalValue); fCanonicalValue = canonicalValue; } 1.6 +4 -2 xml-xerces/c/src/xercesc/framework/psvi/PSVIElement.hpp Index: PSVIElement.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/PSVIElement.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- PSVIElement.hpp 27 Nov 2003 22:52:37 -0000 1.5 +++ PSVIElement.hpp 28 Nov 2003 21:18:31 -0000 1.6 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/11/28 21:18:31 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.5 2003/11/27 22:52:37 knoaman * PSVIElement implementation * @@ -181,7 +184,7 @@ , XSModel* const schemaInfo , const XMLCh* const defaultValue , const XMLCh* const normalizedValue = 0 - , const XMLCh* const canonicalValue = 0 + , XMLCh* const canonicalValue = 0 , XSNotationDeclaration* const notationDecl = 0 ); @@ -209,7 +212,6 @@ XSNotationDeclaration *fNotationDecl; XSModel *fSchemaInfo; }; -inline PSVIElement::~PSVIElement() {} inline XSElementDeclaration *PSVIElement::getElementDeclaration() { 1.5 +5 -1 xml-xerces/c/src/xercesc/framework/psvi/PSVIItem.cpp Index: PSVIItem.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/PSVIItem.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- PSVIItem.cpp 25 Nov 2003 16:14:28 -0000 1.4 +++ PSVIItem.cpp 28 Nov 2003 21:18:31 -0000 1.5 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.5 2003/11/28 21:18:31 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.4 2003/11/25 16:14:28 neilg * move inlines into PSVIItem.hpp * @@ -81,6 +84,7 @@ fValidationContext(0), fNormalizedValue(0), fDefaultValue(0), + fCanonicalValue(0), fValidityState(VALIDITY_NOTKNOWN), fAssessmentType(VALIDATION_FULL), fIsSpecified(false), 1.8 +7 -4 xml-xerces/c/src/xercesc/framework/psvi/PSVIItem.hpp Index: PSVIItem.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/psvi/PSVIItem.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- PSVIItem.hpp 27 Nov 2003 17:58:59 -0000 1.7 +++ PSVIItem.hpp 28 Nov 2003 21:18:31 -0000 1.8 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.8 2003/11/28 21:18:31 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.7 2003/11/27 17:58:59 neilg * fix compilation error * @@ -249,7 +252,7 @@ * was validated by a simple type definition for which canonical * representations of values are defined. */ - const XMLCh *getCanonicalRepresentation(); + const XMLCh *getCanonicalRepresentation() const; //@} @@ -311,7 +314,7 @@ const XMLCh* fValidationContext; const XMLCh* fNormalizedValue; const XMLCh* fDefaultValue; - const XMLCh* fCanonicalValue; + XMLCh* fCanonicalValue; VALIDITY_STATE fValidityState; ASSESSMENT_TYPE fAssessmentType; bool fIsSpecified; @@ -336,7 +339,7 @@ return fDefaultValue; } -inline const XMLCh* PSVIItem::getCanonicalRepresentation() +inline const XMLCh* PSVIItem::getCanonicalRepresentation() const { return fCanonicalValue; } 1.41 +23 -1 xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp Index: IGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/IGXMLScanner.cpp,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- IGXMLScanner.cpp 28 Nov 2003 20:09:31 -0000 1.40 +++ IGXMLScanner.cpp 28 Nov 2003 21:18:32 -0000 1.41 @@ -1064,11 +1064,16 @@ { fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); + fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); + + if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) + fPSVIElemContext.fNormalizedValue = 0; } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } } @@ -2801,11 +2806,16 @@ { fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); + fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); + + if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) + fPSVIElemContext.fNormalizedValue = 0; } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } } @@ -3349,6 +3359,15 @@ ? (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo) : 0; + XMLCh* canonicalValue = 0; + if (fPSVIElemContext.fNormalizedValue) + { + if (memberDV) + canonicalValue = (XMLCh*) memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); + else if (fPSVIElemContext.fCurrentDV) + canonicalValue = (XMLCh*) fPSVIElemContext.fCurrentDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); + } + fPSVIElement->reset ( validity @@ -3361,6 +3380,8 @@ , (memberDV) ? (XSSimpleTypeDefinition*) fModel->getXSObject(memberDV) : 0 , fModel , elemDecl->getDefaultValue() + , fPSVIElemContext.fNormalizedValue + , canonicalValue ); fPSVIHandler->handleElementPSVI @@ -3387,6 +3408,7 @@ fPSVIElemContext.fNoneValidationDepth = -1; fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } XERCES_CPP_NAMESPACE_END 1.60 +24 -1 xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp Index: SGXMLScanner.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/SGXMLScanner.cpp,v retrieving revision 1.59 retrieving revision 1.60 diff -u -r1.59 -r1.60 --- SGXMLScanner.cpp 28 Nov 2003 20:20:54 -0000 1.59 +++ SGXMLScanner.cpp 28 Nov 2003 21:18:32 -0000 1.60 @@ -974,11 +974,17 @@ { fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); + fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); + + if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) + fPSVIElemContext.fNormalizedValue = 0; + } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } } @@ -1754,11 +1760,16 @@ { fPSVIElemContext.fCurrentDV = ((SchemaValidator*) fValidator)->getCurrentDatatypeValidator(); fPSVIElemContext.fCurrentTypeInfo = ((SchemaValidator*) fValidator)->getCurrentTypeInfo(); + fPSVIElemContext.fNormalizedValue = ((SchemaValidator*) fValidator)->getNormalizedValue(); + + if (XMLString::equals(fPSVIElemContext.fNormalizedValue, XMLUni::fgZeroLenString)) + fPSVIElemContext.fNormalizedValue = 0; } else { fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } } @@ -4780,6 +4791,15 @@ ? (XSTypeDefinition*) fModel->getXSObject(fPSVIElemContext.fCurrentTypeInfo) : 0; + XMLCh* canonicalValue = 0; + if (fPSVIElemContext.fNormalizedValue) + { + if (memberDV) + canonicalValue = (XMLCh*) memberDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); + else if (fPSVIElemContext.fCurrentDV) + canonicalValue = (XMLCh*) fPSVIElemContext.fCurrentDV->getCanonicalRepresentation(fPSVIElemContext.fNormalizedValue, fMemoryManager); + } + fPSVIElement->reset ( validity @@ -4792,6 +4812,8 @@ , (memberDV) ? (XSSimpleTypeDefinition*) fModel->getXSObject(memberDV) : 0 , fModel , elemDecl->getDefaultValue() + , fPSVIElemContext.fNormalizedValue + , canonicalValue ); fPSVIHandler->handleElementPSVI @@ -4818,6 +4840,7 @@ fPSVIElemContext.fNoneValidationDepth = -1; fPSVIElemContext.fCurrentDV = 0; fPSVIElemContext.fCurrentTypeInfo = 0; + fPSVIElemContext.fNormalizedValue = 0; } XERCES_CPP_NAMESPACE_END 1.31 +4 -0 xml-xerces/c/src/xercesc/internal/XMLScanner.hpp Index: XMLScanner.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XMLScanner.hpp,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- XMLScanner.hpp 28 Nov 2003 19:54:31 -0000 1.30 +++ XMLScanner.hpp 28 Nov 2003 21:18:32 -0000 1.31 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.31 2003/11/28 21:18:32 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.30 2003/11/28 19:54:31 knoaman * PSVIElement update * @@ -336,6 +339,7 @@ int fNoneValidationDepth; DatatypeValidator* fCurrentDV; ComplexTypeInfo* fCurrentTypeInfo; + const XMLCh* fNormalizedValue; }; // This is the mondo scanner class, which does the vast majority of the 1.23 +9 -0 xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.hpp Index: SchemaValidator.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/schema/SchemaValidator.hpp,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- SchemaValidator.hpp 27 Nov 2003 22:52:37 -0000 1.22 +++ SchemaValidator.hpp 28 Nov 2003 21:18:32 -0000 1.23 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.23 2003/11/28 21:18:32 knoaman + * Make use of canonical representation in PSVIElement + * * Revision 1.22 2003/11/27 22:52:37 knoaman * PSVIElement implementation * @@ -272,6 +275,7 @@ DatatypeValidator *getMostRecentAttrValidator() const; bool getErrorOccurred() const; bool getIsElemSpecified() const; + const XMLCh* getNormalizedValue() const; private: // ----------------------------------------------------------------------- @@ -532,6 +536,11 @@ inline bool SchemaValidator::getIsElemSpecified() const { return fElemIsSpecified; +} + +inline const XMLCh* SchemaValidator::getNormalizedValue() const +{ + return fDatatypeBuffer.getRawBuffer(); } XERCES_CPP_NAMESPACE_END
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]