1/*  Part of the SDL3 pack for SWI-Prolog.
    2
    3    SDL_init.h — initialization and shutdown.
    4
    5    @see https://wiki.libsdl.org/SDL3/SDL_init
    6*/
    7
    8:- module(sdl_init, [
    9    sdl_init/1,
   10    sdl_init_flag/2,
   11    sdl_quit/0
   12]).   13
   14:- use_module(library(sdl/foreign), [sdl_init_/1, sdl_quit/0, or_list/2]).   15:- reexport(library(sdl/foreign), [sdl_quit/0]).   16
   17:- multifile error:has_type/2.   18error:has_type(sdl_init_flag, X) :- sdl_init_flag(X, _).
   19
   20:- multifile prolog:error_message//1.   21prolog:error_message(type_error(sdl_init_flag, Culprit)) -->
   22   { findall(F, sdl_init_flag(F, _), Fs) },
   23   [ 'sdl_init_flag (one of ~q), found ~q'-[Fs, Culprit] ].
 sdl_init_flag(?Flag:atom, ?Value:integer) is nondet
Enumerate the SDL subsystem subscription flags. Each flag is a Prolog atom linked to its SDL bit-mask value.

The user-facing flag atoms are:

See also
- https://wiki.libsdl.org/SDL3/SDL_Init
   43sdl_init_flag(audio, 0x00000010).
   44sdl_init_flag(video, 0x00000020).
   45sdl_init_flag(joystick, 0x00000200).
   46sdl_init_flag(haptic, 0x00001000).
   47sdl_init_flag(gamepad, 0x00002000).
   48sdl_init_flag(events, 0x00004000).
   49sdl_init_flag(sensor, 0x00008000).
   50sdl_init_flag(camera, 0x00010000).
   51sdl_init_flag(everything, Flag) :-
   52   maplist(sdl_init_flag, [audio, video, events, joystick, haptic,
   53                           gamepad, sensor, camera], Flags),
   54   or_list(Flags, Flag).
 sdl_init(+Flags:list(sdl_init_flag)) is det
Initializes the SDL library. Each element of Flags must be one of the atoms enumerated by sdl_init_flag/2.
See also
- https://wiki.libsdl.org/SDL3/SDL_Init
   63sdl_init(Flags) :-
   64    must_be(list(sdl_init_flag), Flags),
   65    maplist(sdl_init_flag, Flags, IntFlags),
   66    or_list(IntFlags, IntFlag),
   67    sdl_init_(IntFlag).
 sdl_quit is det
Shuts down all SDL subsystems initialized by sdl_init/1.
See also
- https://wiki.libsdl.org/SDL3/SDL_Quit