26 static_assert(
sizeof(T) == 2,
"16-bit type expected");
27 uint16_t
const x = static_cast <uint16_t> (in);
28 return static_cast <T> ((x >> 8) | (x << 8));
38 static_assert(
sizeof(T) == 4,
"32-bit type expected");
39 uint32_t x = static_cast <uint32_t> (in);
40 x = ((x & 0xFF00FF00) >> 8) | ((x & 0x00FF00FF) << 8);
41 return static_cast <T> ((x >> 16) | (x << 16));
51 static_assert(
sizeof(T) == 8,
"64-bit type expected");
52 uint64_t x = static_cast <uint64_t> (in);
53 x = ((x & 0xFF00FF00FF00FF00) >> 8) | ((x & 0x00FF00FF00FF00FF) << 8);
54 x = ((x & 0xFFFF0000FFFF0000) >> 16) | ((x & 0x0000FFFF0000FFFF) << 16);
55 return static_cast <T> ((x >> 32) | (x << 32));
59 #if defined(__clang__)
61 #if MAX_CLANG_VERSION(3, 2, 0)
62 #define FRAMEWORK_BYTESWAP8(x) x
63 #define FRAMEWORK_BYTESWAP16(x) ::framework::bswap16(x)
64 #define FRAMEWORK_BYTESWAP32(x) __builtin_bswap32(x)
65 #define FRAMEWORK_BYTESWAP64(x) __builtin_bswap64(x)
67 #define FRAMEWORK_BYTESWAP8(x) x
68 #define FRAMEWORK_BYTESWAP16(x) __builtin_bswap16(x)
69 #define FRAMEWORK_BYTESWAP32(x) __builtin_bswap32(x)
70 #define FRAMEWORK_BYTESWAP64(x) __builtin_bswap64(x)
72 #elif defined(__GNUC__)
73 #define FRAMEWORK_BYTESWAP8(x) x
74 #define FRAMEWORK_BYTESWAP16(x) ::framework::bswap16(x)
75 #define FRAMEWORK_BYTESWAP32(x) __builtin_bswap32(x)
76 #define FRAMEWORK_BYTESWAP64(x) __builtin_bswap64(x)
78 #define FRAMEWORK_BYTESWAP8(x) x
79 #define FRAMEWORK_BYTESWAP16(x) ::framework::bswap16(x)
80 #define FRAMEWORK_BYTESWAP32(x) ::framework::bswap32(x)
81 #define FRAMEWORK_BYTESWAP64(x) ::framework::bswap64(x)