peiyongz 2003/09/25 08:22:34 Modified: c/src/xercesc/util QName.cpp QName.hpp Log: Implementation of Serialization Revision Changes Path 1.9 +57 -0 xml-xerces/c/src/xercesc/util/QName.cpp Index: QName.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/QName.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- QName.cpp 16 May 2003 06:01:52 -0000 1.8 +++ QName.cpp 25 Sep 2003 15:22:34 -0000 1.9 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.9 2003/09/25 15:22:34 peiyongz + * Implementation of Serialization + * * Revision 1.8 2003/05/16 06:01:52 knoaman * Partial implementation of the configurable memory manager. * @@ -485,6 +488,60 @@ fMemoryManager->deallocate(fPrefix); //delete [] fPrefix; fMemoryManager->deallocate(fRawName); //delete [] fRawName; fLocalPart = fPrefix = fRawName = 0; +} + +/*** + * Support for Serialization/De-serialization + ***/ + +IMPL_XSERIALIZABLE_TOCREATE(QName) + +void QName::serialize(XSerializeEngine& serEng) +{ + + if (serEng.isStoring()) + { + int bufferLen = 0; + + //note: buffer size is different from actual string length + serEng<<fPrefixBufSz; + bufferLen = XMLString::stringLen(fPrefix); + serEng<<bufferLen; + serEng.write(fPrefix, bufferLen); + + serEng<<fLocalPartBufSz; + bufferLen = XMLString::stringLen(fLocalPart); + serEng<<bufferLen; + serEng.write(fLocalPart, bufferLen); + + //do not serialize rawName + + serEng<<fURIId; + } + else + { + int bufferLen = 0; + + serEng>>fPrefixBufSz; + fPrefix = (XMLCh*) fMemoryManager->allocate((fPrefixBufSz+1) * sizeof(XMLCh)); + serEng>>bufferLen; + serEng.read(fPrefix, bufferLen); + fPrefix[bufferLen] = 0; + + serEng>>fLocalPartBufSz; + fLocalPart = (XMLCh*) fMemoryManager->allocate((fLocalPartBufSz+1) * sizeof(XMLCh)); + serEng>>bufferLen; + serEng.read(fLocalPart, bufferLen); + fLocalPart[bufferLen] = 0; + + //force raw name rebuilt + fRawNameBufSz = 0; + fRawName = 0; + + serEng>>fURIId; + + } + } XERCES_CPP_NAMESPACE_END 1.9 +11 -1 xml-xerces/c/src/xercesc/util/QName.hpp Index: QName.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/util/QName.hpp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- QName.hpp 16 May 2003 21:36:59 -0000 1.8 +++ QName.hpp 25 Sep 2003 15:22:34 -0000 1.9 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.9 2003/09/25 15:22:34 peiyongz + * Implementation of Serialization + * * Revision 1.8 2003/05/16 21:36:59 knoaman * Memory manager implementation: Modify constructors to pass in the memory manager. * @@ -117,9 +120,11 @@ #include <xercesc/util/XMemory.hpp> #include <xercesc/util/PlatformUtils.hpp> +#include <xercesc/internal/XSerializable.hpp> + XERCES_CPP_NAMESPACE_BEGIN -class XMLUTIL_EXPORT QName : public XMemory +class XMLUTIL_EXPORT QName : public XSerializable, public XMemory { public : // ----------------------------------------------------------------------- @@ -199,6 +204,11 @@ // Misc // ----------------------------------------------------------------------- void cleanUp(); + + /*** + * Support for Serialization/De-serialization + ***/ + DECL_XSERIALIZABLE(QName) private :
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]