SDL 3.0
|
Go to the source code of this file.
The two types of endianness | |
CategoryEndianFunctions converting endian-specific values to different byte orders. These functions either unconditionally swap byte order (SDL_Swap16, SDL_Swap32, SDL_Swap64, SDL_SwapFloat), or they swap to/from the system's native byte order (SDL_Swap16LE, SDL_Swap16BE, SDL_Swap32LE, SDL_Swap32BE, SDL_Swap32LE, SDL_Swap32BE, SDL_SwapFloatLE, SDL_SwapFloatBE). In the latter case, the functionality is provided by macros that become no-ops if a swap isn't necessary: on an x86 (littleendian) processor, SDL_Swap32LE does nothing, but SDL_Swap32BE reverses the bytes of the data. On a PowerPC processor (bigendian), the macros behavior is reversed. The swap routines are inline functions, and attempt to use compiler intrinsics, inline assembly, and other magic to make byteswapping efficient. | |
#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 |
#define | SDL_Swap16LE(x) (x) |
#define | SDL_Swap32LE(x) (x) |
#define | SDL_Swap64LE(x) (x) |
#define | SDL_SwapFloatLE(x) (x) |
#define | SDL_Swap16BE(x) SDL_Swap16(x) |
#define | SDL_Swap32BE(x) SDL_Swap32(x) |
#define | SDL_Swap64BE(x) SDL_Swap64(x) |
#define | SDL_SwapFloatBE(x) SDL_SwapFloat(x) |
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) |
#define HAS_BROKEN_BSWAP 0 |
Definition at line 236 of file SDL_endian.h.
#define HAS_BUILTIN_BSWAP16 0 |
Definition at line 233 of file SDL_endian.h.
#define HAS_BUILTIN_BSWAP32 0 |
Definition at line 234 of file SDL_endian.h.
#define HAS_BUILTIN_BSWAP64 0 |
Definition at line 235 of file SDL_endian.h.
#define SDL_BIG_ENDIAN 4321 |
A value to represent bigendian byteorder.
This is used with the preprocessor macro SDL_BYTEORDER, to determine a platform's byte ordering:
Definition at line 105 of file SDL_endian.h.
#define SDL_BYTEORDER SDL_LIL_ENDIAN |
Definition at line 166 of file SDL_endian.h.
#define SDL_FLOATWORDORDER SDL_BYTEORDER |
Definition at line 210 of file SDL_endian.h.
#define SDL_LIL_ENDIAN 1234 |
A value to represent littleendian byteorder.
This is used with the preprocessor macro SDL_BYTEORDER, to determine a platform's byte ordering:
Definition at line 86 of file SDL_endian.h.
#define SDL_Swap16BE | ( | x | ) | SDL_Swap16(x) |
Definition at line 624 of file SDL_endian.h.
#define SDL_Swap16LE | ( | x | ) | (x) |
Definition at line 620 of file SDL_endian.h.
#define SDL_Swap32BE | ( | x | ) | SDL_Swap32(x) |
Definition at line 625 of file SDL_endian.h.
#define SDL_Swap32LE | ( | x | ) | (x) |
Definition at line 621 of file SDL_endian.h.
#define SDL_Swap64BE | ( | x | ) | SDL_Swap64(x) |
Definition at line 626 of file SDL_endian.h.
#define SDL_Swap64LE | ( | x | ) | (x) |
Definition at line 622 of file SDL_endian.h.
#define SDL_SwapFloatBE | ( | x | ) | SDL_SwapFloat(x) |
Definition at line 627 of file SDL_endian.h.
#define SDL_SwapFloatLE | ( | x | ) | (x) |
Definition at line 623 of file SDL_endian.h.
SDL_FORCE_INLINE Uint16 SDL_Swap16 | ( | Uint16 | x | ) |
SDL_FORCE_INLINE Uint32 SDL_Swap32 | ( | Uint32 | x | ) |
Definition at line 328 of file SDL_endian.h.
References SDL_static_cast.
Referenced by SDL_Swap64(), and SDL_SwapFloat().
SDL_FORCE_INLINE Uint64 SDL_Swap64 | ( | Uint64 | x | ) |
Definition at line 373 of file SDL_endian.h.
References SDL_static_cast, and SDL_Swap32().
SDL_FORCE_INLINE float SDL_SwapFloat | ( | float | x | ) |
Byte-swap a floating point number.
This will always byte-swap the value, whether it's currently in the native byteorder of the system or not. You should use SDL_SwapFloatLE or SDL_SwapFloatBE instead, in most cases.
Note that this is a forced-inline function in a header, and not a public API function available in the SDL library (which is to say, the code is embedded in the calling program and the linker and dynamic loader will not be able to find this function inside SDL itself).
x | the value to byte-swap. |
\threadsafety It is safe to call this function from any thread.
Definition at line 408 of file SDL_endian.h.
References SDL_Swap32().