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. 18errorhas_type(sdl_init_flag, X) :- sdl_init_flag(X, _). 19 20:- multifile prolog:error_message//1. 21prologerror_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] ].
The user-facing flag atoms are:
audiovideojoystickhapticgamepadeventssensorcameraeverything -- a convenience flag combining the other flags43sdl_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).
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).