[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xerces-cvs
Subject:    cvs commit: xml-xerces/c/src/xercesc/internal XSerializeEngine.hpp XSerializeEngine.cpp
From:       peiyongz () apache ! org
Date:       2004-10-26 14:49:27
Message-ID: 20041026144927.95381.qmail () minotaur ! apache ! org
[Download RAW message or body]

peiyongz    2004/10/26 07:49:27

  Modified:    c/src/xercesc/internal XSerializeEngine.hpp
                        XSerializeEngine.cpp
  Log:
  Reset buffer/Provide position info for debugging
  
  Revision  Changes    Path
  1.19      +51 -1     xml-xerces/c/src/xercesc/internal/XSerializeEngine.hpp
  
  Index: XSerializeEngine.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSerializeEngine.hpp,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- XSerializeEngine.hpp	8 Sep 2004 13:56:14 -0000	1.18
  +++ XSerializeEngine.hpp	26 Oct 2004 14:49:27 -0000	1.19
  @@ -16,6 +16,9 @@
   
   /*
    * $Log$
  + * Revision 1.19  2004/10/26 14:49:27  peiyongz
  + * Reset buffer/Provide position info for debugging
  + *
    * Revision 1.18  2004/09/08 13:56:14  peiyongz
    * Apache License Version 2.0
    *
  @@ -595,6 +598,23 @@
              XSerializeEngine& operator>>(double&);
              XSerializeEngine& operator>>(bool&);
   
  +    /***
  +      *
  +      *  Getters
  +      *
  +      ***/
  +    inline 
  +    const unsigned long   getBufSize()    const; 
  +
  +    inline 
  +    const unsigned long   getBufCur()     const; 
  +
  +    inline 
  +    const unsigned long   getBufCurAccumulated()     const; 
  +
  +    inline 
  +    const unsigned long   getBufCount()     const; 
  +
   private:
       // -----------------------------------------------------------------------
       //  Unimplemented constructors and operators
  @@ -634,6 +654,8 @@
   
              void           pumpCount();
   
  +    inline void           resetBuffer();
  +
       /***
         *   
         *    Helper
  @@ -710,6 +732,8 @@
       BinInputStream*  const                 fInputStream;
       BinOutputStream* const                 fOutputStream;
   
  +    unsigned long                          fBufCount;
  +
       //buffer
       const unsigned long                    fBufSize;
   	XMLByte* const                         fBufStart;
  @@ -717,6 +741,8 @@
       XMLByte*                               fBufCur;
       XMLByte*                               fBufLoadMax; 
   
  +
  +
       /***
        *   Map for storing object
        *
  @@ -838,6 +864,30 @@
       int  dummyBufferLen;
       int  dummyDataLen;
       readString(toRead, dummyBufferLen, dummyDataLen);
  +}
  +
  +inline 
  +const unsigned long XSerializeEngine::getBufSize() const
  +{
  +    return fBufSize;
  +}
  +
  +inline 
  +const unsigned long XSerializeEngine::getBufCur() const
  +{
  +    return (fBufCur-fBufStart);
  +}
  +
  +inline 
  +const unsigned long XSerializeEngine::getBufCurAccumulated() const
  +{
  +    return (fBufCount - isStoring() ? 0: 1)* fBufSize + (fBufCur-fBufStart);
  +}
  +
  +inline 
  +const unsigned long XSerializeEngine::getBufCount() const
  +{
  +    return fBufCount;
   }
   
   /***
  
  
  
  1.20      +106 -88   xml-xerces/c/src/xercesc/internal/XSerializeEngine.cpp
  
  Index: XSerializeEngine.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/internal/XSerializeEngine.cpp,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XSerializeEngine.cpp	8 Sep 2004 13:56:14 -0000	1.19
  +++ XSerializeEngine.cpp	26 Oct 2004 14:49:27 -0000	1.20
  @@ -17,6 +17,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.20  2004/10/26 14:49:27  peiyongz
  + * Reset buffer/Provide position info for debugging
  + *
    * Revision 1.19  2004/09/08 13:56:14  peiyongz
    * Apache License Version 2.0
    *
  @@ -155,6 +158,7 @@
   ,fGrammarPool(gramPool)
   ,fInputStream(inStream)
   ,fOutputStream(0)
  +,fBufCount(0)
   ,fBufSize(bufSize)
   ,fBufStart( (XMLByte*) gramPool->getMemoryManager()->allocate(bufSize))
   ,fBufEnd(0)
  @@ -178,6 +182,7 @@
   ,fGrammarPool(gramPool)
   ,fInputStream(0)
   ,fOutputStream(outStream)
  +,fBufCount(0)
   ,fBufSize(bufSize)
   ,fBufStart((XMLByte*) gramPool->getMemoryManager()->allocate(bufSize))
   ,fBufEnd(fBufStart+bufSize)
  @@ -187,6 +192,8 @@
   ,fLoadPool(0)
   ,fObjectCount(0)
   {
  +    resetBuffer();
  +
       //initialize store pool
       fStorePool->put(0, new (gramPool->getMemoryManager()) XSerializedObjectId(fgNullObjectTag));
   
  @@ -202,6 +209,7 @@
   ,fGrammarPool(0)
   ,fInputStream(inStream)
   ,fOutputStream(0)
  +,fBufCount(0)
   ,fBufSize(bufSize)
   ,fBufStart( (XMLByte*) manager->allocate(bufSize))
   ,fBufEnd(0)
  @@ -225,6 +233,7 @@
   ,fGrammarPool(0)
   ,fInputStream(0)
   ,fOutputStream(outStream)
  +,fBufCount(0)
   ,fBufSize(bufSize)
   ,fBufStart((XMLByte*) manager->allocate(bufSize))
   ,fBufEnd(fBufStart+bufSize)
  @@ -644,8 +653,9 @@
   }
   
   // ---------------------------------------------------------------------------
  -//  Insertion
  +//  Insertion & Extraction
   // ---------------------------------------------------------------------------
  +
   XSerializeEngine& XSerializeEngine::operator<<(XMLCh xch)
   { 
       checkAndFlushBuffer(sizeof(XMLCh));
  @@ -654,6 +664,15 @@
       fBufCur += sizeof(XMLCh); 
       return *this; 
   }
  +
  +XSerializeEngine& XSerializeEngine::operator>>(XMLCh& xch)
  +{ 
  +    checkAndFillBuffer(sizeof(XMLCh));
  +
  +    xch = *(XMLCh*)fBufCur; 
  +    fBufCur += sizeof(XMLCh); 
  +    return *this; 
  +}
    
   XSerializeEngine& XSerializeEngine::operator<<(XMLByte by)
   { 
  @@ -664,6 +683,15 @@
       return *this; 
   }
   
  +XSerializeEngine& XSerializeEngine::operator>>(XMLByte& by)
  +{ 
  +    checkAndFillBuffer(sizeof(XMLByte));
  +
  +    by = *(XMLByte*)fBufCur; 
  +    fBufCur += sizeof(XMLByte); 
  +    return *this; 
  +}
  +
   XSerializeEngine& XSerializeEngine::operator<<(bool b)
   { 
       checkAndFlushBuffer(sizeof(bool));
  @@ -673,173 +701,152 @@
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(char ch)
  -{ 
  -    return XSerializeEngine::operator<<((XMLByte)ch); 
  -}
  -
  -XSerializeEngine& XSerializeEngine::operator<<(short sh)
  +XSerializeEngine& XSerializeEngine::operator>>(bool& b)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(short));
  +    checkAndFillBuffer(sizeof(bool));
   
  -    allignBufCur();
  -    *(short*)fBufCur = sh; 
  -    fBufCur += sizeof(short); 
  +    b = *(bool*)fBufCur; 
  +    fBufCur += sizeof(bool); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(int i)
  +XSerializeEngine& XSerializeEngine::operator<<(char ch)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(int));
  -
  -    allignBufCur();
  -    *(int*)fBufCur = i; 
  -    fBufCur += sizeof(int); 
  -    return *this;     
  +    return XSerializeEngine::operator<<((XMLByte)ch); 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(unsigned int ui)
  +XSerializeEngine& XSerializeEngine::operator>>(char& ch)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(unsigned int));
  -
  -    allignBufCur();
  -    *(unsigned int*)fBufCur = ui; 
  -    fBufCur += sizeof(unsigned int); 
  -    return *this; 
  +    return XSerializeEngine::operator>>((XMLByte&)ch); 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(long l)
  +XSerializeEngine& XSerializeEngine::operator<<(short sh)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(long));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(short));
   
       allignBufCur();
  -    *(long*)fBufCur = l; 
  -    fBufCur += sizeof(long); 
  +    *(short*)fBufCur = sh; 
  +    fBufCur += sizeof(short); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(unsigned long ul)
  +XSerializeEngine& XSerializeEngine::operator>>(short& sh)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(unsigned long));
  +    checkAndFillBuffer(allignAdjust()+sizeof(short));
   
       allignBufCur();
  -    *(unsigned long*)fBufCur = ul; 
  -    fBufCur += sizeof(unsigned long); 
  +    sh = *(short*)fBufCur; 
  +    fBufCur += sizeof(short); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(float f)
  +XSerializeEngine& XSerializeEngine::operator<<(int i)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(float));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(int));
   
       allignBufCur();
  -    *(float*)fBufCur = *(float*)&f; 
  -    fBufCur += sizeof(float); 
  -    return *this;
  +    *(int*)fBufCur = i; 
  +    fBufCur += sizeof(int); 
  +    return *this;     
   }
   
  -XSerializeEngine& XSerializeEngine::operator<<(double d)
  +XSerializeEngine& XSerializeEngine::operator>>(int& i)
   { 
  -    checkAndFlushBuffer(allignAdjust()+sizeof(double));
  +    checkAndFillBuffer(allignAdjust()+sizeof(int));
   
       allignBufCur();
  -    *(double*)fBufCur = *(double*)&d; 
  -    fBufCur += sizeof(double); 
  +    i = *(int*)fBufCur; 
  +    fBufCur += sizeof(int); 
       return *this; 
   }
   
  -// ---------------------------------------------------------------------------
  -//  Extraction
  -// ---------------------------------------------------------------------------
  -XSerializeEngine& XSerializeEngine::operator>>(XMLCh& xch)
  +XSerializeEngine& XSerializeEngine::operator<<(unsigned int ui)
   { 
  -    checkAndFillBuffer(sizeof(XMLCh));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(unsigned int));
   
  -    xch = *(XMLCh*)fBufCur; 
  -    fBufCur += sizeof(XMLCh); 
  +    allignBufCur();
  +    *(unsigned int*)fBufCur = ui; 
  +    fBufCur += sizeof(unsigned int); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(XMLByte& by)
  +XSerializeEngine& XSerializeEngine::operator>>(unsigned int& ui)
   { 
  -    checkAndFillBuffer(sizeof(XMLByte));
  +    checkAndFillBuffer(allignAdjust()+sizeof(unsigned int));
   
  -    by = *(XMLByte*)fBufCur; 
  -    fBufCur += sizeof(XMLByte); 
  +    allignBufCur();
  +    ui = *(unsigned int*)fBufCur; 
  +    fBufCur += sizeof(unsigned int); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(bool& b)
  +XSerializeEngine& XSerializeEngine::operator<<(long l)
   { 
  -    checkAndFillBuffer(sizeof(bool));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(long));
   
  -    b = *(bool*)fBufCur; 
  -    fBufCur += sizeof(bool); 
  +    allignBufCur();
  +    *(long*)fBufCur = l; 
  +    fBufCur += sizeof(long); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(char& ch)
  -{ 
  -    return XSerializeEngine::operator>>((XMLByte&)ch); 
  -}
  -
  -XSerializeEngine& XSerializeEngine::operator>>(short& sh)
  +XSerializeEngine& XSerializeEngine::operator>>(long& l)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(short));
  +    checkAndFillBuffer(allignAdjust()+sizeof(long));
   
       allignBufCur();
  -    sh = *(short*)fBufCur; 
  -    fBufCur += sizeof(short); 
  +    l = *(long*)fBufCur; 
  +    fBufCur += sizeof(long); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(int& i)
  +XSerializeEngine& XSerializeEngine::operator<<(unsigned long ul)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(int));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(unsigned long));
   
       allignBufCur();
  -    i = *(int*)fBufCur; 
  -    fBufCur += sizeof(int); 
  +    *(unsigned long*)fBufCur = ul; 
  +    fBufCur += sizeof(unsigned long); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(unsigned int& ui)
  +XSerializeEngine& XSerializeEngine::operator>>(unsigned long& ul)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(unsigned int));
  +    checkAndFillBuffer(allignAdjust()+sizeof(unsigned long));
   
       allignBufCur();
  -    ui = *(unsigned int*)fBufCur; 
  -    fBufCur += sizeof(unsigned int); 
  +    ul = *(unsigned long*)fBufCur; 
  +    fBufCur += sizeof(unsigned long); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(long& l)
  +XSerializeEngine& XSerializeEngine::operator<<(float f)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(long));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(float));
   
       allignBufCur();
  -    l = *(long*)fBufCur; 
  -    fBufCur += sizeof(long); 
  -    return *this; 
  +    *(float*)fBufCur = *(float*)&f; 
  +    fBufCur += sizeof(float); 
  +    return *this;
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(unsigned long& ul)
  +XSerializeEngine& XSerializeEngine::operator>>(float& f)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(unsigned long));
  +    checkAndFillBuffer(allignAdjust()+sizeof(float));
   
       allignBufCur();
  -    ul = *(unsigned long*)fBufCur; 
  -    fBufCur += sizeof(unsigned long); 
  +    *(float*)&f = *(float*)fBufCur; 
  +    fBufCur += sizeof(float); 
       return *this; 
   }
   
  -XSerializeEngine& XSerializeEngine::operator>>(float& f)
  +XSerializeEngine& XSerializeEngine::operator<<(double d)
   { 
  -    checkAndFillBuffer(allignAdjust()+sizeof(float));
  +    checkAndFlushBuffer(allignAdjust()+sizeof(double));
   
       allignBufCur();
  -    *(float*)&f = *(float*)fBufCur; 
  -    fBufCur += sizeof(float); 
  +    *(double*)fBufCur = *(double*)&d; 
  +    fBufCur += sizeof(double); 
       return *this; 
   }
   
  @@ -937,6 +944,8 @@
       ensureLoading();
       ensureLoadBuffer();
    
  +    resetBuffer();
  +
       int bytesRead = fInputStream->readBytes(fBufStart, fBufSize);
   
       /***
  @@ -960,6 +969,7 @@
   
       ensureLoadBuffer();
   
  +    fBufCount++;
   }
   
   /***
  @@ -976,7 +986,10 @@
       fOutputStream->writeBytes(fBufStart, fBufSize);
       fBufCur = fBufStart;
   
  +    resetBuffer();
       ensureStoreBuffer();
  +
  +    fBufCount++;
   }
   
   inline void XSerializeEngine::checkAndFlushBuffer(int bytesNeedToWrite)
  @@ -1047,6 +1060,11 @@
                      , XMLExcepts::XSer_Inv_Buffer_Len
                      )
   
  +}
  +
  +inline void XSerializeEngine::resetBuffer()
  +{
  +    memset(fBufStart, 0, fBufSize * sizeof(XMLByte));
   }
   
   // ---------------------------------------------------------------------------
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic