18 return _byteswap_ushort(x);
23 return _byteswap_ulong(x);
28 return _byteswap_uint64(x);
31#elif defined(UHD_PLATFORM_MACOS)
32# include <libkern/OSByteOrder.h>
36 return OSSwapInt16(x);
41 return OSSwapInt32(x);
46 return OSSwapInt64(x);
49#elif defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 3
53 return (x >> 8) | (x << 8);
58 return __builtin_bswap32(x);
63 return __builtin_bswap64(x);
66#elif defined(UHD_PLATFORM_LINUX)
88 return (x >> 8) | (x << 8);
93 return (uint32_t(
uhd::byteswap(uint16_t(x & 0xfffful))) << 16)
99 return (uint64_t(
uhd::byteswap(uint32_t(x & 0xffffffffull))) << 32)
150template <endianness_t endianness,
typename T>
154 if constexpr (endianness == ENDIANNESS_BIG) {
160 if constexpr (endianness == ENDIANNESS_LITTLE) {
168template <endianness_t endianness,
typename T>
172 if constexpr (endianness == ENDIANNESS_BIG) {
178 if constexpr (endianness == ENDIANNESS_LITTLE) {
#define UHD_FORCE_INLINE
Definition config.hpp:115
Definition build_info.hpp:12
T ntohx(T)
network to host: short, long, or long-long
Definition byteswap.ipp:111
uint16_t byteswap(uint16_t)
perform a byteswap on a 16 bit integer
Definition byteswap.ipp:86
T htowx(T)
host to worknet: short, long, or long-long
Definition byteswap.ipp:141
T htolx(T num)
Host to link with configurable endianness (16-bit, 32-bit, or 64-bit).
Definition byteswap.ipp:151
T wtohx(T)
worknet to host: short, long, or long-long
Definition byteswap.ipp:131
T ltohx(T num)
Link with configurable endianness to host (16-bit, 32-bit, or 64-bit).
Definition byteswap.ipp:169
T htonx(T)
host to network: short, long, or long-long
Definition byteswap.ipp:121