summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/BasicStream.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2008-05-29 15:18:35 -0230
committerBenoit Foucher <benoit@zeroc.com>2008-06-06 12:25:27 +0200
commit50a66b68b04cad831d1d0358ae2711f762b7f7ec (patch)
treec7002b2c2eece4a0ca12c0377e005d57e4be92f1 /cpp/src/Ice/BasicStream.cpp
parentbug 3233 - use createObjectAdapterWithRouter in Glacier2 demos (diff)
downloadice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.tar.bz2
ice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.tar.xz
ice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.zip
Bug 3215 - ARM/Linux double support
Diffstat (limited to 'cpp/src/Ice/BasicStream.cpp')
-rw-r--r--cpp/src/Ice/BasicStream.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp
index d9aa8e44e2d..b0e753d4cbd 100644
--- a/cpp/src/Ice/BasicStream.cpp
+++ b/cpp/src/Ice/BasicStream.cpp
@@ -1225,6 +1225,16 @@ IceInternal::BasicStream::write(Double v)
*dest = *src;
#else
const Byte* src = reinterpret_cast<const Byte*>(&v);
+# if defined(__arm__) && defined(__linux)
+ dest[4] = *src++;
+ dest[5] = *src++;
+ dest[6] = *src++;
+ dest[7] = *src++;
+ dest[0] = *src++;
+ dest[1] = *src++;
+ dest[2] = *src++;
+ dest[3] = *src;
+# else
*dest++ = *src++;
*dest++ = *src++;
*dest++ = *src++;
@@ -1233,6 +1243,7 @@ IceInternal::BasicStream::write(Double v)
*dest++ = *src++;
*dest++ = *src++;
*dest = *src;
+# endif
#endif
}
@@ -1260,6 +1271,21 @@ IceInternal::BasicStream::write(const Double* begin, const Double* end)
*dest++ = *src--;
src += 2 * sizeof(Double);
}
+#elif defined(__arm__) && defined(__linux)
+ const Byte* src = reinterpret_cast<const Byte*>(begin);
+ Byte* dest = &(*(b.begin() + pos));
+ for(int j = 0 ; j < sz ; ++j)
+ {
+ dest[4] = *src++;
+ dest[5] = *src++;
+ dest[6] = *src++;
+ dest[7] = *src++;
+ dest[0] = *src++;
+ dest[1] = *src++;
+ dest[2] = *src++;
+ dest[3] = *src++;
+ dest += sizeof(Double);
+ }
#else
memcpy(&b[pos], reinterpret_cast<const Byte*>(begin), sz * sizeof(Double));
#endif
@@ -1287,6 +1313,16 @@ IceInternal::BasicStream::read(Double& v)
*dest = *src;
#else
Byte* dest = reinterpret_cast<Byte*>(&v);
+# if defined(__arm__) && defined(__linux)
+ dest[4] = *src++;
+ dest[5] = *src++;
+ dest[6] = *src++;
+ dest[7] = *src++;
+ dest[0] = *src++;
+ dest[1] = *src++;
+ dest[2] = *src++;
+ dest[3] = *src;
+# else
*dest++ = *src++;
*dest++ = *src++;
*dest++ = *src++;
@@ -1295,6 +1331,7 @@ IceInternal::BasicStream::read(Double& v)
*dest++ = *src++;
*dest++ = *src++;
*dest = *src;
+# endif
#endif
}
@@ -1324,6 +1361,21 @@ IceInternal::BasicStream::read(vector<Double>& v)
*dest-- = *src++;
dest += 2 * sizeof(Double);
}
+#elif defined(__arm__) && defined(__linux)
+ const Byte* src = &(*begin);
+ Byte* dest = reinterpret_cast<Byte*>(&v[0]);
+ for(int j = 0 ; j < sz ; ++j)
+ {
+ dest[4] = *src++;
+ dest[5] = *src++;
+ dest[6] = *src++;
+ dest[7] = *src++;
+ dest[0] = *src++;
+ dest[1] = *src++;
+ dest[2] = *src++;
+ dest[3] = *src++;
+ dest += sizeof(Double);
+ }
#else
copy(begin, i, reinterpret_cast<Byte*>(&v[0]));
#endif
@@ -1369,6 +1421,22 @@ IceInternal::BasicStream::read(pair<const Double*, const Double*>& v)
*dest-- = *src++;
dest += 2 * sizeof(Double);
}
+# elif defined(__arm__) && defined(__linux)
+ const Byte* src = &(*begin);
+ Byte* dest = reinterpret_cast<Byte*>(&result[0]);
+ for(int j = 0 ; j < sz ; ++j)
+ {
+ dest[4] = *src++;
+ dest[5] = *src++;
+ dest[6] = *src++;
+ dest[7] = *src++;
+ dest[0] = *src++;
+ dest[1] = *src++;
+ dest[2] = *src++;
+ dest[3] = *src++;
+ dest += sizeof(Double);
+ }
+
# else
copy(begin, i, reinterpret_cast<Byte*>(&result[0]));
# endif