diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2006-01-27 20:00:22 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2006-01-27 20:00:22 +0000 |
commit | 6c70e4b49ea2e91f4c9ccc3ec0e69d08691d2011 (patch) | |
tree | 891f4ae549dedbbe682408bf34183e08ddf49ca6 /cppe/include/IceE/BasicStream.h | |
parent | Added EVC++ project files for custom (diff) | |
download | ice-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.h | 66 |
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 |