AG_ByteSwap — agar
byte swapping macros
#include <agar/core/byteswap.h>
These macros swap the order of bytes in integers and
floating-point types. They are useful when reading or writing data of a
specific endianness.
Uint16
AG_Swap16(Uint16
value);
Uint32
AG_Swap32(Uint32
value);
Uint64
AG_Swap64(Uint64
value);
Uint16
AG_SwapLE16(Uint16
value);
Uint32
AG_SwapLE32(Uint32
value);
Uint64
AG_SwapLE64(Uint64
value);
Uint16
AG_SwapBE16(Uint16
value);
Uint32
AG_SwapBE32(Uint32
value);
Uint64
AG_SwapBE64(Uint64
value);
The
AG_Swap16(),
AG_Swap32() and AG_Swap64()
functions return the parameter's value with the byte order reversed.
AG_SwapLE16(),
AG_SwapLE32(), and
AG_SwapLE64() return the given value with the byte
order reversed if the current architecture is big-endian. On little-endian
machines, these functions return the value unchanged.
AG_SwapBE16(),
AG_SwapBE32() and
AG_SwapBE64() return the given value with the byte
order reversed if the current architecture is little-endian. On big-endian
machines, these functions return the value unchanged.
If 64-bit types are not supported
(!AG_HAVE_64BIT), then
AG_Swap64(),
AG_SwapLE64() and
AG_SwapBE64() are undefined.
The following code reverses the byte order of an array of 32-bit
values:
void
SwapData32(Uint32 *data, int len)
{
int i;
for (i = 0; i < len; i++)
data[i] = AG_Swap32(data[i]);
}
The AG_ByteSwap macros first appeared in
Agar 1.3.4.