AG_BYTESWAP(3)

NAME
AG_ByteSwap - agar byte swapping macros

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.

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
AG_DataSource(3), AG_Intro(3)

HISTORY
The AG_ByteSwap macros first appeared in Agar 1.3.4.