summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Stream.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-09-05 02:35:27 +0000
committerMarc Laukien <marc@zeroc.com>2001-09-05 02:35:27 +0000
commit21d6da9ae8b7f87bd35be4c55122545c2a6c0987 (patch)
treec12260002ff01312c17717f2ea569e1ab9684eea /cpp/src/Ice/Stream.cpp
parentfix for STLport (diff)
downloadice-21d6da9ae8b7f87bd35be4c55122545c2a6c0987.tar.bz2
ice-21d6da9ae8b7f87bd35be4c55122545c2a6c0987.tar.xz
ice-21d6da9ae8b7f87bd35be4c55122545c2a6c0987.zip
batch-mode
Diffstat (limited to 'cpp/src/Ice/Stream.cpp')
-rw-r--r--cpp/src/Ice/Stream.cpp43
1 files changed, 37 insertions, 6 deletions
diff --git a/cpp/src/Ice/Stream.cpp b/cpp/src/Ice/Stream.cpp
index 21917a45783..7fa0802c9e6 100644
--- a/cpp/src/Ice/Stream.cpp
+++ b/cpp/src/Ice/Stream.cpp
@@ -39,8 +39,12 @@ IceInternal::Stream::instance() const
void
IceInternal::Stream::swap(Stream& other)
{
+ assert(_instance.get() == other._instance.get());
+
b.swap(other.b);
std::swap(i, other.i);
+ _encapsStartStack.swap(other._encapsStartStack);
+ _stringSet.swap(other._stringSet);
}
void
@@ -68,14 +72,14 @@ IceInternal::Stream::startWriteEncaps()
{
write(Byte(0)); // Encoding version
write(Int(0)); // Placeholder for the encapsulation length
- _encapsStartStack.push(b.size());
+ _encapsStartStack.push_back(b.size());
}
void
IceInternal::Stream::endWriteEncaps()
{
- int start = _encapsStartStack.top();
- _encapsStartStack.pop();
+ int start = _encapsStartStack.back();
+ _encapsStartStack.pop_back();
Int sz = b.size() - start;
const Byte* p = reinterpret_cast<const Byte*>(&sz);
#ifdef ICE_BIGENDIAN
@@ -100,14 +104,14 @@ IceInternal::Stream::startReadEncaps()
}
Int sz;
read(sz);
- _encapsStartStack.push(i - b.begin());
+ _encapsStartStack.push_back(i - b.begin());
}
void
IceInternal::Stream::endReadEncaps()
{
- int start = _encapsStartStack.top();
- _encapsStartStack.pop();
+ int start = _encapsStartStack.back();
+ _encapsStartStack.pop_back();
Container::iterator save = i;
i = b.begin() + start - sizeof(Int);
Int sz;
@@ -842,9 +846,22 @@ IceInternal::Stream::CmpPosPos::CmpPosPos(const Container& cont) :
{
}
+IceInternal::Stream::CmpPosPos::CmpPosPos(const CmpPosPos& cmp) :
+ _cont(cmp._cont)
+{
+}
+
+IceInternal::Stream::CmpPosPos&
+IceInternal::Stream::CmpPosPos::operator=(const CmpPosPos&)
+{
+ // Do *not* assign anything! I want CmpPosPos to ignore std::swap().
+ return *this;
+}
+
bool
IceInternal::Stream::CmpPosPos::operator()(int p, int q) const
{
+ assert(!_cont.empty());
return strcmp(_cont.begin() + p, _cont.begin() + q) < 0;
}
@@ -853,14 +870,28 @@ IceInternal::Stream::CmpPosString::CmpPosString(const Container& cont) :
{
}
+IceInternal::Stream::CmpPosString::CmpPosString(const CmpPosString& cmp) :
+ _cont(cmp._cont)
+{
+}
+
+IceInternal::Stream::CmpPosString&
+IceInternal::Stream::CmpPosString::operator=(const CmpPosString&)
+{
+ // Do *not* assign anything! I want CmpPosString to ignore std::swap().
+ return *this;
+}
+
bool
IceInternal::Stream::CmpPosString::operator()(int i, const string& s) const
{
+ assert(!_cont.empty());
return _cont.begin() + i < s;
}
bool
IceInternal::Stream::CmpPosString::operator()(const string& s, int i) const
{
+ assert(!_cont.empty());
return s < _cont.begin() + i;
}