/* Subset of Mathias Panzenböck's portable endian code, public domain */ #ifndef __PORTABLE_ENDIAN_H__ #define __PORTABLE_ENDIAN_H__ #if defined(__linux__) || defined(__CYGWIN__) # include #elif defined(__OpenBSD__) # include #elif defined(__APPLE__) # include # define htole64(x) OSSwapHostToLittleInt64(x) # define le64toh(x) OSSwapLittleToHostInt64(x) #elif defined(__NetBSD__) || defined(__FreeBSD__) || defined(__DragonFly__) # include # ifndef le64toh # define le64toh(x) letoh64(x) # endif #elif defined(__sun) && defined(__SVR4) # include # define htole64(x) LE_64(x) # define le64toh(x) LE_64(x) #elif defined(_WIN16) || defined(_WIN32) || defined(_WIN64) || defined(__WINDOWS__) # include # include # if BYTE_ORDER == LITTLE_ENDIAN # define htole64(x) (x) # define le64toh(x) (x) # elif BYTE_ORDER == BIG_ENDIAN # define htole64(x) __builtin_bswap64(x) # define le64toh(x) __builtin_bswap64(x) # else # error byte order not supported # endif #else # error platform not supported #endif #endif // __PORTABLE_ENDIAN_H__