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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]