32#define BSWAP16(A) _byteswap_ushort(A)
33#define BSWAP32(A) _byteswap_ulong(A)
34#define BSWAP64(A) _byteswap_uint64(A)
36#define BSWAP16(A) __builtin_bswap16(A)
37#define BSWAP32(A) __builtin_bswap32(A)
38#define BSWAP64(A) __builtin_bswap64(A)
51 uint32_t firstbyte = (
reinterpret_cast<uint8_t*
>(&testvar))[0];
52 if (firstbyte == 0xff)
54 if (firstbyte == 0xfe)
64#if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
66#elif defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
68#elif defined(__BYTE_ORDER__)
69#error "uhm, __BYTE_ORDER__ has some strange value"
90 auto i = std::bit_cast<uint32_t>(f);
92 return std::bit_cast<float>(i);
95 auto i = std::bit_cast<uint64_t>(d);
97 return std::bit_cast<double>(i);
105 memcpy(&ret, data,
sizeof(
T));
116template <
typename T>
inline T getBE(
const void* data) {
120template <
typename T>
inline T getLE(
const void* data) {
assert(dim.area() >=area)
Endianness getHostEndiannessRuntime()
int8_t getByteSwapped(int8_t v)
uint16_t getU16LE(const void *data)
uint16_t getU16BE(const void *data)
Endianness getHostEndianness()
uint32_t getU32LE(const void *data)
uint32_t getU32BE(const void *data)
T getLE(const void *data)
T getBE(const void *data)