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.