summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-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