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]