1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */
28 module derelict.sdl.sdlfuncs;
29 
30 private
31 {
32     import derelict.util.compat;
33     import derelict.sdl.sdltypes;
34 
35     version(Tango)
36     {
37         import tango.stdc.stdio;
38     }
39     else
40     {
41         import core.stdc.stdio;
42     }
43 }
44 
45 SDL_AudioSpec* SDL_LoadWAV(in char* file, SDL_AudioSpec* spec, Uint8** buf, Uint32* len)
46 {
47     return SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"), 1, spec, buf, len);
48 }
49 
50 int SDL_QuitRequested()
51 {
52     SDL_PumpEvents();
53     return SDL_PeepEvents(null, 0, SDL_PEEKEVENT, SDL_QUITMASK);
54 }
55 
56 int SDL_LockMutex(SDL_mutex *mutex)
57 {
58     return SDL_mutexP(mutex);
59 }
60 
61 int SDL_UnlockMutex(SDL_mutex *mutex)
62 {
63     return SDL_mutexV(mutex);
64 }
65 
66 SDL_Surface* SDL_LoadBMP(in char* file)
67 {
68     return SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1);
69 }
70 
71 int SDL_SaveBMP(SDL_Surface* surface, in char* file)
72 {
73     return SDL_SaveBMP_RW(surface, SDL_RWFromFile(file,"wb"), 1);
74 }
75 
76 version(D_Version2)
77 {
78     mixin("alias const(SDL_VideoInfo*) SDLVIPTR;");
79 }
80 else
81 {
82     alias SDL_VideoInfo* SDLVIPTR;
83 }
84 
85 
86 extern(C)
87 {
88     // SDL.h
89     alias int function(Uint32) da_SDL_Init;
90     alias int function(Uint32) da_SDL_InitSubSystem;
91     alias void function(Uint32) da_SDL_QuitSubSystem;
92     alias Uint32 function(Uint32) da_SDL_WasInit;
93     alias void function() da_SDL_Quit;
94 
95     // SDL_active.h
96     alias Uint8 function() da_SDL_GetAppState;
97 
98     // SDL_audio.h
99     alias int function(in char*) da_SDL_AudioInit;
100     alias void function() da_SDL_AudioQuit;
101     alias char* function(char*,int) da_SDL_AudioDriverName;
102     alias int function(SDL_AudioSpec*,SDL_AudioSpec*) da_SDL_OpenAudio;
103     alias SDL_audiostatus function() da_SDL_GetAudioStatus;
104     alias void function(int) da_SDL_PauseAudio;
105     alias SDL_AudioSpec* function(SDL_RWops*,int,SDL_AudioSpec*,Uint8**,Uint32*) da_SDL_LoadWAV_RW;
106     alias void function(Uint8*) da_SDL_FreeWAV;
107     alias int function(SDL_AudioCVT*,Uint16,Uint8,int,Uint16,Uint8,int) da_SDL_BuildAudioCVT;
108     alias int function(SDL_AudioCVT*) da_SDL_ConvertAudio;
109     alias void function(Uint8*,in Uint8*,Uint32,int) da_SDL_MixAudio;
110     alias void function() da_SDL_LockAudio;
111     alias void function() da_SDL_UnlockAudio;
112     alias void function() da_SDL_CloseAudio;
113 
114     // SDL_cdrom.h
115     alias int function() da_SDL_CDNumDrives;
116     alias CCPTR function(int) da_SDL_CDName;
117     alias SDL_CD* function(int) da_SDL_CDOpen;
118     alias CDstatus function(SDL_CD*) da_SDL_CDStatus;
119     alias int function(SDL_CD*,int,int,int,int) da_SDL_CDPlayTracks;
120     alias int function(SDL_CD*,int,int) da_SDL_CDPlay;
121     alias int function(SDL_CD*) da_SDL_CDPause;
122     alias int function(SDL_CD*) da_SDL_CDResume;
123     alias int function(SDL_CD*) da_SDL_CDStop;
124     alias int function(SDL_CD*) da_SDL_CDEject;
125     alias int function(SDL_CD*) da_SDL_CDClose;
126 
127     // SDL_cpuinfo.h
128     alias SDL_bool function() da_SDL_HasRDTSC;
129     alias SDL_bool function() da_SDL_HasMMX;
130     alias SDL_bool function() da_SDL_HasMMXExt;
131     alias SDL_bool function() da_SDL_Has3DNow;
132     alias SDL_bool function() da_SDL_Has3DNowExt;
133     alias SDL_bool function() da_SDL_HasSSE;
134     alias SDL_bool function() da_SDL_HasSSE2;
135     alias SDL_bool function() da_SDL_HasAltiVec;
136 
137     // SDL_error.h
138     alias void function(in char*,...) da_SDL_SetError;
139     alias char* function() da_SDL_GetError;
140     alias void function() da_SDL_ClearError;
141 
142     // SDL_events.h
143     alias void function() da_SDL_PumpEvents;
144     alias int function(SDL_Event*,int,SDL_eventaction,Uint32) da_SDL_PeepEvents;
145     alias int function(SDL_Event*) da_SDL_PollEvent;
146     alias int function(SDL_Event*) da_SDL_WaitEvent;
147     alias int function(SDL_Event*) da_SDL_PushEvent;
148     alias void function(SDL_EventFilter) da_SDL_SetEventFilter;
149     alias SDL_EventFilter function() da_SDL_GetEventFilter;
150     alias Uint8 function(Uint8,int) da_SDL_EventState;
151 
152     // SDL_joystick.h
153     alias int function() da_SDL_NumJoysticks;
154     alias CCPTR function(int) da_SDL_JoystickName;
155     alias SDL_Joystick* function(int) da_SDL_JoystickOpen;
156     alias int function(int) da_SDL_JoystickOpened;
157     alias int function(SDL_Joystick*) da_SDL_JoystickIndex;
158     alias int function(SDL_Joystick*) da_SDL_JoystickNumAxes;
159     alias int function(SDL_Joystick*) da_SDL_JoystickNumBalls;
160     alias int function(SDL_Joystick*) da_SDL_JoystickNumHats;
161     alias int function(SDL_Joystick*) da_SDL_JoystickNumButtons;
162     alias void function() da_SDL_JoystickUpdate;
163     alias int function(int) da_SDL_JoystickEventState;
164     alias Sint16 function(SDL_Joystick*,int) da_SDL_JoystickGetAxis;
165     alias Uint8 function(SDL_Joystick*,int) da_SDL_JoystickGetHat;
166     alias int function(SDL_Joystick*,int,int*,int*) da_SDL_JoystickGetBall;
167     alias Uint8 function(SDL_Joystick*,int) da_SDL_JoystickGetButton;
168     alias void function(SDL_Joystick*) da_SDL_JoystickClose;
169 
170     // SDL_keyboard.h
171     alias int function(int) da_SDL_EnableUNICODE;
172     alias int function(int,int) da_SDL_EnableKeyRepeat;
173     alias void function(int*,int*) da_SDL_GetKeyRepeat;
174     alias Uint8* function(int*) da_SDL_GetKeyState;
175     alias SDLMod function() da_SDL_GetModState;
176     alias void function(SDLMod) da_SDL_SetModState;
177     alias char* function(SDLKey key) da_SDL_GetKeyName;
178 
179     // SDL_loadso.h
180     alias void* function(in char*) da_SDL_LoadObject;
181     alias void* function(in void*,char*) da_SDL_LoadFunction;
182     alias void function(void*) da_SDL_UnloadObject;
183 
184     // SDL_mouse.h
185     alias Uint8 function(int*,int*) da_SDL_GetMouseState;
186     alias Uint8 function(int*,int*) da_SDL_GetRelativeMouseState;
187     alias void function(Uint16,Uint16) da_SDL_WarpMouse;
188     alias SDL_Cursor* function(Uint8*,Uint8*,int,int,int,int) da_SDL_CreateCursor;
189     alias void function(SDL_Cursor*) da_SDL_SetCursor;
190     alias SDL_Cursor* function() da_SDL_GetCursor;
191     alias void function(SDL_Cursor*) da_SDL_FreeCursor;
192     alias int function(int) da_SDL_ShowCursor;
193 
194     // SDL_mutex.h
195     alias SDL_mutex* function() da_SDL_CreateMutex;
196     alias int function(SDL_mutex*) da_SDL_mutexP;
197     alias int function(SDL_mutex*) da_SDL_mutexV;
198     alias void function(SDL_mutex*) da_SDL_DestroyMutex;
199     alias SDL_sem* function(Uint32) da_SDL_CreateSemaphore;
200     alias void function(SDL_sem*) da_SDL_DestroySemaphore;
201     alias int function(SDL_sem*) da_SDL_SemWait;
202     alias int function(SDL_sem*) da_SDL_SemTryWait;
203     alias int function(SDL_sem*,Uint32) da_SDL_SemWaitTimeout;
204     alias int function(SDL_sem*) da_SDL_SemPost;
205     alias Uint32 function(SDL_sem*) da_SDL_SemValue;
206     alias SDL_cond* function() da_SDL_CreateCond;
207     alias void function(SDL_cond*) da_SDL_DestroyCond;
208     alias int function(SDL_cond*) da_SDL_CondSignal;
209     alias int function(SDL_cond*) da_SDL_CondBroadcast;
210     alias int function(SDL_cond*,SDL_mutex*) da_SDL_CondWait;
211     alias int function(SDL_cond*,SDL_mutex*,Uint32) da_SDL_CondWaitTimeout;
212 
213     // SDL_rwops.h
214     alias SDL_RWops* function(in char*,in char*) da_SDL_RWFromFile;
215     alias SDL_RWops* function(FILE*,int) da_SDL_RWFromFP;
216     alias SDL_RWops* function(void*,int) da_SDL_RWFromMem;
217     alias SDL_RWops* function(in void*,int) da_SDL_RWFromConstMem;
218     alias SDL_RWops* function() da_SDL_AllocRW;
219     alias void function(SDL_RWops*) da_SDL_FreeRW;
220     alias Uint16 function(SDL_RWops*) da_SDL_ReadLE16;
221     alias Uint16 function(SDL_RWops*) da_SDL_ReadBE16;
222     alias Uint32 function(SDL_RWops*) da_SDL_ReadLE32;
223     alias Uint32 function(SDL_RWops*) da_SDL_ReadBE32;
224     alias Uint64 function(SDL_RWops*) da_SDL_ReadLE64;
225     alias Uint64 function(SDL_RWops*) da_SDL_ReadBE64;
226     alias Uint16 function(SDL_RWops*,Uint16) da_SDL_WriteLE16;
227     alias Uint16 function(SDL_RWops*,Uint16) da_SDL_WriteBE16;
228     alias Uint32 function(SDL_RWops*,Uint32) da_SDL_WriteLE32;
229     alias Uint32 function(SDL_RWops*,Uint32) da_SDL_WriteBE32;
230     alias Uint64 function(SDL_RWops*,Uint64) da_SDL_WriteLE64;
231     alias Uint64 function(SDL_RWops*,Uint64) da_SDL_WriteBE64;
232 
233     // SDL_version.h
234     alias CSDLVERPTR function() da_SDL_Linked_Version;
235 
236     // SDL_syswm.h
237     alias int function(SDL_SysWMinfo*) da_SDL_GetWMInfo;
238 
239     // SDL_thread.h
240     alias SDL_Thread* function(int function(void*) fm, void*) da_SDL_CreateThread;
241     alias Uint32 function() da_SDL_ThreadID;
242     alias Uint32 function(SDL_Thread*) da_SDL_GetThreadID;
243     alias void function(SDL_Thread*,int*) da_SDL_WaitThread;
244     alias void function(SDL_Thread*) da_SDL_KillThread;
245 
246     // SDL_timer.h
247     alias Uint32 function() da_SDL_GetTicks;
248     alias void function(Uint32) da_SDL_Delay;
249     alias int function(Uint32,SDL_TimerCallback) da_SDL_SetTimer;
250     alias SDL_TimerID function(Uint32,SDL_NewTimerCallback,void*) da_SDL_AddTimer;
251     alias SDL_bool function(SDL_TimerID) da_SDL_RemoveTimer;
252 
253     // SDL_video.h
254     alias int function(in char*,Uint32) da_SDL_VideoInit;
255     alias void function() da_SDL_VideoQuit;
256     alias char* function(char*,int) da_SDL_VideoDriverName;
257     alias SDL_Surface* function() da_SDL_GetVideoSurface;
258     alias SDLVIPTR function() da_SDL_GetVideoInfo;
259     alias int function(int,int,int,Uint32) da_SDL_VideoModeOK;
260     alias SDL_Rect** function(SDL_PixelFormat*,Uint32) da_SDL_ListModes;
261     alias SDL_Surface* function(int,int,int,Uint32) da_SDL_SetVideoMode;
262     alias void function(SDL_Surface*,int,SDL_Rect*) da_SDL_UpdateRects;
263     alias void function(SDL_Surface*,Sint32,Sint32,Uint32,Uint32) da_SDL_UpdateRect;
264     alias int function(SDL_Surface*) da_SDL_Flip;
265     alias int function(float,float,float) da_SDL_SetGamma;
266     alias int function(in Uint16*,in Uint16*,in Uint16*) da_SDL_SetGammaRamp;
267     alias int function(Uint16*,Uint16*,Uint16*) da_SDL_GetGammaRamp;
268     alias int function(SDL_Surface*,SDL_Color*,int,int) da_SDL_SetColors;
269     alias int function(SDL_Surface*,int,SDL_Color*,int,int) da_SDL_SetPalette;
270     alias Uint32 function(in SDL_PixelFormat*,in Uint8,in Uint8,in Uint8) da_SDL_MapRGB;
271     alias Uint32 function(in SDL_PixelFormat*, in Uint8,in Uint8,in Uint8,in Uint8) da_SDL_MapRGBA;
272     alias void function(Uint32,SDL_PixelFormat*,Uint8*,Uint8*,Uint8*) da_SDL_GetRGB;
273     alias void function(Uint32,SDL_PixelFormat*,Uint8*,Uint8*,Uint8*,Uint8*) da_SDL_GetRGBA;
274     alias SDL_Surface* function(Uint32,int,int,int,Uint32,Uint32,Uint32,Uint32) da_SDL_CreateRGBSurface;
275     alias SDL_Surface* function(void*,int,int,int,int,Uint32,Uint32,Uint32,Uint32) da_SDL_CreateRGBSurfaceFrom;
276     alias void function(SDL_Surface*) da_SDL_FreeSurface;
277     alias int function(SDL_Surface*) da_SDL_LockSurface;
278     alias void function(SDL_Surface*) da_SDL_UnlockSurface;
279     alias SDL_Surface* function(SDL_RWops*,int) da_SDL_LoadBMP_RW;
280     alias int function(SDL_Surface*,SDL_RWops*,int) da_SDL_SaveBMP_RW;
281     alias int function(SDL_Surface*,Uint32,Uint32) da_SDL_SetColorKey;
282     alias int function(SDL_Surface*,Uint32,Uint8) da_SDL_SetAlpha;
283     alias SDL_bool function(SDL_Surface*,in SDL_Rect*) da_SDL_SetClipRect;
284     alias void function(SDL_Surface*,SDL_Rect*) da_SDL_GetClipRect;
285     alias SDL_Surface* function(SDL_Surface*,SDL_PixelFormat*,Uint32) da_SDL_ConvertSurface;
286     alias int function(SDL_Surface*,SDL_Rect*,SDL_Surface*,SDL_Rect*) da_SDL_UpperBlit;
287     alias int function(SDL_Surface*,SDL_Rect*,SDL_Surface*,SDL_Rect*) da_SDL_LowerBlit;
288     alias int function(SDL_Surface*,SDL_Rect*,Uint32) da_SDL_FillRect;
289     alias SDL_Surface* function(SDL_Surface*) da_SDL_DisplayFormat;
290     alias SDL_Surface* function(SDL_Surface*) da_SDL_DisplayFormatAlpha;
291     alias SDL_Overlay* function(int,int,Uint32,SDL_Surface*) da_SDL_CreateYUVOverlay;
292     alias int function(SDL_Overlay*) da_SDL_LockYUVOverlay;
293     alias void function(SDL_Overlay*) da_SDL_UnlockYUVOverlay;
294     alias int function(SDL_Overlay*,SDL_Rect*) da_SDL_DisplayYUVOverlay;
295     alias void function(SDL_Overlay*) da_SDL_FreeYUVOverlay;
296     alias int function(in char*) da_SDL_GL_LoadLibrary;
297     alias void* function(in char*) da_SDL_GL_GetProcAddress;
298     alias int function(SDL_GLattr,int) da_SDL_GL_SetAttribute;
299     alias int function(SDL_GLattr,int*) da_SDL_GL_GetAttribute;
300     alias void function() da_SDL_GL_SwapBuffers;
301     alias void function(int,SDL_Rect*) da_SDL_GL_UpdateRects;
302     alias void function() da_SDL_GL_Lock;
303     alias void function() da_SDL_GL_Unlock;
304     alias void function(in char*,in char*) da_SDL_WM_SetCaption;
305     alias void function(char**,char**) da_SDL_WM_GetCaption;
306     alias void function(SDL_Surface*,Uint8*) da_SDL_WM_SetIcon;
307     alias int function() da_SDL_WM_IconifyWindow;
308     alias int function(SDL_Surface*) da_SDL_WM_ToggleFullScreen;
309     alias SDL_GrabMode function(SDL_GrabMode) da_SDL_WM_GrabInput;
310 }
311 
312 mixin(gsharedString!() ~
313 "
314 da_SDL_Init SDL_Init;
315 da_SDL_InitSubSystem SDL_InitSubSystem;
316 da_SDL_QuitSubSystem SDL_QuitSubSystem;
317 da_SDL_WasInit SDL_WasInit;
318 da_SDL_Quit SDL_Quit;
319 
320 da_SDL_GetAppState SDL_GetAppState;
321 
322 da_SDL_AudioInit SDL_AudioInit;
323 da_SDL_AudioQuit SDL_AudioQuit;
324 da_SDL_AudioDriverName SDL_AudioDriverName;
325 da_SDL_OpenAudio SDL_OpenAudio;
326 da_SDL_GetAudioStatus SDL_GetAudioStatus;
327 da_SDL_PauseAudio SDL_PauseAudio;
328 da_SDL_LoadWAV_RW SDL_LoadWAV_RW;
329 da_SDL_FreeWAV SDL_FreeWAV;
330 da_SDL_BuildAudioCVT SDL_BuildAudioCVT;
331 da_SDL_ConvertAudio SDL_ConvertAudio;
332 da_SDL_MixAudio SDL_MixAudio;
333 da_SDL_LockAudio SDL_LockAudio;
334 da_SDL_UnlockAudio SDL_UnlockAudio;
335 da_SDL_CloseAudio SDL_CloseAudio;
336 
337 da_SDL_CDNumDrives SDL_CDNumDrives;
338 da_SDL_CDName SDL_CDName;
339 da_SDL_CDOpen SDL_CDOpen;
340 da_SDL_CDStatus SDL_CDStatus;
341 da_SDL_CDPlayTracks SDL_CDPlayTracks;
342 da_SDL_CDPlay SDL_CDPlay;
343 da_SDL_CDPause SDL_CDPause;
344 da_SDL_CDResume SDL_CDResume;
345 da_SDL_CDStop SDL_CDStop;
346 da_SDL_CDEject SDL_CDEject;
347 da_SDL_CDClose SDL_CDClose;
348 
349 da_SDL_HasRDTSC SDL_HasRDTSC;
350 da_SDL_HasMMX SDL_HasMMX;
351 da_SDL_HasMMXExt SDL_HasMMXExt;
352 da_SDL_Has3DNow SDL_Has3DNow;
353 da_SDL_Has3DNowExt SDL_Has3DNowExt;
354 da_SDL_HasSSE SDL_HasSSE;
355 da_SDL_HasSSE2 SDL_HasSSE2;
356 da_SDL_HasAltiVec SDL_HasAltiVec;
357 
358 da_SDL_SetError SDL_SetError;
359 da_SDL_GetError SDL_GetError;
360 da_SDL_ClearError SDL_ClearError;
361 
362 da_SDL_PumpEvents SDL_PumpEvents;
363 da_SDL_PeepEvents SDL_PeepEvents;
364 da_SDL_PollEvent SDL_PollEvent;
365 da_SDL_WaitEvent SDL_WaitEvent;
366 da_SDL_PushEvent SDL_PushEvent;
367 da_SDL_SetEventFilter SDL_SetEventFilter;
368 da_SDL_GetEventFilter SDL_GetEventFilter;
369 da_SDL_EventState SDL_EventState;
370 
371 da_SDL_NumJoysticks SDL_NumJoysticks;
372 da_SDL_JoystickName SDL_JoystickName;
373 da_SDL_JoystickOpen SDL_JoystickOpen;
374 da_SDL_JoystickOpened SDL_JoystickOpened;
375 da_SDL_JoystickIndex SDL_JoystickIndex;
376 da_SDL_JoystickNumAxes SDL_JoystickNumAxes;
377 da_SDL_JoystickNumBalls SDL_JoystickNumBalls;
378 da_SDL_JoystickNumHats SDL_JoystickNumHats;
379 da_SDL_JoystickNumButtons SDL_JoystickNumButtons;
380 da_SDL_JoystickUpdate SDL_JoystickUpdate;
381 da_SDL_JoystickEventState SDL_JoystickEventState;
382 da_SDL_JoystickGetAxis SDL_JoystickGetAxis;
383 da_SDL_JoystickGetHat SDL_JoystickGetHat;
384 da_SDL_JoystickGetBall SDL_JoystickGetBall;
385 da_SDL_JoystickGetButton SDL_JoystickGetButton;
386 da_SDL_JoystickClose SDL_JoystickClose;
387 
388 da_SDL_EnableUNICODE SDL_EnableUNICODE;
389 da_SDL_EnableKeyRepeat SDL_EnableKeyRepeat;
390 da_SDL_GetKeyRepeat SDL_GetKeyRepeat;
391 da_SDL_GetKeyState SDL_GetKeyState;
392 da_SDL_GetModState SDL_GetModState;
393 da_SDL_SetModState SDL_SetModState;
394 da_SDL_GetKeyName SDL_GetKeyName;
395 
396 da_SDL_LoadObject SDL_LoadObject;
397 da_SDL_LoadFunction SDL_LoadFunction;
398 da_SDL_UnloadObject SDL_UnloadObject;
399 
400 da_SDL_GetMouseState SDL_GetMouseState;
401 da_SDL_GetRelativeMouseState SDL_GetRelativeMouseState;
402 da_SDL_WarpMouse SDL_WarpMouse;
403 da_SDL_CreateCursor SDL_CreateCursor;
404 da_SDL_SetCursor SDL_SetCursor;
405 da_SDL_GetCursor SDL_GetCursor;
406 da_SDL_FreeCursor SDL_FreeCursor;
407 da_SDL_ShowCursor SDL_ShowCursor;
408 
409 da_SDL_CreateMutex SDL_CreateMutex;
410 da_SDL_mutexP SDL_mutexP;
411 da_SDL_mutexV SDL_mutexV;
412 da_SDL_DestroyMutex SDL_DestroyMutex;
413 da_SDL_CreateSemaphore SDL_CreateSemaphore;
414 da_SDL_DestroySemaphore SDL_DestroySemaphore;
415 da_SDL_SemWait SDL_SemWait;
416 da_SDL_SemTryWait SDL_SemTryWait;
417 da_SDL_SemWaitTimeout SDL_SemWaitTimeout;
418 da_SDL_SemPost SDL_SemPost;
419 da_SDL_SemValue SDL_SemValue;
420 da_SDL_CreateCond SDL_CreateCond;
421 da_SDL_DestroyCond SDL_DestroyCond;
422 da_SDL_CondSignal SDL_CondSignal;
423 da_SDL_CondBroadcast SDL_CondBroadcast;
424 da_SDL_CondWait SDL_CondWait;
425 da_SDL_CondWaitTimeout SDL_CondWaitTimeout;
426 
427 da_SDL_RWFromFile SDL_RWFromFile;
428 da_SDL_RWFromFP SDL_RWFromFP;
429 da_SDL_RWFromMem SDL_RWFromMem;
430 da_SDL_RWFromConstMem SDL_RWFromConstMem;
431 da_SDL_AllocRW SDL_AllocRW;
432 da_SDL_FreeRW SDL_FreeRW;
433 da_SDL_ReadLE16 SDL_ReadLE16;
434 da_SDL_ReadBE16 SDL_ReadBE16;
435 da_SDL_ReadLE32 SDL_ReadLE32;
436 da_SDL_ReadBE32 SDL_ReadBE32;
437 da_SDL_ReadLE64 SDL_ReadLE64;
438 da_SDL_ReadBE64 SDL_ReadBE64;
439 da_SDL_WriteLE16 SDL_WriteLE16;
440 da_SDL_WriteBE16 SDL_WriteBE16;
441 da_SDL_WriteLE32 SDL_WriteLE32;
442 da_SDL_WriteBE32 SDL_WriteBE32;
443 da_SDL_WriteLE64 SDL_WriteLE64;
444 da_SDL_WriteBE64 SDL_WriteBE64;
445 
446 da_SDL_Linked_Version SDL_Linked_Version;
447 
448 da_SDL_GetWMInfo SDL_GetWMInfo;
449 
450 da_SDL_CreateThread SDL_CreateThread;
451 da_SDL_ThreadID SDL_ThreadID;
452 da_SDL_GetThreadID SDL_GetThreadID;
453 da_SDL_WaitThread SDL_WaitThread;
454 da_SDL_KillThread SDL_KillThread;
455 
456 da_SDL_GetTicks SDL_GetTicks;
457 da_SDL_Delay SDL_Delay;
458 da_SDL_SetTimer SDL_SetTimer;
459 da_SDL_AddTimer SDL_AddTimer;
460 da_SDL_RemoveTimer SDL_RemoveTimer;
461 
462 da_SDL_VideoInit SDL_VideoInit;
463 da_SDL_VideoQuit SDL_VideoQuit;
464 da_SDL_VideoDriverName SDL_VideoDriverName;
465 da_SDL_GetVideoSurface SDL_GetVideoSurface;
466 da_SDL_GetVideoInfo SDL_GetVideoInfo;
467 da_SDL_VideoModeOK SDL_VideoModeOK;
468 da_SDL_ListModes SDL_ListModes;
469 da_SDL_SetVideoMode SDL_SetVideoMode;
470 da_SDL_UpdateRects SDL_UpdateRects;
471 da_SDL_UpdateRect SDL_UpdateRect;
472 da_SDL_Flip SDL_Flip;
473 da_SDL_SetGamma SDL_SetGamma;
474 da_SDL_SetGammaRamp SDL_SetGammaRamp;
475 da_SDL_GetGammaRamp SDL_GetGammaRamp;
476 da_SDL_SetColors SDL_SetColors;
477 da_SDL_SetPalette SDL_SetPalette;
478 da_SDL_MapRGB SDL_MapRGB;
479 da_SDL_MapRGBA SDL_MapRGBA;
480 da_SDL_GetRGB SDL_GetRGB;
481 da_SDL_GetRGBA SDL_GetRGBA;
482 da_SDL_CreateRGBSurface SDL_CreateRGBSurface;
483 da_SDL_CreateRGBSurfaceFrom SDL_CreateRGBSurfaceFrom;
484 da_SDL_FreeSurface SDL_FreeSurface;
485 da_SDL_LockSurface SDL_LockSurface;
486 da_SDL_UnlockSurface SDL_UnlockSurface;
487 da_SDL_LoadBMP_RW SDL_LoadBMP_RW;
488 da_SDL_SaveBMP_RW SDL_SaveBMP_RW;
489 da_SDL_SetColorKey SDL_SetColorKey;
490 da_SDL_SetAlpha SDL_SetAlpha;
491 da_SDL_SetClipRect SDL_SetClipRect;
492 da_SDL_GetClipRect SDL_GetClipRect;
493 da_SDL_ConvertSurface SDL_ConvertSurface;
494 da_SDL_UpperBlit SDL_UpperBlit;
495 da_SDL_LowerBlit SDL_LowerBlit;
496 da_SDL_FillRect SDL_FillRect;
497 da_SDL_DisplayFormat SDL_DisplayFormat;
498 da_SDL_DisplayFormatAlpha SDL_DisplayFormatAlpha;
499 da_SDL_CreateYUVOverlay SDL_CreateYUVOverlay;
500 da_SDL_LockYUVOverlay SDL_LockYUVOverlay;
501 da_SDL_UnlockYUVOverlay SDL_UnlockYUVOverlay;
502 da_SDL_DisplayYUVOverlay SDL_DisplayYUVOverlay;
503 da_SDL_FreeYUVOverlay SDL_FreeYUVOverlay;
504 da_SDL_GL_LoadLibrary SDL_GL_LoadLibrary;
505 da_SDL_GL_GetProcAddress SDL_GL_GetProcAddress;
506 da_SDL_GL_SetAttribute SDL_GL_SetAttribute;
507 da_SDL_GL_GetAttribute SDL_GL_GetAttribute;
508 da_SDL_GL_SwapBuffers SDL_GL_SwapBuffers;
509 da_SDL_GL_UpdateRects SDL_GL_UpdateRects;
510 da_SDL_GL_Lock SDL_GL_Lock;
511 da_SDL_GL_Unlock SDL_GL_Unlock;
512 da_SDL_WM_SetCaption SDL_WM_SetCaption;
513 da_SDL_WM_GetCaption SDL_WM_GetCaption;
514 da_SDL_WM_SetIcon SDL_WM_SetIcon;
515 da_SDL_WM_IconifyWindow SDL_WM_IconifyWindow;
516 da_SDL_WM_ToggleFullScreen SDL_WM_ToggleFullScreen;
517 da_SDL_WM_GrabInput SDL_WM_GrabInput;
518 ");
519 
520 alias SDL_CreateRGBSurface SDL_AllocSurface;
521 alias SDL_UpperBlit SDL_BlitSurface;