diff options
author | Marc Laukien <marc@zeroc.com> | 2002-01-28 16:55:28 +0000 |
---|---|---|
committer | Marc Laukien <marc@zeroc.com> | 2002-01-28 16:55:28 +0000 |
commit | a2781b10b929c648599e474b922f046fa868b7d5 (patch) | |
tree | 52019cf658b91f974d7bbb1044de15d36988b85c /cpp/src/Ice/BasicStream.cpp | |
parent | Glacier properties (diff) | |
download | ice-a2781b10b929c648599e474b922f046fa868b7d5.tar.bz2 ice-a2781b10b929c648599e474b922f046fa868b7d5.tar.xz ice-a2781b10b929c648599e474b922f046fa868b7d5.zip |
removed string indirection
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 66 |
1 files changed, 14 insertions, 52 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index 9f80344fe1d..1f5851902c8 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -674,33 +674,13 @@ IceInternal::BasicStream::read(vector<Double>& v) void IceInternal::BasicStream::write(const string& v) { -#ifdef ICE_ACTIVE_STRING_INDIRECTION - if (!_currentWriteEncaps) // Lazy initialization - { - _writeEncapsStack.resize(1); - _currentWriteEncaps = &_encapsStack.back(); - } - - map<string, Int>::const_iterator p = _currentWriteEncaps->stringsWritten.find(v); - if (p != _currentWriteEncaps->stringsWritten.end()) - { - write(p->second); - } - else -#endif + Int len = v.size(); + write(len); + if (len > 0) { - Int len = v.size(); - write(len); - if (len > 0) - { -#ifdef ICE_ACTIVE_STRING_INDIRECTION - Int num = _currentWriteEncaps->stringsWritten.size(); - _currentWriteEncaps->stringsWritten[v] = -(num + 1); -#endif - int pos = b.size(); - resize(pos + len); - copy(v.begin(), v.end(), b.begin() + pos); - } + int pos = b.size(); + resize(pos + len); + copy(v.begin(), v.end(), b.begin() + pos); } } @@ -718,41 +698,23 @@ IceInternal::BasicStream::write(const vector<string>& v) void IceInternal::BasicStream::read(string& v) { - if (!_currentReadEncaps) // Lazy initialization - { - _readEncapsStack.resize(1); - _currentReadEncaps = &_readEncapsStack.back(); - } - Int len; read(len); - if (len < 0) + if (len <= 0) { - if (static_cast<vector<string>::size_type>(-(len + 1)) >= _currentReadEncaps->stringsRead.size()) - { - throw IllegalIndirectionException(__FILE__, __LINE__); - } - v = _currentReadEncaps->stringsRead[-(len + 1)]; + v.erase(); } else { - if (len == 0) - { - v.erase(); - } - else + Container::iterator begin = i; + i += len; + if (i > b.end()) { - Container::iterator begin = i; - i += len; - if (i > b.end()) - { - throw UnmarshalOutOfBoundsException(__FILE__, __LINE__); - } - v.resize(len); - copy(begin, i, v.begin()); - _currentReadEncaps->stringsRead.push_back(v.c_str()); + throw UnmarshalOutOfBoundsException(__FILE__, __LINE__); } + v.resize(len); + copy(begin, i, v.begin()); } } |