mirror of
https://github.com/thepigeongenerator/mcaselector-lite.git
synced 2025-12-18 23:55:44 +01:00
44 lines
1.6 KiB
C
44 lines
1.6 KiB
C
/* This file is part of MCA-Selector-lite,
|
|
* and is licensed under GPL-2.0-only.
|
|
* Copyright (C)2025 quinnthepigeon@proton.me Quinn
|
|
* For further information, view COPYING and CONTRIBUTORS
|
|
* at: www.github.com/thepigeongenerator/mcaselector-lite */
|
|
#ifndef PORTABLE_ENDIAN_H
|
|
#define PORTABLE_ENDIAN_H 1
|
|
|
|
#if defined(__GNUC__)
|
|
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
|
|
#define le16toh(x) __uint16_identity(x)
|
|
#define le32toh(x) __uint32_identity(x)
|
|
#define le64toh(x) __uint64_identity(x)
|
|
#define htole16(x) __uint16_identity(x)
|
|
#define htole32(x) __uint32_identity(x)
|
|
#define htole64(x) __uint64_identity(x)
|
|
#define be16toh(x) __builtin_bswap16(x)
|
|
#define be32toh(x) __builtin_bswap32(x)
|
|
#define be64toh(x) __builtin_bswap64(x)
|
|
#define htobe16(x) __builtin_bswap16(x)
|
|
#define htobe32(x) __builtin_bswap32(x)
|
|
#define htobe64(x) __builtin_bswap64(x)
|
|
#elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
|
#define le16toh(x) __builtin_bswap16(x)
|
|
#define le32toh(x) __builtin_bswap32(x)
|
|
#define le64toh(x) __builtin_bswap64(x)
|
|
#define htole16(x) __builtin_bswap16(x)
|
|
#define htole32(x) __builtin_bswap32(x)
|
|
#define htole64(x) __builtin_bswap64(x)
|
|
#define be16toh(x) __uint16_identity(x)
|
|
#define be32toh(x) __uint32_identity(x)
|
|
#define be64toh(x) __uint64_identity(x)
|
|
#define htobe16(x) __uint16_identity(x)
|
|
#define htobe32(x) __uint32_identity(x)
|
|
#define htobe64(x) __uint64_identity(x)
|
|
#else
|
|
#error machine architecture unsupported! Expected either big-endian or little-endian, make sure to use a compiler which defines __BYTE_ORDER__ (like clang or gcc)
|
|
#endif /* byte order */
|
|
|
|
#else
|
|
#error GNU C is unavailable
|
|
#endif /* __GNUC__ */
|
|
#endif /* PORTABLE_ENDIAN_H */
|