7 #if !defined(_EndianUtilities_h_) 8 #define _EndianUtilities_h_ 15 #define _BYTESWAP16(value) (((((uint16_t)value) << 8) & 0xFF00) | ((((uint16_t)value) >> 8) & 0x00FF)) 18 #define _BYTESWAP32(value) \ 19 (((((uint32_t)value) << 24) & 0xFF000000) | ((((uint32_t)value) << 8) & 0x00FF0000) | \ 20 ((((uint32_t)value) >> 8) & 0x0000FF00) | ((((uint32_t)value) >> 24) & 0x000000FF)) 23 #define _BYTESWAP64(value) \ 24 (((((uint64_t)value) << 56) & 0xFF00000000000000ULL) | ((((uint64_t)value) << 40) & 0x00FF000000000000ULL) | \ 25 ((((uint64_t)value) << 24) & 0x0000FF0000000000ULL) | ((((uint64_t)value) << 8) & 0x000000FF00000000ULL) | \ 26 ((((uint64_t)value) >> 8) & 0x00000000FF000000ULL) | ((((uint64_t)value) >> 24) & 0x0000000000FF0000ULL) | \ 27 ((((uint64_t)value) >> 40) & 0x000000000000FF00ULL) | ((((uint64_t)value) >> 56) & 0x00000000000000FFULL)) 34 inline uint16_t _swap_u16(uint16_t value)
36 return _BYTESWAP16(value);
38 inline int16_t _swap_s16(int16_t value)
40 return (int16_t)_BYTESWAP16((uint16_t)value);
43 inline uint32_t _swap_u32(uint32_t value)
45 return _BYTESWAP32(value);
47 inline int32_t _swap_s32(int32_t value)
49 return (int32_t)_BYTESWAP32((uint32_t)value);
52 inline uint64_t _swap_u64(uint64_t value)
54 return _BYTESWAP64(value);
56 inline int64_t _swap_s64(int64_t value)
58 return (uint64_t)_BYTESWAP64((uint64_t)value);
63 #if defined(__LITTLE_ENDIAN__) 67 #define ENDIAN_BIG_TO_HOST_U16(value) (_swap_u16(value)) 68 #define ENDIAN_HOST_TO_BIG_U16(value) (_swap_u16(value)) 70 #define ENDIAN_BIG_TO_HOST_S16(value) (_swap_s16(value)) 71 #define ENDIAN_HOST_TO_BIG_S16(value) (_swap_s16(value)) 73 #define ENDIAN_BIG_TO_HOST_U32(value) (_swap_u32(value)) 74 #define ENDIAN_HOST_TO_BIG_U32(value) (_swap_u32(value)) 76 #define ENDIAN_BIG_TO_HOST_S32(value) (_swap_s32(value)) 77 #define ENDIAN_HOST_TO_BIG_S32(value) (_swap_s32(value)) 79 #define ENDIAN_BIG_TO_HOST_U64(value) (_swap_u64(value)) 80 #define ENDIAN_HOST_TO_BIG_U64(value) (_swap_u64(value)) 82 #define ENDIAN_BIG_TO_HOST_S64(value) (_swap_s64(value)) 83 #define ENDIAN_HOST_TO_BIG_S64(value) (_swap_s64(value)) 87 #define ENDIAN_LITTLE_TO_HOST_U16(value) (value) 88 #define ENDIAN_HOST_TO_LITTLE_U16(value) (value) 90 #define ENDIAN_LITTLE_TO_HOST_S16(value) (value) 91 #define ENDIAN_HOST_TO_LITTLE_S16(value) (value) 93 #define ENDIAN_LITTLE_TO_HOST_U32(value) (value) 94 #define ENDIAN_HOST_TO_LITTLE_U32(value) (value) 96 #define ENDIAN_LITTLE_TO_HOST_S32(value) (value) 97 #define ENDIAN_HOST_TO_LITTLE_S32(value) (value) 99 #define ENDIAN_LITTLE_TO_HOST_U64(value) (value) 100 #define ENDIAN_HOST_TO_LITTLE_U64(value) (value) 102 #define ENDIAN_LITTLE_TO_HOST_S64(value) (value) 103 #define ENDIAN_HOST_TO_LITTLE_S64(value) (value) 105 #elif defined(__BIG_ENDIAN__) 109 #define ENDIAN_LITTLE_TO_HOST_U16(value) (_swap_u16(value)) 110 #define ENDIAN_HOST_TO_LITTLE_U16(value) (_swap_u16(value)) 112 #define ENDIAN_LITTLE_TO_HOST_S16(value) (_swap_s16(value)) 113 #define ENDIAN_HOST_TO_LITTLE_S16(value) (_swap_s16(value)) 115 #define ENDIAN_LITTLE_TO_HOST_U32(value) (_swap_u32(value)) 116 #define ENDIAN_HOST_TO_LITTLE_U32(value) (_swap_u32(value)) 118 #define ENDIAN_LITTLE_TO_HOST_S32(value) (_swap_s32(value)) 119 #define ENDIAN_HOST_TO_LITTLE_S32(value) (_swap_s32(value)) 121 #define ENDIAN_LITTLE_TO_HOST_U64(value) (_swap_u64(value)) 122 #define ENDIAN_HOST_TO_LITTLE_U64(value) (_swap_u64(value)) 124 #define ENDIAN_LITTLE_TO_HOST_S64(value) (_swap_s64(value)) 125 #define ENDIAN_HOST_TO_LITTLE_S64(value) (_swap_s64(value)) 129 #define ENDIAN_BIG_TO_HOST_U16(value) (value) 130 #define ENDIAN_HOST_TO_BIG_U16(value) (value) 132 #define ENDIAN_BIG_TO_HOST_S16(value) (value) 133 #define ENDIAN_HOST_TO_BIG_S16(value) (value) 135 #define ENDIAN_BIG_TO_HOST_U32(value) (value) 136 #define ENDIAN_HOST_TO_BIG_U32(value) (value) 138 #define ENDIAN_BIG_TO_HOST_S32(value) (value) 139 #define ENDIAN_HOST_TO_BIG_S32(value) (value) 141 #define ENDIAN_BIG_TO_HOST_U64(value) (value) 142 #define ENDIAN_HOST_TO_BIG_U64(value) (value) 144 #define ENDIAN_BIG_TO_HOST_S64(value) (value) 145 #define ENDIAN_HOST_TO_BIG_S64(value) (value) 149 #endif // _EndianUtilities_h_