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]

Reply via email to