[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