diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2006-02-10 18:40:15 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2006-02-10 18:40:15 +0000 |
commit | eb80ebb2d703430d35f3bc0d576dbe1e760c8261 (patch) | |
tree | fcb979ba476d3829604059015e3c8017e539bcda /cppe/src/IceE/BasicStream.cpp | |
parent | Added binding test. (diff) | |
download | ice-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.cpp | 52 |
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 |