peiyongz 2003/03/10 12:55:59 Modified: c/src/xercesc/util XMLNumber.hpp XMLFloat.cpp XMLDouble.cpp XMLDateTime.hpp XMLAbstractDoubleFloat.hpp XMLAbstractDoubleFloat.cpp Log: Schema Errata E2-40 double/float Revision Changes Path 1.5 +12 -1 xml-xerces/c/src/xercesc/util/XMLNumber.hpp Index: XMLNumber.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLNumber.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- XMLNumber.hpp 2 Feb 2003 23:54:43 -0000 1.4 +++ XMLNumber.hpp 10 Mar 2003 20:55:58 -0000 1.5 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.5 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.4 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -87,6 +90,14 @@ class XMLUTIL_EXPORT XMLNumber { public: + + enum + { + LESS_THAN = -1, + EQUAL = 0, + GREATER_THAN = 1, + INDETERMINATE = 2 + }; virtual ~XMLNumber(); 1.9 +4 -6 xml-xerces/c/src/xercesc/util/XMLFloat.cpp Index: XMLFloat.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLFloat.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- XMLFloat.cpp 2 Feb 2003 23:54:43 -0000 1.8 +++ XMLFloat.cpp 10 Mar 2003 20:55:58 -0000 1.9 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.9 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.8 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -172,7 +175,6 @@ { if (fValue > (-1)*DBL_MIN) { - fType = NegZero; fDataConverted = true; fValue = 0; } @@ -186,7 +188,6 @@ { if (fValue < DBL_MIN ) { - fType = PosZero; fDataConverted = true; fValue = 0; } @@ -198,7 +199,6 @@ } else { - fType = (getSign() == 1) ? PosZero : NegZero; fDataConverted = true; } } @@ -214,13 +214,11 @@ } else if (fValue > (-1)*FLT_MIN && fValue < 0) { - fType = NegZero; fDataConverted = true; fValue = 0; } else if (fValue > 0 && fValue < FLT_MIN ) { - fType = PosZero; fDataConverted = true; fValue = 0; } 1.8 +4 -4 xml-xerces/c/src/xercesc/util/XMLDouble.cpp Index: XMLDouble.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLDouble.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLDouble.cpp 2 Feb 2003 23:54:43 -0000 1.7 +++ XMLDouble.cpp 10 Mar 2003 20:55:58 -0000 1.8 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.8 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.7 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -177,7 +180,6 @@ { if (fValue > (-1)*DBL_MIN) { - fType = NegZero; fDataConverted = true; fValue = 0; } @@ -191,7 +193,6 @@ { if (fValue < DBL_MIN ) { - fType = PosZero; fDataConverted = true; fValue = 0; } @@ -203,7 +204,6 @@ } else { - fType = (getSign() == 1) ? PosZero : NegZero; fDataConverted = true; } 1.5 +4 -10 xml-xerces/c/src/xercesc/util/XMLDateTime.hpp Index: XMLDateTime.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLDateTime.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- XMLDateTime.hpp 2 Feb 2003 23:54:43 -0000 1.4 +++ XMLDateTime.hpp 10 Mar 2003 20:55:58 -0000 1.5 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.5 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.4 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -97,15 +100,6 @@ class XMLUTIL_EXPORT XMLDateTime : public XMLNumber { public: - - // to be moved to XMLNumber - enum - { - LESS_THAN = -1, - EQUAL = 0, - GREATER_THAN = 1, - INDETERMINATE = 2 - }; enum valueIndex { 1.9 +4 -3 xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.hpp Index: XMLAbstractDoubleFloat.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.hpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- XMLAbstractDoubleFloat.hpp 2 Feb 2003 23:54:43 -0000 1.8 +++ XMLAbstractDoubleFloat.hpp 10 Mar 2003 20:55:58 -0000 1.9 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.9 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.8 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -140,8 +143,6 @@ enum LiteralType { NegINF, - NegZero, - PosZero, PosINF, NaN, SpecialTypeNum, 1.10 +30 -30 xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.cpp Index: XMLAbstractDoubleFloat.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLAbstractDoubleFloat.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XMLAbstractDoubleFloat.cpp 2 Feb 2003 23:54:43 -0000 1.9 +++ XMLAbstractDoubleFloat.cpp 10 Mar 2003 20:55:58 -0000 1.10 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.10 2003/03/10 20:55:58 peiyongz + * Schema Errata E2-40 double/float + * * Revision 1.9 2003/02/02 23:54:43 peiyongz * getFormattedString() added to return original and converted value. * @@ -148,16 +151,6 @@ fType = NegINF; fSign = -1; } - else if (XMLString::equals(tmpStrValue, XMLUni::fgNegZeroString) ) - { - fType = NegZero; - fSign = -1; - } - else if (XMLString::equals(tmpStrValue, XMLUni::fgPosZeroString) ) - { - fType = PosZero; - fSign = 1; - } else if (XMLString::equals(tmpStrValue, XMLUni::fgPosINFString) ) { fType = PosINF; @@ -228,12 +221,6 @@ case NegINF: XMLString::catString(fFormattedString, XMLUni::fgNegINFString); break; - case NegZero: - XMLString::catString(fFormattedString, XMLUni::fgNegZeroString); - break; - case PosZero: - XMLString::catString(fFormattedString, XMLUni::fgPosZeroString); - break; case PosINF: XMLString::catString(fFormattedString, XMLUni::fgPosINFString); break; @@ -265,23 +252,41 @@ (!rValue->isSpecialValue()) ) { if (lValue->fValue == rValue->fValue) - return 0; + return EQUAL; else - return (lValue->fValue > rValue->fValue) ? 1: -1; + return (lValue->fValue > rValue->fValue) ? GREATER_THAN : LESS_THAN; } // // case#2: lValue special // rValue special // + // Schema Errata E2-40 + // + // Positive Infinity is greater than all other non-NAN value. + // Nan equals itself but is not comparable with (neither greater than nor less than) + // any other value in the value space + // Negative Infinity is less than all other non-NAN values. + // else if ((lValue->isSpecialValue()) && (rValue->isSpecialValue()) ) { if (lValue->fType == rValue->fType) - return 0; + return EQUAL; else - return (lValue->fType > rValue->fType) ? 1 : -1; + { + if ((lValue->fType == NaN) || + (rValue->fType == NaN) ) + { + return INDETERMINATE; + } + else + { + return (lValue->fType > rValue->fType) ? GREATER_THAN : LESS_THAN; + } + } + } // // case#3: lValue special @@ -311,17 +316,12 @@ switch (specialValue->fType) { case NegINF: - return -1; - - case NegZero: - case PosZero: - return (normalValue->getSign() > 0 ? -1 : 1); - + return LESS_THAN; case PosINF: - return 1; - + return GREATER_THAN; case NaN: - return 1; + // NaN is not comparable to any other value + return INDETERMINATE; default: XMLString::binToText(specialValue->fType, value1, 16, 10);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]