1 
2 //          Copyright Michael D. Parker 2018.
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.sdlversion;
8 
9 struct SDL_version {
10     ubyte major;
11     ubyte minor;
12     ubyte patch;
13 }
14 
15 enum SDL_MAJOR_VERSION = 2;
16 enum SDL_MINOR_VERSION = 0;
17 
18 version(SDL_201) {
19     enum ubyte SDL_PATCHLEVEL = 1;
20 }
21 else version(SDL_202) {
22     enum ubyte SDL_PATCHLEVEL = 2;
23 }
24 else version(SDL_203) {
25     enum ubyte SDL_PATCHLEVEL = 3;
26 }
27 else version(SDL_204) {
28     enum ubyte SDL_PATCHLEVEL = 4;
29 }
30 else version(SDL_205) {
31     enum ubyte SDL_PATCHLEVEL = 5;
32 }
33 else version(SDL_206) {
34     enum ubyte SDL_PATCHLEVEL = 6;
35 }
36 else version(SDL_207) {
37     enum ubyte SDL_PATCHLEVEL = 7;
38 }
39 else version(SDL_208) {
40     enum ubyte SDL_PATCHLEVEL = 8;
41 }
42 else version(SDL_209) {
43     enum ubyte SDL_PATCHLEVEL = 9;
44 }
45 else {
46     enum ubyte SDL_PATCHLEVEL = 0;
47 }
48 
49 @nogc nothrow pure
50 void SDL_VERSION(SDL_version* x) {
51     pragma(inline, true);
52     x.major = SDL_MAJOR_VERSION;
53     x.minor = SDL_MINOR_VERSION;
54     x.patch = SDL_PATCHLEVEL;
55 }
56 
57 enum SDL_VERSIONNUM(ubyte X, ubyte Y, ubyte Z) = X*1000 + Y*100 + Z;
58 enum SDL_COMPILEDVERSION = SDL_VERSIONNUM!(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL);
59 enum SDL_VERSION_ATLEAST(ubyte X, ubyte Y, ubyte Z) = SDL_COMPILEDVERSION >= SDL_VERSIONNUM!(X, Y, Z);
60 
61 version(BindSDL_Static) {
62     extern(C) @nogc nothrow {
63         void SDL_GetVersion(SDL_version*);
64         const(char)* SDL_GetRevision();
65         int SDL_GetRevisionNumber();
66     }
67 }
68 else {
69     extern(C) @nogc nothrow {
70         alias pSDL_GetVersion = void function(SDL_version*);
71         alias pSDL_GetRevision = const(char)* function();
72         alias pSDL_GetRevisionNumber = int function();
73     }
74 
75     __gshared {
76         pSDL_GetVersion SDL_GetVersion;
77         pSDL_GetRevision SDL_GetRevision;
78         pSDL_GetRevisionNumber SDL_GetRevisionNumber;
79     }
80 }