| /** |
| * D header file for POSIX. |
| * |
| * $(LINK2 https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/endian.h.html posix endian.h) |
| * |
| * Standards: The Open Group Base Specifications Issue 8, IEEE Std 1003.1, 2024 Edition |
| */ |
| module core.sys.posix.endian; |
| |
| version (Posix): |
| nothrow: |
| @safe: |
| @nogc: |
| |
| import core.bitop; |
| |
| enum LITTLE_ENDIAN = 1234; |
| enum BIG_ENDIAN = 4321; |
| enum PDP_ENDIAN = 3412; |
| |
| version (LittleEndian) |
| { |
| enum BYTE_ORDER = LITTLE_ENDIAN; |
| |
| pragma(inline, true): |
| ushort htobe16(ushort x) => core.bitop.byteswap(x); |
| ushort htole16(ushort x) => x; |
| ushort be16toh(ushort x) => core.bitop.byteswap(x); |
| ushort le16toh(ushort x) => x; |
| |
| uint htobe32(uint x) => core.bitop.bswap(x); |
| uint htole32(uint x) => x; |
| uint be32toh(uint x) => core.bitop.bswap(x); |
| uint le32toh(uint x) => x; |
| |
| ulong htobe64(ulong x) => core.bitop.bswap(x); |
| ulong htole64(ulong x) => x; |
| ulong be64toh(ulong x) => core.bitop.bswap(x); |
| ulong le64toh(ulong x) => x; |
| } |
| else |
| { |
| enum BYTE_ORDER = BIG_ENDIAN; |
| |
| pragma(inline, true): |
| ushort htobe16(ushort x) => x; |
| ushort htole16(ushort x) => core.bitop.byteswap(x); |
| ushort be16toh(ushort x) => x; |
| ushort le16toh(ushort x) => core.bitop.byteswap(x); |
| |
| uint htobe32(uint x) => x; |
| uint htole32(uint x) => core.bitop.bswap(x); |
| uint be32toh(uint x) => x; |
| uint le32toh(uint x) => core.bitop.bswap(x); |
| |
| ulong htobe64(ulong x) => x; |
| ulong htole64(ulong x) => core.bitop.bswap(x); |
| ulong be64toh(ulong x) => x; |
| ulong le64toh(ulong x) => core.bitop.bswap(x); |
| } |