peiyongz 2003/09/23 11:16:07 Modified: c/src/xercesc/util XMLAbstractDoubleFloat.cpp XMLAbstractDoubleFloat.hpp XMLBigDecimal.cpp XMLBigDecimal.hpp XMLDateTime.cpp XMLDateTime.hpp XMLDouble.cpp XMLDouble.hpp XMLFloat.cpp XMLFloat.hpp XMLNumber.cpp XMLNumber.hpp Log: Inplementation for Serialization/Deserialization Revision Changes Path 1.14 +53 -1 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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- XMLAbstractDoubleFloat.cpp 16 May 2003 06:01:52 -0000 1.13 +++ XMLAbstractDoubleFloat.cpp 23 Sep 2003 18:16:07 -0000 1.14 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.14 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.13 2003/05/16 06:01:52 knoaman * Partial implementation of the configurable memory manager. * @@ -423,5 +426,54 @@ return; } + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_NOCREATE(XMLAbstractDoubleFloat) + +void XMLAbstractDoubleFloat::serialize(XSerializeEngine& serEng) +{ + //REVISIT: may not need to call base since it does nothing + XMLNumber::serialize(serEng); + + if (serEng.isStoring()) + { + serEng << fValue; + serEng << fType; + serEng << fDataConverted; + serEng << fSign; + + int rawDataLen = XMLString::stringLen(fRawData); + serEng << rawDataLen; + serEng.write(fRawData, rawDataLen); + + // Do not serialize fFormattedString + + } + else + { + serEng >> fValue; + + int type = 0; + serEng >> type; + fType = (LiteralType) type; + + serEng >> fDataConverted; + serEng >> fSign; + + int rawDataLen = 0; + serEng >> rawDataLen; + fRawData = (XMLCh*) fMemoryManager->allocate(rawDataLen+1); + serEng.read(fRawData, rawDataLen); + fRawData[rawDataLen] = 0; + + // Set it to 0 force it to re-format if needed + fFormattedString = 0; + + } + +} XERCES_CPP_NAMESPACE_END 1.14 +9 -1 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.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- XMLAbstractDoubleFloat.hpp 18 May 2003 14:02:05 -0000 1.13 +++ XMLAbstractDoubleFloat.hpp 23 Sep 2003 18:16:07 -0000 1.14 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.14 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.13 2003/05/18 14:02:05 knoaman * Memory manager implementation: pass per instance manager. * @@ -178,6 +181,11 @@ virtual int getSign() const; MemoryManager* getMemoryManager() const; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAbstractDoubleFloat) protected: 1.11 +60 -0 xml-xerces/c/src/xercesc/util/XMLBigDecimal.cpp Index: XMLBigDecimal.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLBigDecimal.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- XMLBigDecimal.cpp 14 Aug 2003 02:57:27 -0000 1.10 +++ XMLBigDecimal.cpp 23 Sep 2003 18:16:07 -0000 1.11 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.11 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.10 2003/08/14 02:57:27 knoaman * Code refactoring to improve performance of validation. * @@ -352,6 +355,63 @@ return -1 * lSign; else return 0; + } + +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XMLBigDecimal) + +XMLBigDecimal::XMLBigDecimal(MemoryManager* const manager) +: fSign(0) +, fTotalDigits(0) +, fScale(0) +, fRawDataLen(0) +, fRawData(0) +, fIntVal(0) +, fMemoryManager(manager) +{ +} + +void XMLBigDecimal::serialize(XSerializeEngine& serEng) +{ + //REVISIT: may not need to call base since it does nothing + XMLNumber::serialize(serEng); + + if (serEng.isStoring()) + { + serEng<<fSign; + serEng<<fTotalDigits; + serEng<<fScale; + serEng<<fRawDataLen; + + serEng.write(fRawData, fRawDataLen); + + int intValLen = XMLString::stringLen(fIntVal); + serEng<<intValLen; + + serEng.write(fIntVal, intValLen); + + } + else + { + serEng>>fSign; + serEng>>fTotalDigits; + serEng>>fScale; + serEng>>fRawDataLen; + + fRawData = (XMLCh*) fMemoryManager->allocate(fRawDataLen+1); + serEng.read(fRawData, fRawDataLen); + fRawData[fRawDataLen] = 0; + + int intValLen = 0; + serEng>>intValLen; + fIntVal = (XMLCh*) fMemoryManager->allocate(intValLen+1); + serEng.read(fIntVal, intValLen); + fIntVal[intValLen] = 0; } } 1.12 +8 -1 xml-xerces/c/src/xercesc/util/XMLBigDecimal.hpp Index: XMLBigDecimal.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLBigDecimal.hpp,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- XMLBigDecimal.hpp 14 Aug 2003 02:57:27 -0000 1.11 +++ XMLBigDecimal.hpp 23 Sep 2003 18:16:07 -0000 1.12 @@ -128,6 +128,13 @@ */ void setDecimalValue(const XMLCh* const strValue); + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLBigDecimal) + + XMLBigDecimal(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); + private: void parseBigDecimal( const XMLCh* const strValue , unsigned int strValueLen); 1.14 +61 -1 xml-xerces/c/src/xercesc/util/XMLDateTime.cpp Index: XMLDateTime.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLDateTime.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- XMLDateTime.cpp 14 Aug 2003 02:57:27 -0000 1.13 +++ XMLDateTime.cpp 23 Sep 2003 18:16:07 -0000 1.14 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.14 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.13 2003/08/14 02:57:27 knoaman * Code refactoring to improve performance of validation. * @@ -1429,6 +1432,63 @@ bool negative = (fBuffer[0] == chDash); int yearVal = parseInt((negative ? 1 : 0), end); return ( negative ? (-1) * yearVal : yearVal ); +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XMLDateTime) + +void XMLDateTime::serialize(XSerializeEngine& serEng) +{ + //REVISIT: may not need to call base since it does nothing + XMLNumber::serialize(serEng); + + if (serEng.isStoring()) + { + for (int i = 0; i < TOTAL_SIZE; i++) + { + serEng<<fValue[i]; + } + + for (int i = 0; i < TIMEZONE_ARRAYSIZE; i++) + { + serEng<<fTimeZone[i]; + } + + serEng<<fStart; + serEng<<fEnd; + serEng<<fBufferMaxLen; + + int bufferLen = XMLString::stringLen(fBuffer); + serEng<<bufferLen; + serEng.write(fBuffer, bufferLen); + } + else + { + for (int i = 0; i < TOTAL_SIZE; i++) + { + serEng>>fValue[i]; + } + + for (int i = 0; i < TIMEZONE_ARRAYSIZE; i++) + { + serEng>>fTimeZone[i]; + } + + serEng>>fStart; + serEng>>fEnd; + serEng>>fBufferMaxLen; + + fBuffer = (XMLCh*) fMemoryManager->allocate(fBufferMaxLen+1); + + int bufferLen = 0; + serEng>>bufferLen; + serEng.read(fBuffer, bufferLen); + fBuffer[bufferLen] = 0; + } + } XERCES_CPP_NAMESPACE_END 1.10 +9 -1 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.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- XMLDateTime.hpp 14 Aug 2003 02:57:27 -0000 1.9 +++ XMLDateTime.hpp 23 Sep 2003 18:16:07 -0000 1.10 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.10 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.9 2003/08/14 02:57:27 knoaman * Code refactoring to improve performance of validation. * @@ -204,6 +207,11 @@ static int compareOrder(const XMLDateTime* const , const XMLDateTime* const); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDateTime) private: 1.11 +20 -1 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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- XMLDouble.cpp 16 May 2003 06:01:53 -0000 1.10 +++ XMLDouble.cpp 23 Sep 2003 18:16:07 -0000 1.11 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.11 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.10 2003/05/16 06:01:53 knoaman * Partial implementation of the configurable memory manager. * @@ -216,6 +219,22 @@ } +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XMLDouble) + +XMLDouble::XMLDouble(MemoryManager* const manager) +:XMLAbstractDoubleFloat(manager) +{ +} + +void XMLDouble::serialize(XSerializeEngine& serEng) +{ + XMLAbstractDoubleFloat::serialize(serEng); } XERCES_CPP_NAMESPACE_END 1.6 +11 -1 xml-xerces/c/src/xercesc/util/XMLDouble.hpp Index: XMLDouble.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLDouble.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- XMLDouble.hpp 16 May 2003 06:01:53 -0000 1.5 +++ XMLDouble.hpp 23 Sep 2003 18:16:07 -0000 1.6 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.6 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.5 2003/05/16 06:01:53 knoaman * Partial implementation of the configurable memory manager. * @@ -144,6 +147,13 @@ inline static int compareValues(const XMLDouble* const lValue , const XMLDouble* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDouble) + + XMLDouble(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); protected: 1.12 +20 -1 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.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- XMLFloat.cpp 16 May 2003 06:01:53 -0000 1.11 +++ XMLFloat.cpp 23 Sep 2003 18:16:07 -0000 1.12 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.12 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.11 2003/05/16 06:01:53 knoaman * Partial implementation of the configurable memory manager. * @@ -235,6 +238,22 @@ fDataConverted = true; } } +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(XMLFloat) + +XMLFloat::XMLFloat(MemoryManager* const manager) +:XMLAbstractDoubleFloat(manager) +{ +} + +void XMLFloat::serialize(XSerializeEngine& serEng) +{ + XMLAbstractDoubleFloat::serialize(serEng); } XERCES_CPP_NAMESPACE_END 1.6 +11 -1 xml-xerces/c/src/xercesc/util/XMLFloat.hpp Index: XMLFloat.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLFloat.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- XMLFloat.hpp 16 May 2003 06:01:53 -0000 1.5 +++ XMLFloat.hpp 23 Sep 2003 18:16:07 -0000 1.6 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.6 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.5 2003/05/16 06:01:53 knoaman * Partial implementation of the configurable memory manager. * @@ -138,6 +141,13 @@ inline static int compareValues(const XMLFloat* const lValue , const XMLFloat* const rValue); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLFloat) + + XMLFloat(MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); protected: 1.3 +15 -1 xml-xerces/c/src/xercesc/util/XMLNumber.cpp Index: XMLNumber.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/XMLNumber.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- XMLNumber.cpp 4 Nov 2002 15:22:05 -0000 1.2 +++ XMLNumber.cpp 23 Sep 2003 18:16:07 -0000 1.3 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.3 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.2 2002/11/04 15:22:05 tng * C++ Namespace Support. * @@ -83,5 +86,16 @@ XMLNumber::~XMLNumber() {} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_NOCREATE(XMLNumber) + +void XMLNumber::serialize(XSerializeEngine& serEng) +{ + // this class has no data to serialize/de-serilize +} XERCES_CPP_NAMESPACE_END 1.8 +11 -2 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLNumber.hpp 15 May 2003 19:07:46 -0000 1.7 +++ XMLNumber.hpp 23 Sep 2003 18:16:07 -0000 1.8 @@ -57,6 +57,9 @@ /* * $Id$ * $Log$ + * Revision 1.8 2003/09/23 18:16:07 peiyongz + * Inplementation for Serialization/Deserialization + * * Revision 1.7 2003/05/15 19:07:46 knoaman * Partial implementation of the configurable memory manager. * @@ -89,11 +92,12 @@ #ifndef XMLNUMBER_HPP #define XMLNUMBER_HPP +#include <xercesc/internal/XSerializable.hpp> #include <xercesc/util/XMemory.hpp> XERCES_CPP_NAMESPACE_BEGIN -class XMLUTIL_EXPORT XMLNumber : public XMemory +class XMLUTIL_EXPORT XMLNumber : public XSerializable, public XMemory { public: @@ -144,6 +148,11 @@ * */ virtual int getSign() const = 0; + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNumber) protected:
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]