summaryrefslogtreecommitdiff
path: root/cppe/src/IceE/BasicStream.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-02-10 18:40:15 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-02-10 18:40:15 +0000
commiteb80ebb2d703430d35f3bc0d576dbe1e760c8261 (patch)
treefcb979ba476d3829604059015e3c8017e539bcda /cppe/src/IceE/BasicStream.cpp
parentAdded binding test. (diff)
downloadice-eb80ebb2d703430d35f3bc0d576dbe1e760c8261.tar.bz2
ice-eb80ebb2d703430d35f3bc0d576dbe1e760c8261.tar.xz
ice-eb80ebb2d703430d35f3bc0d576dbe1e760c8261.zip
Fixed Double marshalling for ARM/LINUX
Diffstat (limited to 'cppe/src/IceE/BasicStream.cpp')
-rw-r--r--cppe/src/IceE/BasicStream.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/cppe/src/IceE/BasicStream.cpp b/cppe/src/IceE/BasicStream.cpp
index 597281a8904..229136f8b72 100644
--- a/cppe/src/IceE/BasicStream.cpp
+++ b/cppe/src/IceE/BasicStream.cpp
@@ -1344,6 +1344,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++;
@@ -1352,6 +1362,7 @@ IceInternal::BasicStream::write(Double v)
*dest++ = *src++;
*dest++ = *src++;
*dest = *src;
+# endif
#endif
}
@@ -1376,6 +1387,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++;
@@ -1384,6 +1405,7 @@ IceInternal::BasicStream::read(Double& v)
*dest++ = *src++;
*dest++ = *src++;
*dest = *src;
+# endif
#endif
}
@@ -1411,6 +1433,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
@@ -1443,6 +1480,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