From 865c66889caa35d42fae355fcb54ac358eb6310f Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 6 Feb 2002 23:36:09 +0000 Subject: [PATCH] added integer byte swapping --- src/libCom/osi/os/default/osiWireFormat.h | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/libCom/osi/os/default/osiWireFormat.h b/src/libCom/osi/os/default/osiWireFormat.h index cd6d5849e..1951473f5 100644 --- a/src/libCom/osi/os/default/osiWireFormat.h +++ b/src/libCom/osi/os/default/osiWireFormat.h @@ -127,4 +127,46 @@ inline void osiConvertFromWireFormat ( epicsFloat64 &value, const epicsUInt8 *pW value = wireFloat64.ftmp; } +inline epicsUInt16 epicsHTON16 ( epicsUInt16 in ) +{ + unsigned tmp = in; // avoid unary conversions to int + + union { + epicsUInt8 bytes[2]; + epicsUInt16 word; + } result; + + result.bytes[0] = static_cast ( tmp >> 8 ); + result.bytes[1] = static_cast ( tmp ); + + return result.word; +} + +inline epicsUInt16 epicsNTOH16 ( epicsUInt16 in ) +{ + return epicsHTON16 ( in ); +} + +inline epicsUInt32 epicsHTON32 ( epicsUInt32 in ) +{ + unsigned tmp = in; // avoid unary conversions to int + + union { + epicsUInt8 bytes[4]; + epicsUInt32 longWord; + } result; + + result.bytes[0] = static_cast ( tmp >> 24 ); + result.bytes[1] = static_cast ( tmp >> 16 ); + result.bytes[2] = static_cast ( tmp >> 8 ); + result.bytes[3] = static_cast ( tmp >> 0 ); + + return result.longWord; +} + +inline epicsUInt32 epicsNTOH32 ( epicsUInt32 in ) +{ + return epicsHTON32 ( in ); +} + #endif // osiWireFormat