summaryrefslogtreecommitdiff
path: root/cppe/include/IceE/BasicStream.h
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-01-27 20:00:22 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-01-27 20:00:22 +0000
commit6c70e4b49ea2e91f4c9ccc3ec0e69d08691d2011 (patch)
tree891f4ae549dedbbe682408bf34183e08ddf49ca6 /cppe/include/IceE/BasicStream.h
parentAdded EVC++ project files for custom (diff)
downloadice-6c70e4b49ea2e91f4c9ccc3ec0e69d08691d2011.tar.bz2
ice-6c70e4b49ea2e91f4c9ccc3ec0e69d08691d2011.tar.xz
ice-6c70e4b49ea2e91f4c9ccc3ec0e69d08691d2011.zip
Use size constructor and swap instead of resize
Diffstat (limited to 'cppe/include/IceE/BasicStream.h')
-rw-r--r--cppe/include/IceE/BasicStream.h66
1 files changed, 44 insertions, 22 deletions
diff --git a/cppe/include/IceE/BasicStream.h b/cppe/include/IceE/BasicStream.h
index e1973bcc75d..43ebbd4f834 100644
--- a/cppe/include/IceE/BasicStream.h
+++ b/cppe/include/IceE/BasicStream.h
@@ -284,16 +284,23 @@ readStringSequence(::IceInternal::BasicStream* __is, T& seq)
{
::Ice::Int size;
__is->readSize(size);
- __is->startSeq(size, 1);
- seq.resize(size);
- typedef typename T::iterator I;
- for(I p = seq.begin(); p != seq.end(); ++p)
+ if(size > 0)
{
- __is->read(*p);
- __is->checkSeq();
- __is->endElement();
+ __is->startSeq(size, 1);
+ T(size).swap(seq);
+ typedef typename T::iterator I;
+ for(I p = seq.begin(); p != seq.end(); ++p)
+ {
+ __is->read(*p);
+ __is->checkSeq();
+ __is->endElement();
+ }
+ __is->endSeq(size);
+ }
+ else
+ {
+ seq.clear();
}
- __is->endSeq(size);
}
template<typename T> void
@@ -301,16 +308,23 @@ readVariableSequence(::IceInternal::BasicStream* __is, T& seq, int minElemSize)
{
::Ice::Int size;
__is->readSize(size);
- __is->startSeq(size, minElemSize);
- seq.resize(size);
- typedef typename T::iterator I;
- for(I p = seq.begin(); p != seq.end(); ++p)
+ if(size > 0)
{
- (*p).__read(__is);
- __is->checkSeq();
- __is->endElement();
+ __is->startSeq(size, minElemSize);
+ T(size).swap(seq);
+ typedef typename T::iterator I;
+ for(I p = seq.begin(); p != seq.end(); ++p)
+ {
+ (*p).__read(__is);
+ __is->checkSeq();
+ __is->endElement();
+ }
+ __is->endSeq(size);
+ }
+ else
+ {
+ seq.clear();
}
- __is->endSeq(size);
}
template<typename T> void
@@ -318,14 +332,22 @@ readFixedSequence(::IceInternal::BasicStream* __is, T& seq, int elemSize)
{
::Ice::Int size;
__is->readSize(size);
- __is->checkFixedSeq(size, elemSize);
- seq.resize(size);
- typedef typename T::iterator I;
- for(I p = seq.begin(); p != seq.end(); ++p)
+ if(size > 0)
{
- (*p).__read(__is);
+ __is->checkFixedSeq(size, elemSize);
+ T(size).swap(seq);
+ typedef typename T::iterator I;
+ for(I p = seq.begin(); p != seq.end(); ++p)
+ {
+ (*p).__read(__is);
+ }
+ }
+ else
+ {
+ seq.clear();
}
}
-}
+
+} // End namespace IceInternal
#endif