SYNOPSIS
#include <agar/core/byteswap.h>
DESCRIPTION
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.
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.
EXAMPLES
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]); }
SEE ALSO
HISTORY
The
AG_ByteSwap macros first appeared in
Agar 1.3.4.