1 
2 //          Copyright 2018 - 2021 Michael D. Parker
3 // Distributed under the Boost Software License, Version 1.0.
4 //    (See accompanying file LICENSE_1_0.txt or copy at
5 //          http://www.boost.org/LICENSE_1_0.txt)
6 
7 module bindbc.sdl.bind.sdl;
8 
9 import bindbc.sdl.config;
10 
11 static if(sdlSupport >= SDLSupport.sdl209) {
12     enum : uint {
13         SDL_INIT_TIMER = 0x00000001,
14         SDL_INIT_AUDIO = 0x00000010,
15         SDL_INIT_VIDEO = 0x00000020,
16         SDL_INIT_JOYSTICK = 0x00000200,
17         SDL_INIT_HAPTIC = 0x00001000,
18         SDL_INIT_GAMECONTROLLER = 0x00002000,
19         SDL_INIT_EVENTS = 0x00004000,
20         SDL_INIT_SENSOR = 0x00008000,
21         SDL_INIT_NOPARACHUTE = 0x00100000,
22         SDL_INIT_EVERYTHING =
23                     SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO |
24                     SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER |
25                     SDL_INIT_EVENTS | SDL_INIT_SENSOR
26     }
27 } else {
28     enum : uint {
29         SDL_INIT_TIMER = 0x00000001,
30         SDL_INIT_AUDIO = 0x00000010,
31         SDL_INIT_VIDEO = 0x00000020,
32         SDL_INIT_JOYSTICK = 0x00000200,
33         SDL_INIT_HAPTIC = 0x00001000,
34         SDL_INIT_GAMECONTROLLER = 0x00002000,
35         SDL_INIT_EVENTS = 0x00004000,
36         SDL_INIT_NOPARACHUTE = 0x00100000,
37         SDL_INIT_EVERYTHING =
38                     SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO |
39                     SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER |
40                     SDL_INIT_EVENTS
41     }
42 }
43 
44 static if(staticBinding) {
45     extern(C) @nogc nothrow {
46         int SDL_Init(uint flags);
47         int SDL_InitSubSystem(uint flags);
48         void SDL_QuitSubSystem(uint flags);
49         uint SDL_WasInit(uint flags);
50         void SDL_Quit();
51     }
52 }
53 else {
54     extern(C) @nogc nothrow {
55         alias pSDL_Init = int function(uint flags);
56         alias pSDL_InitSubSystem = int function(uint flags);
57         alias pSDL_QuitSubSystem = void function(uint flags);
58         alias pSDL_WasInit = uint function(uint flags);
59         alias pSDL_Quit = void function();
60     }
61 
62     __gshared {
63         pSDL_Init SDL_Init;
64         pSDL_InitSubSystem SDL_InitSubSystem;
65         pSDL_QuitSubSystem SDL_QuitSubSystem;
66         pSDL_WasInit SDL_WasInit;
67         pSDL_Quit SDL_Quit;
68     }
69 }