diff --git a/src/xercesc/util/XMLAbstractDoubleFloat.cpp b/src/xercesc/util/XMLAbstractDoubleFloat.cpp index 10f51a6bd955b07cf724f1857008ec6155c0f3b5..b1000f24cbeb08c3f6335b495adf4b87e8550716 100644 --- a/src/xercesc/util/XMLAbstractDoubleFloat.cpp +++ b/src/xercesc/util/XMLAbstractDoubleFloat.cpp @@ -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. * @@ -424,4 +427,53 @@ void XMLAbstractDoubleFloat::normalizeZero(XMLCh* const inData) 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 diff --git a/src/xercesc/util/XMLAbstractDoubleFloat.hpp b/src/xercesc/util/XMLAbstractDoubleFloat.hpp index 248f32d018021b44e44564fbf2b740272430c7d3..6f3280d02025ccb5f37533c0152880967570f0b0 100644 --- a/src/xercesc/util/XMLAbstractDoubleFloat.hpp +++ b/src/xercesc/util/XMLAbstractDoubleFloat.hpp @@ -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. * @@ -179,6 +182,11 @@ public: MemoryManager* getMemoryManager() const; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLAbstractDoubleFloat) + protected: // diff --git a/src/xercesc/util/XMLBigDecimal.cpp b/src/xercesc/util/XMLBigDecimal.cpp index aa8969657e53cd7d27b34def4a5d061cd75287a1..888a44ad31f334f89e64bffce7d85de6fc8d6eab 100644 --- a/src/xercesc/util/XMLBigDecimal.cpp +++ b/src/xercesc/util/XMLBigDecimal.cpp @@ -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. * @@ -356,5 +359,62 @@ int XMLBigDecimal::toCompare(const XMLBigDecimal& other) const } +/*** + * 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; + } + +} + XERCES_CPP_NAMESPACE_END diff --git a/src/xercesc/util/XMLBigDecimal.hpp b/src/xercesc/util/XMLBigDecimal.hpp index 8faccd319239776753336d72d6ce2eb50fc2fd8e..16acd31b1b63580fb148e0328d4737ffc1dcf63d 100644 --- a/src/xercesc/util/XMLBigDecimal.hpp +++ b/src/xercesc/util/XMLBigDecimal.hpp @@ -128,6 +128,13 @@ public: */ 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); diff --git a/src/xercesc/util/XMLDateTime.cpp b/src/xercesc/util/XMLDateTime.cpp index 55e43b2159a22f8cdb1354be38adf3733e12206b..d73377edb2682521157b5854e94102c4df3abff4 100644 --- a/src/xercesc/util/XMLDateTime.cpp +++ b/src/xercesc/util/XMLDateTime.cpp @@ -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. * @@ -1431,4 +1434,61 @@ int XMLDateTime::parseIntYear(const int end) const 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 diff --git a/src/xercesc/util/XMLDateTime.hpp b/src/xercesc/util/XMLDateTime.hpp index a58bdeb27354e5c6306f7210b552d708c48c1d93..969829669d4aa2906a384493639e41c99d9e7934 100644 --- a/src/xercesc/util/XMLDateTime.hpp +++ b/src/xercesc/util/XMLDateTime.hpp @@ -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. * @@ -205,6 +208,11 @@ public: static int compareOrder(const XMLDateTime* const , const XMLDateTime* const); + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLDateTime) + private: // ----------------------------------------------------------------------- diff --git a/src/xercesc/util/XMLDouble.cpp b/src/xercesc/util/XMLDouble.cpp index e3b482099f7350bfd358b67021e86e09209baaeb..8496ffb66aa2a4609125b1e39c46272017fc36d5 100644 --- a/src/xercesc/util/XMLDouble.cpp +++ b/src/xercesc/util/XMLDouble.cpp @@ -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. * @@ -218,4 +221,20 @@ void XMLDouble::checkBoundary(const XMLCh* const strValue) } +/*** + * 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 diff --git a/src/xercesc/util/XMLDouble.hpp b/src/xercesc/util/XMLDouble.hpp index 9576c59928231c47d2d0a22099c9ef7403631bb0..8b67fdcaa45e6d7b9c63e55bee82a9ac3bef482f 100644 --- a/src/xercesc/util/XMLDouble.hpp +++ b/src/xercesc/util/XMLDouble.hpp @@ -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. * @@ -145,6 +148,13 @@ public: 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: void checkBoundary(const XMLCh* const strValue); diff --git a/src/xercesc/util/XMLFloat.cpp b/src/xercesc/util/XMLFloat.cpp index 2b9f2507281158a5cadf9ce800784561f32b7da7..771da61c09bcfa31c88f3a989d04834b960a8f32 100644 --- a/src/xercesc/util/XMLFloat.cpp +++ b/src/xercesc/util/XMLFloat.cpp @@ -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. * @@ -237,4 +240,20 @@ void XMLFloat::checkBoundary(const XMLCh* const strValue) } } +/*** + * 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 diff --git a/src/xercesc/util/XMLFloat.hpp b/src/xercesc/util/XMLFloat.hpp index d77d49ea3b744f8385fa9242df109566685190a1..ceb3b7d21da7de22bf53343c4901f7f7688ee625 100644 --- a/src/xercesc/util/XMLFloat.hpp +++ b/src/xercesc/util/XMLFloat.hpp @@ -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. * @@ -139,6 +142,13 @@ public: 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: void checkBoundary(const XMLCh* const strValue); diff --git a/src/xercesc/util/XMLNumber.cpp b/src/xercesc/util/XMLNumber.cpp index 29a70c8b713e5fe61fbf8d80174a2f5b871c3f3a..38d6c10cc52dee0bbdd827a8c90e38b6571bbd59 100644 --- a/src/xercesc/util/XMLNumber.cpp +++ b/src/xercesc/util/XMLNumber.cpp @@ -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. * @@ -84,4 +87,15 @@ XMLNumber::XMLNumber() 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 diff --git a/src/xercesc/util/XMLNumber.hpp b/src/xercesc/util/XMLNumber.hpp index 87a23914180f003d7b6e652370052f1c47d60d11..00b955187357b678a5a67e0f5b2dac353804349e 100644 --- a/src/xercesc/util/XMLNumber.hpp +++ b/src/xercesc/util/XMLNumber.hpp @@ -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: @@ -145,6 +149,11 @@ public: */ virtual int getSign() const = 0; + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(XMLNumber) + protected: XMLNumber();