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.allegro5.allegro;
29 
30 public {
31     import derelict.allegro5.functions,
32            derelict.allegro5.types;
33 }
34 
35 private {
36     import derelict.util.loader,
37            derelict.util.system;
38 
39     import derelict.allegro5.internal;
40 
41     enum libNames = genLibNames("Allegro");
42 }
43 
44 class DerelictAllegro5Loader : SharedLibLoader {
45     public {
46         this() {
47             super(libNames);
48         }
49 
50         // Derived from SiegeLord's implementation of al_run_allegro in DAllegro5.
51         int run(int function() userMain) {
52             extern(C) static int runner(int argc, char** argv) {
53                 import core.thread;
54                 static if(Derelict_OS_Mac) {
55                     thread_attachThis();
56                 }
57 
58                 auto ret = (*cast(int function()*) argv[ 0 ])();
59 
60                 static if(Derelict_OS_Mac) {
61                     thread_detachThis();
62                 }
63 
64                 return ret;
65             }
66 
67             import derelict.util.exception;
68             if(!isLoaded) {
69                 throw new DerelictException("DerelictAllegro5.load must be called before the run method.");
70             }
71             auto fakeArg = cast(char*)&userMain;
72             return al_run_main(0, &fakeArg, &runner);
73         }
74     }
75 
76     protected override void loadSymbols() {
77         bindFunc(cast(void**)&al_get_time, "al_get_time");
78         bindFunc(cast(void**)&al_rest, "al_rest");
79         bindFunc(cast(void**)&al_init_timeout, "al_init_timeout");
80         bindFunc(cast(void**)&al_get_allegro_version, "al_get_allegro_version");
81         bindFunc(cast(void**)&al_run_main, "al_run_main");
82         bindFunc(cast(void**)&al_set_new_bitmap_format, "al_set_new_bitmap_format");
83         bindFunc(cast(void**)&al_set_new_bitmap_flags, "al_set_new_bitmap_flags");
84         bindFunc(cast(void**)&al_get_new_bitmap_format, "al_get_new_bitmap_format");
85         bindFunc(cast(void**)&al_get_new_bitmap_flags, "al_get_new_bitmap_flags");
86         bindFunc(cast(void**)&al_add_new_bitmap_flag, "al_add_new_bitmap_flag");
87         bindFunc(cast(void**)&al_get_bitmap_width, "al_get_bitmap_width");
88         bindFunc(cast(void**)&al_get_bitmap_height, "al_get_bitmap_height");
89         bindFunc(cast(void**)&al_get_bitmap_format, "al_get_bitmap_format");
90         bindFunc(cast(void**)&al_get_bitmap_flags, "al_get_bitmap_flags");
91         bindFunc(cast(void**)&al_create_bitmap, "al_create_bitmap");
92         bindFunc(cast(void**)&al_destroy_bitmap, "al_destroy_bitmap");
93         bindFunc(cast(void**)&al_put_pixel, "al_put_pixel");
94         bindFunc(cast(void**)&al_put_blended_pixel, "al_put_blended_pixel");
95         bindFunc(cast(void**)&al_get_pixel, "al_get_pixel");
96         bindFunc(cast(void**)&al_convert_mask_to_alpha, "al_convert_mask_to_alpha");
97         bindFunc(cast(void**)&al_set_clipping_rectangle, "al_set_clipping_rectangle");
98         bindFunc(cast(void**)&al_reset_clipping_rectangle, "al_reset_clipping_rectangle");
99         bindFunc(cast(void**)&al_get_clipping_rectangle, "al_get_clipping_rectangle");
100         bindFunc(cast(void**)&al_create_sub_bitmap, "al_create_sub_bitmap");
101         bindFunc(cast(void**)&al_is_sub_bitmap, "al_is_sub_bitmap");
102         bindFunc(cast(void**)&al_get_parent_bitmap, "al_get_parent_bitmap");
103         bindFunc(cast(void**)&al_get_bitmap_x, "al_get_bitmap_x");
104         bindFunc(cast(void**)&al_get_bitmap_y, "al_get_bitmap_y");
105         bindFunc(cast(void**)&al_reparent_bitmap, "al_reparent_bitmap");
106         bindFunc(cast(void**)&al_clone_bitmap, "al_clone_bitmap");
107         bindFunc(cast(void**)&al_convert_bitmap, "al_convert_bitmap");
108         bindFunc(cast(void**)&al_convert_memory_bitmaps, "al_convert_memory_bitmaps");
109         bindFunc(cast(void**)&al_draw_bitmap, "al_draw_bitmap");
110         bindFunc(cast(void**)&al_draw_bitmap_region, "al_draw_bitmap_region");
111         bindFunc(cast(void**)&al_draw_scaled_bitmap, "al_draw_scaled_bitmap");
112         bindFunc(cast(void**)&al_draw_rotated_bitmap, "al_draw_rotated_bitmap");
113         bindFunc(cast(void**)&al_draw_scaled_rotated_bitmap, "al_draw_scaled_rotated_bitmap");
114         bindFunc(cast(void**)&al_draw_tinted_bitmap, "al_draw_tinted_bitmap");
115         bindFunc(cast(void**)&al_draw_tinted_bitmap_region, "al_draw_tinted_bitmap_region");
116         bindFunc(cast(void**)&al_draw_tinted_scaled_bitmap, "al_draw_tinted_scaled_bitmap");
117         bindFunc(cast(void**)&al_draw_tinted_rotated_bitmap, "al_draw_tinted_rotated_bitmap");
118         bindFunc(cast(void**)&al_draw_tinted_scaled_rotated_bitmap, "al_draw_tinted_scaled_rotated_bitmap");
119         bindFunc(cast(void**)&al_draw_tinted_scaled_rotated_bitmap_region, "al_draw_tinted_scaled_rotated_bitmap_region");
120         bindFunc(cast(void**)&al_register_bitmap_loader, "al_register_bitmap_loader");
121         bindFunc(cast(void**)&al_register_bitmap_saver, "al_register_bitmap_saver");
122         bindFunc(cast(void**)&al_register_bitmap_loader_f, "al_register_bitmap_loader_f");
123         bindFunc(cast(void**)&al_register_bitmap_saver_f, "al_register_bitmap_saver_f");
124         bindFunc(cast(void**)&al_register_bitmap_identifier, "al_register_bitmap_identifier");
125         bindFunc(cast(void**)&al_load_bitmap, "al_load_bitmap");
126         bindFunc(cast(void**)&al_load_bitmap_flags, "al_load_bitmap_flags");
127         bindFunc(cast(void**)&al_load_bitmap_f, "al_load_bitmap_f");
128         bindFunc(cast(void**)&al_load_bitmap_flags_f, "al_load_bitmap_flags_f");
129         bindFunc(cast(void**)&al_save_bitmap, "al_save_bitmap");
130         bindFunc(cast(void**)&al_save_bitmap_f, "al_save_bitmap_f");
131         bindFunc(cast(void**)&al_identify_bitmap_f, "al_identify_bitmap_f");
132         bindFunc(cast(void**)&al_identify_bitmap, "al_identify_bitmap");
133         bindFunc(cast(void**)&al_lock_bitmap, "al_lock_bitmap");
134         bindFunc(cast(void**)&al_lock_bitmap_region, "al_lock_bitmap_region");
135         bindFunc(cast(void**)&al_lock_bitmap_blocked, "al_lock_bitmap_blocked");
136         bindFunc(cast(void**)&al_lock_bitmap_region_blocked, "al_lock_bitmap_region_blocked");
137         bindFunc(cast(void**)&al_unlock_bitmap, "al_unlock_bitmap");
138         bindFunc(cast(void**)&al_is_bitmap_locked, "al_is_bitmap_locked");
139         bindFunc(cast(void**)&al_set_blender, "al_set_blender");
140         bindFunc(cast(void**)&al_set_blend_color, "al_set_blend_color");
141         bindFunc(cast(void**)&al_get_blender, "al_get_blender");
142         bindFunc(cast(void**)&al_get_blend_color, "al_get_blend_color");
143         bindFunc(cast(void**)&al_set_separate_blender, "al_set_separate_blender");
144         bindFunc(cast(void**)&al_get_separate_blender, "al_get_separate_blender");
145         bindFunc(cast(void**)&al_clipboard_has_text, "al_clipboard_has_text");
146         bindFunc(cast(void**)&al_set_clipboard_text, "al_set_clipboard_text");
147         bindFunc(cast(void**)&al_clipboard_has_text, "al_clipboard_has_text");
148         bindFunc(cast(void**)&al_map_rgb, "al_map_rgb");
149         bindFunc(cast(void**)&al_map_rgba, "al_map_rgba");
150         bindFunc(cast(void**)&al_map_rgb_f, "al_map_rgb_f");
151         bindFunc(cast(void**)&al_map_rgba_f, "al_map_rgba_f");
152         bindFunc(cast(void**)&al_premul_rgba, "al_premul_rgba");
153         bindFunc(cast(void**)&al_premul_rgba_f, "al_premul_rgba_f");
154         bindFunc(cast(void**)&al_unmap_rgb, "al_unmap_rgb");
155         bindFunc(cast(void**)&al_unmap_rgba, "al_unmap_rgba");
156         bindFunc(cast(void**)&al_unmap_rgb_f, "al_unmap_rgb_f");
157         bindFunc(cast(void**)&al_unmap_rgba_f, "al_unmap_rgba_f");
158         bindFunc(cast(void**)&al_get_pixel_size, "al_get_pixel_size");
159         bindFunc(cast(void**)&al_get_pixel_format_bits, "al_get_pixel_format_bits");
160         bindFunc(cast(void**)&al_get_pixel_block_size, "al_get_pixel_block_size");
161         bindFunc(cast(void**)&al_get_pixel_block_width, "al_get_pixel_block_width");
162         bindFunc(cast(void**)&al_get_pixel_block_height, "al_get_pixel_block_height");
163         bindFunc(cast(void**)&al_create_config, "al_create_config");
164         bindFunc(cast(void**)&al_add_config_section, "al_add_config_section");
165         bindFunc(cast(void**)&al_set_config_value, "al_set_config_value");
166         bindFunc(cast(void**)&al_add_config_comment, "al_add_config_comment");
167         bindFunc(cast(void**)&al_get_config_value, "al_get_config_value");
168         bindFunc(cast(void**)&al_load_config_file, "al_load_config_file");
169         bindFunc(cast(void**)&al_load_config_file_f, "al_load_config_file_f");
170         bindFunc(cast(void**)&al_save_config_file, "al_save_config_file");
171         bindFunc(cast(void**)&al_save_config_file_f, "al_save_config_file_f");
172         bindFunc(cast(void**)&al_merge_config_into, "al_merge_config_into");
173         bindFunc(cast(void**)&al_merge_config, "al_merge_config");
174         bindFunc(cast(void**)&al_destroy_config, "al_destroy_config");
175         bindFunc(cast(void**)&al_remove_config_section, "al_remove_config_section");
176         bindFunc(cast(void**)&al_remove_config_key, "al_remove_config_key");
177         bindFunc(cast(void**)&al_get_first_config_section, "al_get_first_config_section");
178         bindFunc(cast(void**)&al_get_next_config_section, "al_get_next_config_section");
179         bindFunc(cast(void**)&al_get_first_config_entry, "al_get_first_config_entry");
180         bindFunc(cast(void**)&al_get_next_config_entry, "al_get_next_config_entry");
181         bindFunc(cast(void**)&al_get_cpu_count, "al_get_cpu_count");
182         bindFunc(cast(void**)&al_get_ram_size, "al_get_ram_size");
183         bindFunc(cast(void**)&al_set_new_display_refresh_rate, "al_set_new_display_refresh_rate");
184         bindFunc(cast(void**)&al_set_new_display_flags, "al_set_new_display_flags");
185         bindFunc(cast(void**)&al_get_new_display_refresh_rate, "al_get_new_display_refresh_rate");
186         bindFunc(cast(void**)&al_get_new_display_flags, "al_get_new_display_flags");
187         bindFunc(cast(void**)&al_get_display_width, "al_get_display_width");
188         bindFunc(cast(void**)&al_get_display_height, "al_get_display_height");
189         bindFunc(cast(void**)&al_get_display_format, "al_get_display_format");
190         bindFunc(cast(void**)&al_get_display_refresh_rate, "al_get_display_refresh_rate");
191         bindFunc(cast(void**)&al_get_display_flags, "al_get_display_flags");
192         bindFunc(cast(void**)&al_get_display_orientation, "al_get_display_orientation");
193         bindFunc(cast(void**)&al_set_display_flag, "al_set_display_flag");
194         bindFunc(cast(void**)&al_create_display, "al_create_display");
195         bindFunc(cast(void**)&al_destroy_display, "al_destroy_display");
196         bindFunc(cast(void**)&al_get_current_display, "al_get_current_display");
197         bindFunc(cast(void**)&al_set_target_bitmap, "al_set_target_bitmap");
198         bindFunc(cast(void**)&al_set_target_backbuffer, "al_set_target_backbuffer");
199         bindFunc(cast(void**)&al_get_backbuffer, "al_get_backbuffer");
200         bindFunc(cast(void**)&al_get_target_bitmap, "al_get_target_bitmap");
201         bindFunc(cast(void**)&al_acknowledge_resize, "al_acknowledge_resize");
202         bindFunc(cast(void**)&al_resize_display, "al_resize_display");
203         bindFunc(cast(void**)&al_flip_display, "al_flip_display");
204         bindFunc(cast(void**)&al_update_display_region, "al_update_display_region");
205         bindFunc(cast(void**)&al_is_compatible_bitmap, "al_is_compatible_bitmap");
206         bindFunc(cast(void**)&al_wait_for_vsync, "al_wait_for_vsync");
207         bindFunc(cast(void**)&al_get_display_event_source, "al_get_display_event_source");
208         bindFunc(cast(void**)&al_set_display_icon, "al_set_display_icon");
209         bindFunc(cast(void**)&al_set_display_icons, "al_set_display_icons");
210         bindFunc(cast(void**)&al_get_new_display_adapter, "al_get_new_display_adapter");
211         bindFunc(cast(void**)&al_set_new_display_adapter, "al_set_new_display_adapter");
212         bindFunc(cast(void**)&al_set_new_window_position, "al_set_new_window_position");
213         bindFunc(cast(void**)&al_get_new_window_position, "al_get_new_window_position");
214         bindFunc(cast(void**)&al_set_window_position, "al_set_window_position");
215         bindFunc(cast(void**)&al_get_window_position, "al_get_window_position");
216         bindFunc(cast(void**)&al_set_window_constraints, "al_set_window_constraints");
217         bindFunc(cast(void**)&al_get_window_constraints, "al_get_window_constraints");
218         bindFunc(cast(void**)&al_set_window_title, "al_set_window_title");
219         bindFunc(cast(void**)&al_set_new_display_option, "al_set_new_display_option");
220         bindFunc(cast(void**)&al_get_new_display_option, "al_get_new_display_option");
221         bindFunc(cast(void**)&al_reset_new_display_options, "al_reset_new_display_options");
222         bindFunc(cast(void**)&al_set_display_option, "al_set_display_option");
223         bindFunc(cast(void**)&al_get_display_option, "al_get_display_option");
224         bindFunc(cast(void**)&al_hold_bitmap_drawing, "al_hold_bitmap_drawing");
225         bindFunc(cast(void**)&al_is_bitmap_drawing_held, "al_is_bitmap_drawing_held");
226         bindFunc(cast(void**)&al_acknowledge_drawing_halt, "al_acknowledge_drawing_halt");
227         bindFunc(cast(void**)&al_acknowledge_drawing_resume, "al_acknowledge_drawing_resume");
228         bindFunc(cast(void**)&al_clear_to_color, "al_clear_to_color");
229         bindFunc(cast(void**)&al_clear_depth_buffer, "al_clear_depth_buffer");
230         bindFunc(cast(void**)&al_draw_pixel, "al_draw_pixel");
231         bindFunc(cast(void**)&al_get_errno, "al_get_errno");
232         bindFunc(cast(void**)&al_set_errno, "al_set_errno");
233         bindFunc(cast(void**)&al_init_user_event_source, "al_init_user_event_source");
234         bindFunc(cast(void**)&al_destroy_user_event_source, "al_destroy_user_event_source");
235         bindFunc(cast(void**)&al_emit_user_event, "al_emit_user_event");
236         bindFunc(cast(void**)&al_unref_user_event, "al_unref_user_event");
237         bindFunc(cast(void**)&al_set_event_source_data, "al_set_event_source_data");
238         bindFunc(cast(void**)&al_get_event_source_data, "al_get_event_source_data");
239         bindFunc(cast(void**)&al_create_event_queue, "al_create_event_queue");
240         bindFunc(cast(void**)&al_destroy_event_queue, "al_destroy_event_queue");
241         bindFunc(cast(void**)&al_is_event_source_registered, "al_is_event_source_registered");
242         bindFunc(cast(void**)&al_register_event_source, "al_register_event_source");
243         bindFunc(cast(void**)&al_unregister_event_source, "al_unregister_event_source");
244         bindFunc(cast(void**)&al_pause_event_queue, "al_pause_event_queue");
245         bindFunc(cast(void**)&al_is_event_queue_empty, "al_is_event_queue_empty");
246         bindFunc(cast(void**)&al_get_next_event, "al_get_next_event");
247         bindFunc(cast(void**)&al_peek_next_event, "al_peek_next_event");
248         bindFunc(cast(void**)&al_drop_next_event, "al_drop_next_event");
249         bindFunc(cast(void**)&al_flush_event_queue, "al_flush_event_queue");
250         bindFunc(cast(void**)&al_wait_for_event, "al_wait_for_event");
251         bindFunc(cast(void**)&al_wait_for_event_timed, "al_wait_for_event_timed");
252         bindFunc(cast(void**)&al_wait_for_event_until, "al_wait_for_event_until");
253         bindFunc(cast(void**)&al_fopen, "al_fopen");
254         bindFunc(cast(void**)&al_fopen_interface, "al_fopen_interface");
255         bindFunc(cast(void**)&al_create_file_handle, "al_create_file_handle");
256         bindFunc(cast(void**)&al_fclose, "al_fclose");
257         bindFunc(cast(void**)&al_fread, "al_fread");
258         bindFunc(cast(void**)&al_fwrite, "al_fwrite");
259         bindFunc(cast(void**)&al_fflush, "al_fflush");
260         bindFunc(cast(void**)&al_ftell, "al_ftell");
261         bindFunc(cast(void**)&al_fseek, "al_fseek");
262         bindFunc(cast(void**)&al_feof, "al_feof");
263         bindFunc(cast(void**)&al_ferror, "al_ferror");
264         bindFunc(cast(void**)&al_ferrmsg, "al_ferrmsg");
265         bindFunc(cast(void**)&al_fclearerr, "al_fclearerr");
266         bindFunc(cast(void**)&al_fungetc, "al_fungetc");
267         bindFunc(cast(void**)&al_fsize, "al_fsize");
268         bindFunc(cast(void**)&al_fgetc, "al_fgetc");
269         bindFunc(cast(void**)&al_fputc, "al_fputc");
270         bindFunc(cast(void**)&al_fread16le, "al_fread16le");
271         bindFunc(cast(void**)&al_fread16be, "al_fread16be");
272         bindFunc(cast(void**)&al_fwrite16le, "al_fwrite16le");
273         bindFunc(cast(void**)&al_fwrite16be, "al_fwrite16be");
274         bindFunc(cast(void**)&al_fread32le, "al_fread32le");
275         bindFunc(cast(void**)&al_fread32be, "al_fread32be");
276         bindFunc(cast(void**)&al_fwrite32le, "al_fwrite32le");
277         bindFunc(cast(void**)&al_fwrite32be, "al_fwrite32be");
278         bindFunc(cast(void**)&al_fgets, "al_fgets");
279         bindFunc(cast(void**)&al_fget_ustr, "al_fget_ustr");
280         bindFunc(cast(void**)&al_fputs, "al_fputs");
281         bindFunc(cast(void**)&al_fprintf, "al_fprintf");
282         bindFunc(cast(void**)&al_vfprintf, "al_vfprintf");
283         bindFunc(cast(void**)&al_fopen_fd, "al_fopen_fd");
284         bindFunc(cast(void**)&al_make_temp_file, "al_make_temp_file");
285         bindFunc(cast(void**)&al_fopen_slice, "al_fopen_slice");
286         bindFunc(cast(void**)&al_get_new_file_interface, "al_get_new_file_interface");
287         bindFunc(cast(void**)&al_set_new_file_interface, "al_set_new_file_interface");
288         bindFunc(cast(void**)&al_set_standard_file_interface, "al_set_standard_file_interface");
289         bindFunc(cast(void**)&al_get_file_userdata, "al_get_file_userdata");
290         bindFunc(cast(void**)&al_create_fs_entry, "al_create_fs_entry");
291         bindFunc(cast(void**)&al_destroy_fs_entry, "al_destroy_fs_entry");
292         bindFunc(cast(void**)&al_get_fs_entry_name, "al_get_fs_entry_name");
293         bindFunc(cast(void**)&al_update_fs_entry, "al_update_fs_entry");
294         bindFunc(cast(void**)&al_get_fs_entry_mode, "al_get_fs_entry_mode");
295         bindFunc(cast(void**)&al_get_fs_entry_atime, "al_get_fs_entry_atime");
296         bindFunc(cast(void**)&al_get_fs_entry_mtime, "al_get_fs_entry_mtime");
297         bindFunc(cast(void**)&al_get_fs_entry_ctime, "al_get_fs_entry_ctime");
298         bindFunc(cast(void**)&al_get_fs_entry_size, "al_get_fs_entry_size");
299         bindFunc(cast(void**)&al_fs_entry_exists, "al_fs_entry_exists");
300         bindFunc(cast(void**)&al_remove_fs_entry, "al_remove_fs_entry");
301         bindFunc(cast(void**)&al_open_directory, "al_open_directory");
302         bindFunc(cast(void**)&al_read_directory, "al_read_directory");
303         bindFunc(cast(void**)&al_close_directory, "al_close_directory");
304         bindFunc(cast(void**)&al_filename_exists, "al_filename_exists");
305         bindFunc(cast(void**)&al_remove_filename, "al_remove_filename");
306         bindFunc(cast(void**)&al_get_current_directory, "al_get_current_directory");
307         bindFunc(cast(void**)&al_change_directory, "al_change_directory");
308         bindFunc(cast(void**)&al_make_directory, "al_make_directory");
309         bindFunc(cast(void**)&al_open_fs_entry, "al_open_fs_entry");
310         bindFunc(cast(void**)&al_for_each_fs_entry, "al_for_each_fs_entry");
311         bindFunc(cast(void**)&al_get_fs_interface, "al_get_fs_interface");
312         bindFunc(cast(void**)&al_set_fs_interface, "al_set_fs_interface");
313         bindFunc(cast(void**)&al_set_standard_fs_interface, "al_set_standard_fs_interface");
314         bindFunc(cast(void**)&al_get_num_display_modes, "al_get_num_display_modes");
315         bindFunc(cast(void**)&al_get_display_mode, "al_get_display_mode");
316         bindFunc(cast(void**)&al_install_joystick, "al_install_joystick");
317         bindFunc(cast(void**)&al_uninstall_joystick, "al_uninstall_joystick");
318         bindFunc(cast(void**)&al_is_joystick_installed, "al_is_joystick_installed");
319         bindFunc(cast(void**)&al_reconfigure_joysticks, "al_reconfigure_joysticks");
320         bindFunc(cast(void**)&al_get_num_joysticks, "al_get_num_joysticks");
321         bindFunc(cast(void**)&al_get_joystick, "al_get_joystick");
322         bindFunc(cast(void**)&al_release_joystick, "al_release_joystick");
323         bindFunc(cast(void**)&al_get_joystick_active, "al_get_joystick_active");
324         bindFunc(cast(void**)&al_get_joystick_name, "al_get_joystick_name");
325         bindFunc(cast(void**)&al_get_joystick_num_sticks, "al_get_joystick_num_sticks");
326         bindFunc(cast(void**)&al_get_joystick_stick_flags, "al_get_joystick_stick_flags");
327         bindFunc(cast(void**)&al_get_joystick_stick_name, "al_get_joystick_stick_name");
328         bindFunc(cast(void**)&al_get_joystick_num_axes, "al_get_joystick_num_axes");
329         bindFunc(cast(void**)&al_get_joystick_axis_name, "al_get_joystick_axis_name");
330         bindFunc(cast(void**)&al_get_joystick_num_buttons, "al_get_joystick_num_buttons");
331         bindFunc(cast(void**)&al_get_joystick_button_name, "al_get_joystick_button_name");
332         bindFunc(cast(void**)&al_get_joystick_state, "al_get_joystick_state");
333         bindFunc(cast(void**)&al_get_joystick_event_source, "al_get_joystick_event_source");
334         bindFunc(cast(void**)&al_is_keyboard_installed, "al_is_keyboard_installed");
335         bindFunc(cast(void**)&al_install_keyboard, "al_install_keyboard");
336         bindFunc(cast(void**)&al_uninstall_keyboard, "al_uninstall_keyboard");
337         bindFunc(cast(void**)&al_set_keyboard_leds, "al_set_keyboard_leds");
338         bindFunc(cast(void**)&al_keycode_to_name, "al_keycode_to_name");
339         bindFunc(cast(void**)&al_get_keyboard_state, "al_get_keyboard_state");
340         bindFunc(cast(void**)&al_key_down, "al_key_down");
341         bindFunc(cast(void**)&al_get_keyboard_event_source, "al_get_keyboard_event_source");
342         bindFunc(cast(void**)&al_malloc_with_context, "al_malloc_with_context");
343         bindFunc(cast(void**)&al_free_with_context, "al_free_with_context");
344         bindFunc(cast(void**)&al_realloc_with_context, "al_realloc_with_context");
345         bindFunc(cast(void**)&al_calloc_with_context, "al_calloc_with_context");
346         bindFunc(cast(void**)&al_get_num_video_adapters, "al_get_num_video_adapters");
347         bindFunc(cast(void**)&al_get_monitor_info, "al_get_monitor_info");
348         bindFunc(cast(void**)&al_is_mouse_installed, "al_is_mouse_installed");
349         bindFunc(cast(void**)&al_install_mouse, "al_install_mouse");
350         bindFunc(cast(void**)&al_uninstall_mouse, "al_uninstall_mouse");
351         bindFunc(cast(void**)&al_get_mouse_num_buttons, "al_get_mouse_num_buttons");
352         bindFunc(cast(void**)&al_get_mouse_num_axes, "al_get_mouse_num_axes");
353         bindFunc(cast(void**)&al_set_mouse_xy, "al_set_mouse_xy");
354         bindFunc(cast(void**)&al_set_mouse_z, "al_set_mouse_z");
355         bindFunc(cast(void**)&al_set_mouse_w, "al_set_mouse_w");
356         bindFunc(cast(void**)&al_set_mouse_axis, "al_set_mouse_axis");
357         bindFunc(cast(void**)&al_get_mouse_state, "al_get_mouse_state");
358         bindFunc(cast(void**)&al_mouse_button_down, "al_mouse_button_down");
359         bindFunc(cast(void**)&al_get_mouse_state_axis, "al_get_mouse_state_axis");
360         bindFunc(cast(void**)&al_get_mouse_cursor_position, "al_get_mouse_cursor_position");
361         bindFunc(cast(void**)&al_grab_mouse, "al_grab_mouse");
362         bindFunc(cast(void**)&al_ungrab_mouse, "al_ungrab_mouse");
363         bindFunc(cast(void**)&al_set_mouse_wheel_precision, "al_set_mouse_wheel_precision");
364         bindFunc(cast(void**)&al_get_mouse_wheel_precision, "al_get_mouse_wheel_precision");
365         bindFunc(cast(void**)&al_get_mouse_event_source, "al_get_mouse_event_source");
366         bindFunc(cast(void**)&al_create_mouse_cursor, "al_create_mouse_cursor");
367         bindFunc(cast(void**)&al_destroy_mouse_cursor, "al_destroy_mouse_cursor");
368         bindFunc(cast(void**)&al_set_mouse_cursor, "al_set_mouse_cursor");
369         bindFunc(cast(void**)&al_set_system_mouse_cursor, "al_set_system_mouse_cursor");
370         bindFunc(cast(void**)&al_show_mouse_cursor, "al_show_mouse_cursor");
371         bindFunc(cast(void**)&al_hide_mouse_cursor, "al_hide_mouse_cursor");
372         bindFunc(cast(void**)&al_create_path, "al_create_path");
373         bindFunc(cast(void**)&al_create_path_for_directory, "al_create_path_for_directory");
374         bindFunc(cast(void**)&al_clone_path, "al_clone_path");
375         bindFunc(cast(void**)&al_get_path_num_components, "al_get_path_num_components");
376         bindFunc(cast(void**)&al_get_path_component, "al_get_path_component");
377         bindFunc(cast(void**)&al_replace_path_component, "al_replace_path_component");
378         bindFunc(cast(void**)&al_remove_path_component, "al_remove_path_component");
379         bindFunc(cast(void**)&al_insert_path_component, "al_insert_path_component");
380         bindFunc(cast(void**)&al_get_path_tail, "al_get_path_tail");
381         bindFunc(cast(void**)&al_drop_path_tail, "al_drop_path_tail");
382         bindFunc(cast(void**)&al_append_path_component, "al_append_path_component");
383         bindFunc(cast(void**)&al_join_paths, "al_join_paths");
384         bindFunc(cast(void**)&al_rebase_path, "al_rebase_path");
385         bindFunc(cast(void**)&al_path_cstr, "al_path_cstr");
386         bindFunc(cast(void**)&al_destroy_path, "al_destroy_path");
387         bindFunc(cast(void**)&al_set_path_drive, "al_set_path_drive");
388         bindFunc(cast(void**)&al_get_path_drive, "al_get_path_drive");
389         bindFunc(cast(void**)&al_set_path_filename, "al_set_path_filename");
390         bindFunc(cast(void**)&al_get_path_filename, "al_get_path_filename");
391         bindFunc(cast(void**)&al_get_path_extension, "al_get_path_extension");
392         bindFunc(cast(void**)&al_set_path_extension, "al_set_path_extension");
393         bindFunc(cast(void**)&al_get_path_basename, "al_get_path_basename");
394         bindFunc(cast(void**)&al_make_path_canonical, "al_make_path_canonical");
395         bindFunc(cast(void**)&al_set_render_state, "al_set_render_state");
396         bindFunc(cast(void**)&al_create_shader, "al_create_shader");
397         bindFunc(cast(void**)&al_attach_shader_source, "al_attach_shader_source");
398         bindFunc(cast(void**)&al_attach_shader_source_file, "al_attach_shader_source_file");
399         bindFunc(cast(void**)&al_build_shader, "al_build_shader");
400         bindFunc(cast(void**)&al_get_shader_log, "al_get_shader_log");
401         bindFunc(cast(void**)&al_get_shader_platform, "al_get_shader_platform");
402         bindFunc(cast(void**)&al_use_shader, "al_use_shader");
403         bindFunc(cast(void**)&al_destroy_shader, "al_destroy_shader");
404         bindFunc(cast(void**)&al_set_shader_sampler, "al_set_shader_sampler");
405         bindFunc(cast(void**)&al_set_shader_matrix, "al_set_shader_matrix");
406         bindFunc(cast(void**)&al_set_shader_int, "al_set_shader_int");
407         bindFunc(cast(void**)&al_set_shader_float, "al_set_shader_float");
408         bindFunc(cast(void**)&al_set_shader_int_vector, "al_set_shader_int_vector");
409         bindFunc(cast(void**)&al_set_shader_float_vector, "al_set_shader_float_vector");
410         bindFunc(cast(void**)&al_set_shader_bool, "al_set_shader_bool");
411         bindFunc(cast(void**)&al_get_default_shader_source, "al_get_default_shader_source");
412         bindFunc(cast(void**)&al_install_system, "al_install_system");
413         bindFunc(cast(void**)&al_uninstall_system, "al_uninstall_system");
414         bindFunc(cast(void**)&al_is_system_installed, "al_is_system_installed");
415         bindFunc(cast(void**)&al_get_system_driver, "al_get_system_driver");
416         bindFunc(cast(void**)&al_get_system_config, "al_get_system_config");
417         bindFunc(cast(void**)&al_get_standard_path, "al_get_standard_path");
418         bindFunc(cast(void**)&al_set_exe_name, "al_set_exe_name");
419         bindFunc(cast(void**)&al_set_org_name, "al_set_org_name");
420         bindFunc(cast(void**)&al_set_app_name, "al_set_app_name");
421         bindFunc(cast(void**)&al_get_org_name, "al_get_org_name");
422         bindFunc(cast(void**)&al_get_app_name, "al_get_app_name");
423         bindFunc(cast(void**)&al_inhibit_screensaver, "al_inhibit_screensaver");
424         bindFunc(cast(void**)&al_create_thread, "al_create_thread");
425         bindFunc(cast(void**)&al_start_thread, "al_start_thread");
426         bindFunc(cast(void**)&al_join_thread, "al_join_thread");
427         bindFunc(cast(void**)&al_set_thread_should_stop, "al_set_thread_should_stop");
428         bindFunc(cast(void**)&al_get_thread_should_stop, "al_get_thread_should_stop");
429         bindFunc(cast(void**)&al_destroy_thread, "al_destroy_thread");
430         bindFunc(cast(void**)&al_run_detached_thread, "al_run_detached_thread");
431         bindFunc(cast(void**)&al_create_mutex, "al_create_mutex");
432         bindFunc(cast(void**)&al_create_mutex_recursive, "al_create_mutex_recursive");
433         bindFunc(cast(void**)&al_lock_mutex, "al_lock_mutex");
434         bindFunc(cast(void**)&al_unlock_mutex, "al_unlock_mutex");
435         bindFunc(cast(void**)&al_destroy_mutex, "al_destroy_mutex");
436         bindFunc(cast(void**)&al_create_cond, "al_create_cond");
437         bindFunc(cast(void**)&al_destroy_cond, "al_destroy_cond");
438         bindFunc(cast(void**)&al_wait_cond, "al_wait_cond");
439         bindFunc(cast(void**)&al_wait_cond_until, "al_wait_cond_until");
440         bindFunc(cast(void**)&al_broadcast_cond, "al_broadcast_cond");
441         bindFunc(cast(void**)&al_signal_cond, "al_signal_cond");
442         bindFunc(cast(void**)&al_create_timer, "al_create_timer");
443         bindFunc(cast(void**)&al_destroy_timer, "al_destroy_timer");
444         bindFunc(cast(void**)&al_start_timer, "al_start_timer");
445         bindFunc(cast(void**)&al_stop_timer, "al_stop_timer");
446         bindFunc(cast(void**)&al_resume_timer, "al_resume_timer");
447         bindFunc(cast(void**)&al_get_timer_started, "al_get_timer_started");
448         bindFunc(cast(void**)&al_get_timer_speed, "al_get_timer_speed");
449         bindFunc(cast(void**)&al_set_timer_speed, "al_set_timer_speed");
450         bindFunc(cast(void**)&al_get_timer_count, "al_get_timer_count");
451         bindFunc(cast(void**)&al_set_timer_count, "al_set_timer_count");
452         bindFunc(cast(void**)&al_add_timer_count, "al_add_timer_count");
453         bindFunc(cast(void**)&al_get_timer_event_source, "al_get_timer_event_source");
454         bindFunc(cast(void**)&al_store_state, "al_store_state");
455         bindFunc(cast(void**)&al_restore_state, "al_restore_state");
456         bindFunc(cast(void**)&al_is_touch_input_installed, "al_is_touch_input_installed");
457         bindFunc(cast(void**)&al_install_touch_input, "al_install_touch_input");
458         bindFunc(cast(void**)&al_uninstall_touch_input, "al_uninstall_touch_input");
459         bindFunc(cast(void**)&al_get_touch_input_state, "al_get_touch_input_state");
460         bindFunc(cast(void**)&al_get_touch_input_event_source, "al_get_touch_input_event_source");
461         bindFunc(cast(void**)&al_use_transform, "al_use_transform");
462         bindFunc(cast(void**)&al_use_projection_transform, "al_use_projection_transform");
463         bindFunc(cast(void**)&al_copy_transform, "al_copy_transform");
464         bindFunc(cast(void**)&al_identity_transform, "al_identity_transform");
465         bindFunc(cast(void**)&al_build_transform, "al_build_transform");
466         bindFunc(cast(void**)&al_build_camera_transform, "al_build_camera_transform");
467         bindFunc(cast(void**)&al_translate_transform, "al_translate_transform");
468         bindFunc(cast(void**)&al_translate_transform_3d, "al_translate_transform_3d");
469         bindFunc(cast(void**)&al_rotate_transform, "al_rotate_transform");
470         bindFunc(cast(void**)&al_rotate_transform_3d, "al_rotate_transform_3d");
471         bindFunc(cast(void**)&al_scale_transform, "al_scale_transform");
472         bindFunc(cast(void**)&al_scale_transform_3d, "al_scale_transform_3d");
473         bindFunc(cast(void**)&al_transform_coordinates, "al_transform_coordinates");
474         bindFunc(cast(void**)&al_transform_coordinates_3d, "al_transform_coordinates_3d");
475         bindFunc(cast(void**)&al_compose_transform, "al_compose_transform");
476         bindFunc(cast(void**)&al_get_current_transform, "al_get_current_transform");
477         bindFunc(cast(void**)&al_get_current_inverse_transform, "al_get_current_inverse_transform");
478         bindFunc(cast(void**)&al_get_current_projection_transform, "al_get_current_projection_transform");
479         bindFunc(cast(void**)&al_invert_transform, "al_invert_transform");
480         bindFunc(cast(void**)&al_check_inverse, "al_check_inverse");
481         bindFunc(cast(void**)&al_orthographic_transform, "al_orthographic_transform");
482         bindFunc(cast(void**)&al_perspective_transform, "al_perspective_transform");
483         bindFunc(cast(void**)&al_horizontal_shear_transform, "al_horizontal_shear_transform");
484         bindFunc(cast(void**)&al_vertical_shear_transform, "al_vertical_shear_transform");
485         bindFunc(cast(void**)&al_ustr_new, "al_ustr_new");
486         bindFunc(cast(void**)&al_ustr_new_from_buffer, "al_ustr_new_from_buffer");
487         bindFunc(cast(void**)&al_ustr_newf, "al_ustr_newf");
488         bindFunc(cast(void**)&al_ustr_free, "al_ustr_free");
489         bindFunc(cast(void**)&al_cstr, "al_cstr");
490         bindFunc(cast(void**)&al_ustr_to_buffer, "al_ustr_to_buffer");
491         bindFunc(cast(void**)&al_cstr_dup, "al_cstr_dup");
492         bindFunc(cast(void**)&al_ustr_dup, "al_ustr_dup");
493         bindFunc(cast(void**)&al_ustr_dup_substr, "al_ustr_dup_substr");
494         bindFunc(cast(void**)&al_ustr_empty_string, "al_ustr_empty_string");
495         bindFunc(cast(void**)&al_ref_cstr, "al_ref_cstr");
496         bindFunc(cast(void**)&al_ref_buffer, "al_ref_buffer");
497         bindFunc(cast(void**)&al_ref_ustr, "al_ref_ustr");
498         bindFunc(cast(void**)&al_ustr_size, "al_ustr_size");
499         bindFunc(cast(void**)&al_ustr_length, "al_ustr_length");
500         bindFunc(cast(void**)&al_ustr_offset, "al_ustr_offset");
501         bindFunc(cast(void**)&al_ustr_next, "al_ustr_next");
502         bindFunc(cast(void**)&al_ustr_prev, "al_ustr_prev");
503         bindFunc(cast(void**)&al_ustr_get, "al_ustr_get");
504         bindFunc(cast(void**)&al_ustr_get_next, "al_ustr_get_next");
505         bindFunc(cast(void**)&al_ustr_prev_get, "al_ustr_prev_get");
506         bindFunc(cast(void**)&al_ustr_insert, "al_ustr_insert");
507         bindFunc(cast(void**)&al_ustr_insert_cstr, "al_ustr_insert_cstr");
508         bindFunc(cast(void**)&al_ustr_insert_chr, "al_ustr_insert_chr");
509         bindFunc(cast(void**)&al_ustr_append, "al_ustr_append");
510         bindFunc(cast(void**)&al_ustr_append_cstr, "al_ustr_append_cstr");
511         bindFunc(cast(void**)&al_ustr_append_chr, "al_ustr_append_chr");
512         bindFunc(cast(void**)&al_ustr_appendf, "al_ustr_appendf");
513         bindFunc(cast(void**)&al_ustr_vappendf, "al_ustr_vappendf");
514         bindFunc(cast(void**)&al_ustr_remove_chr, "al_ustr_remove_chr");
515         bindFunc(cast(void**)&al_ustr_remove_range, "al_ustr_remove_range");
516         bindFunc(cast(void**)&al_ustr_truncate, "al_ustr_truncate");
517         bindFunc(cast(void**)&al_ustr_ltrim_ws, "al_ustr_ltrim_ws");
518         bindFunc(cast(void**)&al_ustr_rtrim_ws, "al_ustr_rtrim_ws");
519         bindFunc(cast(void**)&al_ustr_trim_ws, "al_ustr_trim_ws");
520         bindFunc(cast(void**)&al_ustr_assign, "al_ustr_assign");
521         bindFunc(cast(void**)&al_ustr_assign_substr, "al_ustr_assign_substr");
522         bindFunc(cast(void**)&al_ustr_assign_cstr, "al_ustr_assign_cstr");
523         bindFunc(cast(void**)&al_ustr_set_chr, "al_ustr_set_chr");
524         bindFunc(cast(void**)&al_ustr_replace_range, "al_ustr_replace_range");
525         bindFunc(cast(void**)&al_ustr_find_chr, "al_ustr_find_chr");
526         bindFunc(cast(void**)&al_ustr_rfind_chr, "al_ustr_rfind_chr");
527         bindFunc(cast(void**)&al_ustr_find_set, "al_ustr_find_set");
528         bindFunc(cast(void**)&al_ustr_find_set_cstr, "al_ustr_find_set_cstr");
529         bindFunc(cast(void**)&al_ustr_find_cset, "al_ustr_find_cset");
530         bindFunc(cast(void**)&al_ustr_find_cset_cstr, "al_ustr_find_cset_cstr");
531         bindFunc(cast(void**)&al_ustr_find_str, "al_ustr_find_str");
532         bindFunc(cast(void**)&al_ustr_find_cstr, "al_ustr_find_cstr");
533         bindFunc(cast(void**)&al_ustr_rfind_str, "al_ustr_rfind_str");
534         bindFunc(cast(void**)&al_ustr_rfind_cstr, "al_ustr_rfind_cstr");
535         bindFunc(cast(void**)&al_compose_transform, "al_compose_transform");
536         bindFunc(cast(void**)&al_ustr_find_replace, "al_ustr_find_replace");
537         bindFunc(cast(void**)&al_ustr_find_replace_cstr, "al_ustr_find_replace_cstr");
538         bindFunc(cast(void**)&al_ustr_equal, "al_ustr_equal");
539         bindFunc(cast(void**)&al_ustr_compare, "al_ustr_compare");
540         bindFunc(cast(void**)&al_ustr_ncompare, "al_ustr_ncompare");
541         bindFunc(cast(void**)&al_ustr_has_prefix, "al_ustr_has_prefix");
542         bindFunc(cast(void**)&al_ustr_has_prefix_cstr, "al_ustr_has_prefix_cstr");
543         bindFunc(cast(void**)&al_ustr_has_suffix, "al_ustr_has_suffix");
544         bindFunc(cast(void**)&al_ustr_has_suffix_cstr, "al_ustr_has_suffix_cstr");
545         bindFunc(cast(void**)&al_utf8_width, "al_utf8_width");
546         bindFunc(cast(void**)&al_utf8_encode, "al_utf8_encode");
547         bindFunc(cast(void**)&al_ustr_new_from_utf16, "al_ustr_new_from_utf16");
548         bindFunc(cast(void**)&al_ustr_size_utf16, "al_ustr_size_utf16");
549         bindFunc(cast(void**)&al_ustr_encode_utf16, "al_ustr_encode_utf16");
550         bindFunc(cast(void**)&al_utf16_width, "al_utf16_width");
551         bindFunc(cast(void**)&al_utf16_encode, "al_utf16_encode");
552     }
553 }
554 
555 __gshared DerelictAllegro5Loader DerelictAllegro5;
556 
557 shared static this() {
558     DerelictAllegro5 = new DerelictAllegro5Loader;
559 }