mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-05 11:44:31 +00:00
68 lines
1.6 KiB
C
68 lines
1.6 KiB
C
|
#ifndef ENDIAN_H
|
||
|
#define ENDIAN_H
|
||
|
|
||
|
#if defined(__linux__) || defined(__CYGWIN__)
|
||
|
#include <endian.h>
|
||
|
#elif defined(__APPLE__)
|
||
|
#include <libkern/OSByteOrder.h>
|
||
|
|
||
|
#define htobe16(x) OSSwapHostToBigInt16(x)
|
||
|
#define htole16(x) OSSwapHostToLittleInt16(x)
|
||
|
#define be16toh(x) OSSwapBigToHostInt16(x)
|
||
|
#define le16toh(x) OSSwapLittleToHostInt16(x)
|
||
|
|
||
|
#define htobe32(x) OSSwapHostToBigInt32(x)
|
||
|
#define htole32(x) OSSwapHostToLittleInt32(x)
|
||
|
#define be32toh(x) OSSwapBigToHostInt32(x)
|
||
|
#define le32toh(x) OSSwapLittleToHostInt32(x)
|
||
|
|
||
|
#define htobe64(x) OSSwapHostToBigInt64(x)
|
||
|
#define htole64(x) OSSwapHostToLittleInt64(x)
|
||
|
#define be64toh(x) OSSwapBigToHostInt64(x)
|
||
|
#define le64toh(x) OSSwapLittleToHostInt64(x)
|
||
|
#else
|
||
|
|
||
|
#if !defined(__BYTE_ORDER__)
|
||
|
#error "No endian define provided by compiler"
|
||
|
#endif
|
||
|
|
||
|
#if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
|
||
|
|
||
|
#define htobe16(x) (x)
|
||
|
#define htole16(x) __builtin_bswap16(x)
|
||
|
#define be16toh(x) (x)
|
||
|
#define le16toh(x) __builtin_bswap16(x)
|
||
|
|
||
|
#define htobe32(x) (x)
|
||
|
#define htole32(x) __builtin_bswap32(x)
|
||
|
#define be32toh(x) (x)
|
||
|
#define le32toh(x) __builtin_bswap32(x)
|
||
|
|
||
|
#define htobe64(x) (x)
|
||
|
#define htole64(x) __builtin_bswap64(x)
|
||
|
#define be64toh(x) (x)
|
||
|
#define le64toh(x) __builtin_bswap64(x)
|
||
|
|
||
|
#else
|
||
|
|
||
|
#define htobe16(x) __builtin_bswap16(x)
|
||
|
#define htole16(x) (x)
|
||
|
#define be16toh(x) __builtin_bswap16(x)
|
||
|
#define le16toh(x) (x)
|
||
|
|
||
|
#define htobe32(x) __builtin_bswap32(x)
|
||
|
#define htole32(x) (x)
|
||
|
#define be32toh(x) __builtin_bswap32(x)
|
||
|
#define le32toh(x) (x)
|
||
|
|
||
|
#define htobe64(x) __builtin_bswap64(x)
|
||
|
#define htole64(x) (x)
|
||
|
#define be64toh(x) __builtin_bswap64(x)
|
||
|
#define le64toh(x) (x)
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|
||
|
#endif
|