30 #if !defined(_EndianUtilities_h_) 31 #define _EndianUtilities_h_ 38 #define _BYTESWAP16(value) (((((uint16_t)value) << 8) & 0xFF00) | ((((uint16_t)value) >> 8) & 0x00FF)) 41 #define _BYTESWAP32(value) \ 42 (((((uint32_t)value) << 24) & 0xFF000000) | ((((uint32_t)value) << 8) & 0x00FF0000) | \ 43 ((((uint32_t)value) >> 8) & 0x0000FF00) | ((((uint32_t)value) >> 24) & 0x000000FF)) 46 #define _BYTESWAP64(value) \ 47 (((((uint64_t)value) << 56) & 0xFF00000000000000ULL) | ((((uint64_t)value) << 40) & 0x00FF000000000000ULL) | \ 48 ((((uint64_t)value) << 24) & 0x0000FF0000000000ULL) | ((((uint64_t)value) << 8) & 0x000000FF00000000ULL) | \ 49 ((((uint64_t)value) >> 8) & 0x00000000FF000000ULL) | ((((uint64_t)value) >> 24) & 0x0000000000FF0000ULL) | \ 50 ((((uint64_t)value) >> 40) & 0x000000000000FF00ULL) | ((((uint64_t)value) >> 56) & 0x00000000000000FFULL)) 57 inline uint16_t _swap_u16(uint16_t value)
59 return _BYTESWAP16(value);
61 inline int16_t _swap_s16(int16_t value)
63 return (int16_t)_BYTESWAP16((uint16_t)value);
66 inline uint32_t _swap_u32(uint32_t value)
68 return _BYTESWAP32(value);
70 inline int32_t _swap_s32(int32_t value)
72 return (int32_t)_BYTESWAP32((uint32_t)value);
75 inline uint64_t _swap_u64(uint64_t value)
77 return _BYTESWAP64(value);
79 inline int64_t _swap_s64(int64_t value)
81 return (uint64_t)_BYTESWAP64((uint64_t)value);
86 #if defined(__LITTLE_ENDIAN__) 90 #define ENDIAN_BIG_TO_HOST_U16(value) (_swap_u16(value)) 91 #define ENDIAN_HOST_TO_BIG_U16(value) (_swap_u16(value)) 93 #define ENDIAN_BIG_TO_HOST_S16(value) (_swap_s16(value)) 94 #define ENDIAN_HOST_TO_BIG_S16(value) (_swap_s16(value)) 96 #define ENDIAN_BIG_TO_HOST_U32(value) (_swap_u32(value)) 97 #define ENDIAN_HOST_TO_BIG_U32(value) (_swap_u32(value)) 99 #define ENDIAN_BIG_TO_HOST_S32(value) (_swap_s32(value)) 100 #define ENDIAN_HOST_TO_BIG_S32(value) (_swap_s32(value)) 102 #define ENDIAN_BIG_TO_HOST_U64(value) (_swap_u64(value)) 103 #define ENDIAN_HOST_TO_BIG_U64(value) (_swap_u64(value)) 105 #define ENDIAN_BIG_TO_HOST_S64(value) (_swap_s64(value)) 106 #define ENDIAN_HOST_TO_BIG_S64(value) (_swap_s64(value)) 110 #define ENDIAN_LITTLE_TO_HOST_U16(value) (value) 111 #define ENDIAN_HOST_TO_LITTLE_U16(value) (value) 113 #define ENDIAN_LITTLE_TO_HOST_S16(value) (value) 114 #define ENDIAN_HOST_TO_LITTLE_S16(value) (value) 116 #define ENDIAN_LITTLE_TO_HOST_U32(value) (value) 117 #define ENDIAN_HOST_TO_LITTLE_U32(value) (value) 119 #define ENDIAN_LITTLE_TO_HOST_S32(value) (value) 120 #define ENDIAN_HOST_TO_LITTLE_S32(value) (value) 122 #define ENDIAN_LITTLE_TO_HOST_U64(value) (value) 123 #define ENDIAN_HOST_TO_LITTLE_U64(value) (value) 125 #define ENDIAN_LITTLE_TO_HOST_S64(value) (value) 126 #define ENDIAN_HOST_TO_LITTLE_S64(value) (value) 128 #elif defined(__BIG_ENDIAN__) 132 #define ENDIAN_LITTLE_TO_HOST_U16(value) (_swap_u16(value)) 133 #define ENDIAN_HOST_TO_LITTLE_U16(value) (_swap_u16(value)) 135 #define ENDIAN_LITTLE_TO_HOST_S16(value) (_swap_s16(value)) 136 #define ENDIAN_HOST_TO_LITTLE_S16(value) (_swap_s16(value)) 138 #define ENDIAN_LITTLE_TO_HOST_U32(value) (_swap_u32(value)) 139 #define ENDIAN_HOST_TO_LITTLE_U32(value) (_swap_u32(value)) 141 #define ENDIAN_LITTLE_TO_HOST_S32(value) (_swap_s32(value)) 142 #define ENDIAN_HOST_TO_LITTLE_S32(value) (_swap_s32(value)) 144 #define ENDIAN_LITTLE_TO_HOST_U64(value) (_swap_u64(value)) 145 #define ENDIAN_HOST_TO_LITTLE_U64(value) (_swap_u64(value)) 147 #define ENDIAN_LITTLE_TO_HOST_S64(value) (_swap_s64(value)) 148 #define ENDIAN_HOST_TO_LITTLE_S64(value) (_swap_s64(value)) 152 #define ENDIAN_BIG_TO_HOST_U16(value) (value) 153 #define ENDIAN_HOST_TO_BIG_U16(value) (value) 155 #define ENDIAN_BIG_TO_HOST_S16(value) (value) 156 #define ENDIAN_HOST_TO_BIG_S16(value) (value) 158 #define ENDIAN_BIG_TO_HOST_U32(value) (value) 159 #define ENDIAN_HOST_TO_BIG_U32(value) (value) 161 #define ENDIAN_BIG_TO_HOST_S32(value) (value) 162 #define ENDIAN_HOST_TO_BIG_S32(value) (value) 164 #define ENDIAN_BIG_TO_HOST_U64(value) (value) 165 #define ENDIAN_HOST_TO_BIG_U64(value) (value) 167 #define ENDIAN_BIG_TO_HOST_S64(value) (value) 168 #define ENDIAN_HOST_TO_BIG_S64(value) (value) 172 #endif // _EndianUtilities_h_