summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/BasicStream.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2002-01-28 16:55:28 +0000
committerMarc Laukien <marc@zeroc.com>2002-01-28 16:55:28 +0000
commita2781b10b929c648599e474b922f046fa868b7d5 (patch)
tree52019cf658b91f974d7bbb1044de15d36988b85c /cpp/src/Ice/BasicStream.cpp
parentGlacier properties (diff)
downloadice-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.cpp66
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());
}
}