#pragma once /* Portable be64toh() — big-endian to host byte order conversion. */ #if defined(__linux__) # ifndef _DEFAULT_SOURCE # define _DEFAULT_SOURCE 1 # endif # ifndef _BSD_SOURCE # define _BSD_SOURCE 1 # endif # include # ifndef be64toh /* musl and some older glibc: fall back to builtin */ # include static inline uint64_t be64toh(uint64_t x) { # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ return __builtin_bswap64(x); # else return x; # endif } # endif /* be64toh */ #elif defined(__APPLE__) # include # include # define be64toh(x) OSSwapBigToHostInt64(x) #else # include static inline uint64_t be64toh(uint64_t x) { # if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ return __builtin_bswap64(x); # else return x; # endif } #endif