SDL 2.0
SDL_endian.h File Reference
#include "SDL_stdinc.h"
#include "begin_code.h"
#include "close_code.h"
+ Include dependency graph for SDL_endian.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

Swap to native

Byteswap item from the specified endianness to the native endianness.

#define SDL_SwapLE16(X)   (X)
 
#define SDL_SwapLE32(X)   (X)
 
#define SDL_SwapLE64(X)   (X)
 
#define SDL_SwapFloatLE(X)   (X)
 
#define SDL_SwapBE16(X)   SDL_Swap16(X)
 
#define SDL_SwapBE32(X)   SDL_Swap32(X)
 
#define SDL_SwapBE64(X)   SDL_Swap64(X)
 
#define SDL_SwapFloatBE(X)   SDL_SwapFloat(X)
 

The two types of endianness

CategoryEndian

Functions for reading and writing endian-specific values

#define SDL_LIL_ENDIAN   1234
 
#define SDL_BIG_ENDIAN   4321
 
#define SDL_BYTEORDER   SDL_LIL_ENDIAN
 
#define SDL_FLOATWORDORDER   SDL_BYTEORDER
 
#define HAS_BUILTIN_BSWAP16   0
 
#define HAS_BUILTIN_BSWAP32   0
 
#define HAS_BUILTIN_BSWAP64   0
 
#define HAS_BROKEN_BSWAP   0
 
SDL_FORCE_INLINE Uint16 SDL_Swap16 (Uint16 x)
 
SDL_FORCE_INLINE Uint32 SDL_Swap32 (Uint32 x)
 
SDL_FORCE_INLINE Uint64 SDL_Swap64 (Uint64 x)
 
SDL_FORCE_INLINE float SDL_SwapFloat (float x)
 

Macro Definition Documentation

◆ HAS_BROKEN_BSWAP

#define HAS_BROKEN_BSWAP   0

Definition at line 147 of file SDL_endian.h.

◆ HAS_BUILTIN_BSWAP16

#define HAS_BUILTIN_BSWAP16   0

Definition at line 144 of file SDL_endian.h.

◆ HAS_BUILTIN_BSWAP32

#define HAS_BUILTIN_BSWAP32   0

Definition at line 145 of file SDL_endian.h.

◆ HAS_BUILTIN_BSWAP64

#define HAS_BUILTIN_BSWAP64   0

Definition at line 146 of file SDL_endian.h.

◆ SDL_BIG_ENDIAN

#define SDL_BIG_ENDIAN   4321

Definition at line 55 of file SDL_endian.h.

◆ SDL_BYTEORDER

#define SDL_BYTEORDER   SDL_LIL_ENDIAN

Definition at line 94 of file SDL_endian.h.

◆ SDL_FLOATWORDORDER

#define SDL_FLOATWORDORDER   SDL_BYTEORDER

Definition at line 117 of file SDL_endian.h.

◆ SDL_LIL_ENDIAN

#define SDL_LIL_ENDIAN   1234

Definition at line 54 of file SDL_endian.h.

◆ SDL_SwapBE16

#define SDL_SwapBE16 (   X)    SDL_Swap16(X)

Definition at line 372 of file SDL_endian.h.

◆ SDL_SwapBE32

#define SDL_SwapBE32 (   X)    SDL_Swap32(X)

Definition at line 373 of file SDL_endian.h.

◆ SDL_SwapBE64

#define SDL_SwapBE64 (   X)    SDL_Swap64(X)

Definition at line 374 of file SDL_endian.h.

◆ SDL_SwapFloatBE

#define SDL_SwapFloatBE (   X)    SDL_SwapFloat(X)

Definition at line 375 of file SDL_endian.h.

◆ SDL_SwapFloatLE

#define SDL_SwapFloatLE (   X)    (X)

Definition at line 371 of file SDL_endian.h.

◆ SDL_SwapLE16

#define SDL_SwapLE16 (   X)    (X)

Definition at line 368 of file SDL_endian.h.

◆ SDL_SwapLE32

#define SDL_SwapLE32 (   X)    (X)

Definition at line 369 of file SDL_endian.h.

◆ SDL_SwapLE64

#define SDL_SwapLE64 (   X)    (X)

Definition at line 370 of file SDL_endian.h.

Function Documentation

◆ SDL_Swap16()

SDL_FORCE_INLINE Uint16 SDL_Swap16 ( Uint16  x)

Use this function to swap the byte order of a 16-bit value.

Parameters
xthe value to be swapped.
Returns
the swapped value.
See also
SDL_SwapBE16
SDL_SwapLE16

Definition at line 203 of file SDL_endian.h.

204{
205 return SDL_static_cast(Uint16, ((x << 8) | (x >> 8)));
206}
uint16_t Uint16
Definition SDL_stdinc.h:217
#define SDL_static_cast(type, expression)
Definition SDL_stdinc.h:163

References SDL_static_cast.

◆ SDL_Swap32()

SDL_FORCE_INLINE Uint32 SDL_Swap32 ( Uint32  x)

Use this function to swap the byte order of a 32-bit value.

Parameters
xthe value to be swapped.
Returns
the swapped value.
See also
SDL_SwapBE32
SDL_SwapLE32

Definition at line 264 of file SDL_endian.h.

265{
266 return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) |
267 ((x >> 8) & 0x0000FF00) | (x >> 24)));
268}
uint32_t Uint32
Definition SDL_stdinc.h:231

References SDL_static_cast.

Referenced by SDL_Swap64(), and SDL_SwapFloat().

◆ SDL_Swap64()

SDL_FORCE_INLINE Uint64 SDL_Swap64 ( Uint64  x)

Use this function to swap the byte order of a 64-bit value.

Parameters
xthe value to be swapped.
Returns
the swapped value.
See also
SDL_SwapBE64
SDL_SwapLE64

Definition at line 319 of file SDL_endian.h.

320{
321 Uint32 hi, lo;
322
323 /* Separate into high and low 32-bit values and swap them */
324 lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
325 x >>= 32;
326 hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF);
327 x = SDL_Swap32(lo);
328 x <<= 32;
329 x |= SDL_Swap32(hi);
330 return (x);
331}
SDL_FORCE_INLINE Uint32 SDL_Swap32(Uint32 x)
Definition SDL_endian.h:264

References SDL_static_cast, and SDL_Swap32().

◆ SDL_SwapFloat()

SDL_FORCE_INLINE float SDL_SwapFloat ( float  x)

Use this function to swap the byte order of a floating point value.

Parameters
xthe value to be swapped.
Returns
the swapped value.
See also
SDL_SwapFloatBE
SDL_SwapFloatLE

Definition at line 345 of file SDL_endian.h.

346{
347 union {
348 float f;
349 Uint32 ui32;
350 } swapper;
351 swapper.f = x;
352 swapper.ui32 = SDL_Swap32(swapper.ui32);
353 return swapper.f;
354}

References SDL_Swap32().