diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2008-05-29 15:18:35 -0230 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2008-06-06 12:25:27 +0200 |
commit | 50a66b68b04cad831d1d0358ae2711f762b7f7ec (patch) | |
tree | c7002b2c2eece4a0ca12c0377e005d57e4be92f1 /cpp/src | |
parent | bug 3233 - use createObjectAdapterWithRouter in Glacier2 demos (diff) | |
download | ice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.tar.bz2 ice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.tar.xz ice-50a66b68b04cad831d1d0358ae2711f762b7f7ec.zip |
Bug 3215 - ARM/Linux double support
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/BasicStream.cpp | 68 |
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 |