sdl3-bindgen-sys
Safe HaskellNone
LanguageGHC2021

SDL3.Sys.Endian

Description

Functions for reading and writing endian-specific values.

FFI conventions

Unsuffixed aliases are unsafe foreign imports; aliases suffixed Safe are safe. Functions whose callbacks fire during the call export only the Safe alias (the genuine unsafe import stays reachable under SDL3.Sys.Bindgen.Endian.Unsafe); functions curated unsafe-only export only the unsuffixed one. Each alias's documentation records its flavor and rationale.

The C shims are functions this package defines in C over what the FFI cannot call directly (variadic functions, function-like macros), each named after what it wraps; the same flavor rules apply. Their raw imports live under SDL3.Sys.Bindgen.EndianShims.

Full conventions: SDL3.Sys.

Synopsis

Documentation

Function aliases

swapFloat Source #

Arguments

:: Float
x
the value to byte-swap.
-> IO Float 

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 swapFloatLE or 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).

Returns
x, with its bytes in the opposite endian order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of SDL_SwapFloat. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
SDL_SwapFloat, defined at SDL3/SDL_endian.h 408:24

Since: 3.2.0

C shims

swap16 Source #

Arguments

:: Word16
x
the value to byte-swap.
-> IO Word16 

Byte-swap an unsigned 16-bit number.

The SDL_Swap16 macro as a function. It always byte-swaps the value, whatever the system's byte order; swap16LE or swap16BE are what you want in most cases.

Returns
x, with its bytes in the opposite endian order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap16. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap16, defined at sdl3-bindgen-sys/SDL_endian_shims.h 38:26

Since: 3.2.0

swap32 Source #

Arguments

:: Word32
x
the value to byte-swap.
-> IO Word32 

Byte-swap an unsigned 32-bit number.

The SDL_Swap32 macro as a function. It always byte-swaps the value, whatever the system's byte order; swap32LE or swap32BE are what you want in most cases.

Returns
x, with its bytes in the opposite endian order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap32. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap32, defined at sdl3-bindgen-sys/SDL_endian_shims.h 57:26

Since: 3.2.0

swap64 Source #

Arguments

:: Word64
x
the value to byte-swap.
-> IO Word64 

Byte-swap an unsigned 64-bit number.

The SDL_Swap64 macro as a function. It always byte-swaps the value, whatever the system's byte order; swap64LE or swap64BE are what you want in most cases.

Returns
x, with its bytes in the opposite endian order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap64. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap64, defined at sdl3-bindgen-sys/SDL_endian_shims.h 76:26

Since: 3.2.0

swap16LE Source #

Arguments

:: Word16
x
the value to swap, in littleendian byte order.
-> IO Word16 

Swap a 16-bit value from littleendian to native byte order.

The SDL_Swap16LE macro as a function. If this is running on a littleendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap16LE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap16LE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 94:26

Since: 3.2.0

swap32LE Source #

Arguments

:: Word32
x
the value to swap, in littleendian byte order.
-> IO Word32 

Swap a 32-bit value from littleendian to native byte order.

The SDL_Swap32LE macro as a function. If this is running on a littleendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap32LE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap32LE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 112:26

Since: 3.2.0

swap64LE Source #

Arguments

:: Word64
x
the value to swap, in littleendian byte order.
-> IO Word64 

Swap a 64-bit value from littleendian to native byte order.

The SDL_Swap64LE macro as a function. If this is running on a littleendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap64LE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap64LE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 130:26

Since: 3.2.0

swapFloatLE Source #

Arguments

:: Float
x
the value to swap, in littleendian byte order.
-> IO Float 

Swap a floating point value from littleendian to native byte order.

The SDL_SwapFloatLE macro as a function. If this is running on a littleendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_SwapFloatLE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_SwapFloatLE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 148:25

Since: 3.2.0

swap16BE Source #

Arguments

:: Word16
x
the value to swap, in bigendian byte order.
-> IO Word16 

Swap a 16-bit value from bigendian to native byte order.

The SDL_Swap16BE macro as a function. If this is running on a bigendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap16BE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap16BE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 166:26

Since: 3.2.0

swap32BE Source #

Arguments

:: Word32
x
the value to swap, in bigendian byte order.
-> IO Word32 

Swap a 32-bit value from bigendian to native byte order.

The SDL_Swap32BE macro as a function. If this is running on a bigendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap32BE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap32BE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 184:26

Since: 3.2.0

swap64BE Source #

Arguments

:: Word64
x
the value to swap, in bigendian byte order.
-> IO Word64 

Swap a 64-bit value from bigendian to native byte order.

The SDL_Swap64BE macro as a function. If this is running on a bigendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_Swap64BE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_Swap64BE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 202:26

Since: 3.2.0

swapFloatBE Source #

Arguments

:: Float
x
the value to swap, in bigendian byte order.
-> IO Float 

Swap a floating point value from bigendian to native byte order.

The SDL_SwapFloatBE macro as a function. If this is running on a bigendian system, x is returned unchanged.

Returns
x in native byte order.
Thread safety
It is safe to call this function from any thread.

sdl3-bindgen-sys notes

Expand
FFI safety
Unsafe foreign import of lithon_SDL_SwapFloatBE. The safe import is not exported : pure bit manipulation on an immediate value; cannot block, lock, or call back.
Scalars
The binding generation has mapped C scalars to native Haskell scalars for this function. Pointers and structs are untouched by this best-effort mapping. Higher-level bindings are expected to map structs and pointers as appropriate.
C declaration
lithon_SDL_SwapFloatBE, defined at sdl3-bindgen-sys/SDL_endian_shims.h 220:25

Since: 3.2.0