sdl2-bindings 0.0.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,114 @@
1
+ # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl2-bindings
4
+ #
5
+ # [NOTICE] This is an automatically generated file.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL2
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ SDL_MAX_LOG_MESSAGE = 4096
14
+
15
+ # Enum
16
+
17
+ SDL_LOG_CATEGORY_APPLICATION = 0
18
+ SDL_LOG_CATEGORY_ERROR = 1
19
+ SDL_LOG_CATEGORY_ASSERT = 2
20
+ SDL_LOG_CATEGORY_SYSTEM = 3
21
+ SDL_LOG_CATEGORY_AUDIO = 4
22
+ SDL_LOG_CATEGORY_VIDEO = 5
23
+ SDL_LOG_CATEGORY_RENDER = 6
24
+ SDL_LOG_CATEGORY_INPUT = 7
25
+ SDL_LOG_CATEGORY_TEST = 8
26
+ SDL_LOG_CATEGORY_RESERVED1 = 9
27
+ SDL_LOG_CATEGORY_RESERVED2 = 10
28
+ SDL_LOG_CATEGORY_RESERVED3 = 11
29
+ SDL_LOG_CATEGORY_RESERVED4 = 12
30
+ SDL_LOG_CATEGORY_RESERVED5 = 13
31
+ SDL_LOG_CATEGORY_RESERVED6 = 14
32
+ SDL_LOG_CATEGORY_RESERVED7 = 15
33
+ SDL_LOG_CATEGORY_RESERVED8 = 16
34
+ SDL_LOG_CATEGORY_RESERVED9 = 17
35
+ SDL_LOG_CATEGORY_RESERVED10 = 18
36
+ SDL_LOG_CATEGORY_CUSTOM = 19
37
+ SDL_LOG_PRIORITY_VERBOSE = 1
38
+ SDL_LOG_PRIORITY_DEBUG = 2
39
+ SDL_LOG_PRIORITY_INFO = 3
40
+ SDL_LOG_PRIORITY_WARN = 4
41
+ SDL_LOG_PRIORITY_ERROR = 5
42
+ SDL_LOG_PRIORITY_CRITICAL = 6
43
+ SDL_NUM_LOG_PRIORITIES = 7
44
+
45
+ # Typedef
46
+
47
+ typedef :int, :SDL_LogPriority
48
+ callback :SDL_LogOutputFunction, [:pointer, :int, :int, :pointer], :void
49
+
50
+ # Struct
51
+
52
+
53
+ # Function
54
+
55
+ def self.setup_log_symbols()
56
+ symbols = [
57
+ :SDL_LogSetAllPriority,
58
+ :SDL_LogSetPriority,
59
+ :SDL_LogGetPriority,
60
+ :SDL_LogResetPriorities,
61
+ :SDL_Log,
62
+ :SDL_LogVerbose,
63
+ :SDL_LogDebug,
64
+ :SDL_LogInfo,
65
+ :SDL_LogWarn,
66
+ :SDL_LogError,
67
+ :SDL_LogCritical,
68
+ :SDL_LogMessage,
69
+ :SDL_LogGetOutputFunction,
70
+ :SDL_LogSetOutputFunction,
71
+ ]
72
+ args = {
73
+ :SDL_LogSetAllPriority => [:int],
74
+ :SDL_LogSetPriority => [:int, :int],
75
+ :SDL_LogGetPriority => [:int],
76
+ :SDL_LogResetPriorities => [],
77
+ :SDL_Log => [:pointer],
78
+ :SDL_LogVerbose => [:int, :pointer],
79
+ :SDL_LogDebug => [:int, :pointer],
80
+ :SDL_LogInfo => [:int, :pointer],
81
+ :SDL_LogWarn => [:int, :pointer],
82
+ :SDL_LogError => [:int, :pointer],
83
+ :SDL_LogCritical => [:int, :pointer],
84
+ :SDL_LogMessage => [:int, :int, :pointer],
85
+ :SDL_LogGetOutputFunction => [:pointer, :pointer],
86
+ :SDL_LogSetOutputFunction => [:pointer, :pointer],
87
+ }
88
+ retvals = {
89
+ :SDL_LogSetAllPriority => :void,
90
+ :SDL_LogSetPriority => :void,
91
+ :SDL_LogGetPriority => :int,
92
+ :SDL_LogResetPriorities => :void,
93
+ :SDL_Log => :void,
94
+ :SDL_LogVerbose => :void,
95
+ :SDL_LogDebug => :void,
96
+ :SDL_LogInfo => :void,
97
+ :SDL_LogWarn => :void,
98
+ :SDL_LogError => :void,
99
+ :SDL_LogCritical => :void,
100
+ :SDL_LogMessage => :void,
101
+ :SDL_LogGetOutputFunction => :void,
102
+ :SDL_LogSetOutputFunction => :void,
103
+ }
104
+ symbols.each do |sym|
105
+ begin
106
+ attach_function sym, args[sym], retvals[sym]
107
+ rescue FFI::NotFoundError => error
108
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
109
+ end
110
+ end
111
+ end
112
+
113
+ end
114
+
@@ -0,0 +1,67 @@
1
+ # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl2-bindings
4
+ #
5
+ # [NOTICE] This is an automatically generated file.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL2
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
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 = ( SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR )
23
+
24
+ # Enum
25
+
26
+
27
+ # Typedef
28
+
29
+
30
+ # Struct
31
+
32
+
33
+ # Function
34
+
35
+ def self.setup_main_symbols()
36
+ symbols = [
37
+ :SDL_Init,
38
+ :SDL_InitSubSystem,
39
+ :SDL_QuitSubSystem,
40
+ :SDL_WasInit,
41
+ :SDL_Quit,
42
+ ]
43
+ args = {
44
+ :SDL_Init => [:uint],
45
+ :SDL_InitSubSystem => [:uint],
46
+ :SDL_QuitSubSystem => [:uint],
47
+ :SDL_WasInit => [:uint],
48
+ :SDL_Quit => [],
49
+ }
50
+ retvals = {
51
+ :SDL_Init => :int,
52
+ :SDL_InitSubSystem => :int,
53
+ :SDL_QuitSubSystem => :void,
54
+ :SDL_WasInit => :uint,
55
+ :SDL_Quit => :void,
56
+ }
57
+ symbols.each do |sym|
58
+ begin
59
+ attach_function sym, args[sym], retvals[sym]
60
+ rescue FFI::NotFoundError => error
61
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+
@@ -0,0 +1,96 @@
1
+ # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl2-bindings
4
+ #
5
+ # [NOTICE] This is an automatically generated file.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL2
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ SDL_MESSAGEBOX_ERROR = 16
17
+ SDL_MESSAGEBOX_WARNING = 32
18
+ SDL_MESSAGEBOX_INFORMATION = 64
19
+ SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 1
20
+ SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 2
21
+ SDL_MESSAGEBOX_COLOR_BACKGROUND = 0
22
+ SDL_MESSAGEBOX_COLOR_TEXT = 1
23
+ SDL_MESSAGEBOX_COLOR_BUTTON_BORDER = 2
24
+ SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND = 3
25
+ SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED = 4
26
+ SDL_MESSAGEBOX_COLOR_MAX = 5
27
+
28
+ # Typedef
29
+
30
+ typedef :int, :SDL_MessageBoxFlags
31
+ typedef :int, :SDL_MessageBoxButtonFlags
32
+ typedef :int, :SDL_MessageBoxColorType
33
+
34
+ # Struct
35
+
36
+ class SDL_MessageBoxButtonData < FFI::Struct
37
+ layout(
38
+ :flags, :uint,
39
+ :buttonid, :int,
40
+ :text, :pointer,
41
+ )
42
+ end
43
+
44
+ class SDL_MessageBoxColor < FFI::Struct
45
+ layout(
46
+ :r, :uchar,
47
+ :g, :uchar,
48
+ :b, :uchar,
49
+ )
50
+ end
51
+
52
+ class SDL_MessageBoxColorScheme < FFI::Struct
53
+ layout(
54
+ :colors, [SDL_MessageBoxColor, 5],
55
+ )
56
+ end
57
+
58
+ class SDL_MessageBoxData < FFI::Struct
59
+ layout(
60
+ :flags, :uint,
61
+ :window, :pointer,
62
+ :title, :pointer,
63
+ :message, :pointer,
64
+ :numbuttons, :int,
65
+ :buttons, :pointer,
66
+ :colorScheme, :pointer,
67
+ )
68
+ end
69
+
70
+
71
+ # Function
72
+
73
+ def self.setup_messagebox_symbols()
74
+ symbols = [
75
+ :SDL_ShowMessageBox,
76
+ :SDL_ShowSimpleMessageBox,
77
+ ]
78
+ args = {
79
+ :SDL_ShowMessageBox => [:pointer, :pointer],
80
+ :SDL_ShowSimpleMessageBox => [:uint, :pointer, :pointer, :pointer],
81
+ }
82
+ retvals = {
83
+ :SDL_ShowMessageBox => :int,
84
+ :SDL_ShowSimpleMessageBox => :int,
85
+ }
86
+ symbols.each do |sym|
87
+ begin
88
+ attach_function sym, args[sym], retvals[sym]
89
+ rescue FFI::NotFoundError => error
90
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
91
+ end
92
+ end
93
+ end
94
+
95
+ end
96
+
@@ -0,0 +1,304 @@
1
+ # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl2-bindings
4
+ #
5
+ # [NOTICE] This is an automatically generated file.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL2
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ MIX_INIT_FLAC = 1
17
+ MIX_INIT_MOD = 2
18
+ MIX_INIT_MP3 = 8
19
+ MIX_INIT_OGG = 16
20
+ MIX_INIT_MID = 32
21
+ MIX_INIT_OPUS = 64
22
+ MIX_NO_FADING = 0
23
+ MIX_FADING_OUT = 1
24
+ MIX_FADING_IN = 2
25
+ MUS_NONE = 0
26
+ MUS_CMD = 1
27
+ MUS_WAV = 2
28
+ MUS_MOD = 3
29
+ MUS_MID = 4
30
+ MUS_OGG = 5
31
+ MUS_MP3 = 6
32
+ MUS_MP3_MAD_UNUSED = 7
33
+ MUS_FLAC = 8
34
+ MUS_MODPLUG_UNUSED = 9
35
+ MUS_OPUS = 10
36
+
37
+ # Typedef
38
+
39
+ typedef :int, :MIX_InitFlags
40
+ typedef :int, :Mix_Fading
41
+ typedef :int, :Mix_MusicType
42
+ callback :Mix_EffectFunc_t, [:int, :pointer, :int, :pointer], :void
43
+ callback :Mix_EffectDone_t, [:int, :pointer], :void
44
+
45
+ # Struct
46
+
47
+ class Mix_Chunk < FFI::Struct
48
+ layout(
49
+ :allocated, :int,
50
+ :abuf, :pointer,
51
+ :alen, :uint,
52
+ :volume, :uchar,
53
+ )
54
+ end
55
+
56
+
57
+ # Function
58
+
59
+ def self.setup_mixer_symbols()
60
+ symbols = [
61
+ :Mix_Linked_Version,
62
+ :Mix_Init,
63
+ :Mix_Quit,
64
+ :Mix_OpenAudio,
65
+ :Mix_OpenAudioDevice,
66
+ :Mix_AllocateChannels,
67
+ :Mix_QuerySpec,
68
+ :Mix_LoadWAV_RW,
69
+ :Mix_LoadMUS,
70
+ :Mix_LoadMUS_RW,
71
+ :Mix_LoadMUSType_RW,
72
+ :Mix_QuickLoad_WAV,
73
+ :Mix_QuickLoad_RAW,
74
+ :Mix_FreeChunk,
75
+ :Mix_FreeMusic,
76
+ :Mix_GetNumChunkDecoders,
77
+ :Mix_GetChunkDecoder,
78
+ :Mix_HasChunkDecoder,
79
+ :Mix_GetNumMusicDecoders,
80
+ :Mix_GetMusicDecoder,
81
+ :Mix_HasMusicDecoder,
82
+ :Mix_GetMusicType,
83
+ :Mix_SetPostMix,
84
+ :Mix_HookMusic,
85
+ :Mix_HookMusicFinished,
86
+ :Mix_GetMusicHookData,
87
+ :Mix_ChannelFinished,
88
+ :Mix_RegisterEffect,
89
+ :Mix_UnregisterEffect,
90
+ :Mix_UnregisterAllEffects,
91
+ :Mix_SetPanning,
92
+ :Mix_SetPosition,
93
+ :Mix_SetDistance,
94
+ :Mix_SetReverseStereo,
95
+ :Mix_ReserveChannels,
96
+ :Mix_GroupChannel,
97
+ :Mix_GroupChannels,
98
+ :Mix_GroupAvailable,
99
+ :Mix_GroupCount,
100
+ :Mix_GroupOldest,
101
+ :Mix_GroupNewer,
102
+ :Mix_PlayChannelTimed,
103
+ :Mix_PlayMusic,
104
+ :Mix_FadeInMusic,
105
+ :Mix_FadeInMusicPos,
106
+ :Mix_FadeInChannelTimed,
107
+ :Mix_Volume,
108
+ :Mix_VolumeChunk,
109
+ :Mix_VolumeMusic,
110
+ :Mix_HaltChannel,
111
+ :Mix_HaltGroup,
112
+ :Mix_HaltMusic,
113
+ :Mix_ExpireChannel,
114
+ :Mix_FadeOutChannel,
115
+ :Mix_FadeOutGroup,
116
+ :Mix_FadeOutMusic,
117
+ :Mix_FadingMusic,
118
+ :Mix_FadingChannel,
119
+ :Mix_Pause,
120
+ :Mix_Resume,
121
+ :Mix_Paused,
122
+ :Mix_PauseMusic,
123
+ :Mix_ResumeMusic,
124
+ :Mix_RewindMusic,
125
+ :Mix_PausedMusic,
126
+ :Mix_SetMusicPosition,
127
+ :Mix_Playing,
128
+ :Mix_PlayingMusic,
129
+ :Mix_SetMusicCMD,
130
+ :Mix_SetSynchroValue,
131
+ :Mix_GetSynchroValue,
132
+ :Mix_SetSoundFonts,
133
+ :Mix_GetSoundFonts,
134
+ :Mix_EachSoundFont,
135
+ :Mix_GetChunk,
136
+ :Mix_CloseAudio,
137
+ ]
138
+ args = {
139
+ :Mix_Linked_Version => [],
140
+ :Mix_Init => [:int],
141
+ :Mix_Quit => [],
142
+ :Mix_OpenAudio => [:int, :ushort, :int, :int],
143
+ :Mix_OpenAudioDevice => [:int, :ushort, :int, :int, :pointer, :int],
144
+ :Mix_AllocateChannels => [:int],
145
+ :Mix_QuerySpec => [:pointer, :pointer, :pointer],
146
+ :Mix_LoadWAV_RW => [:pointer, :int],
147
+ :Mix_LoadMUS => [:pointer],
148
+ :Mix_LoadMUS_RW => [:pointer, :int],
149
+ :Mix_LoadMUSType_RW => [:pointer, :int, :int],
150
+ :Mix_QuickLoad_WAV => [:pointer],
151
+ :Mix_QuickLoad_RAW => [:pointer, :uint],
152
+ :Mix_FreeChunk => [:pointer],
153
+ :Mix_FreeMusic => [:pointer],
154
+ :Mix_GetNumChunkDecoders => [],
155
+ :Mix_GetChunkDecoder => [:int],
156
+ :Mix_HasChunkDecoder => [:pointer],
157
+ :Mix_GetNumMusicDecoders => [],
158
+ :Mix_GetMusicDecoder => [:int],
159
+ :Mix_HasMusicDecoder => [:pointer],
160
+ :Mix_GetMusicType => [:pointer],
161
+ :Mix_SetPostMix => [:pointer, :pointer],
162
+ :Mix_HookMusic => [:pointer, :pointer],
163
+ :Mix_HookMusicFinished => [:pointer],
164
+ :Mix_GetMusicHookData => [],
165
+ :Mix_ChannelFinished => [:pointer],
166
+ :Mix_RegisterEffect => [:int, :pointer, :pointer, :pointer],
167
+ :Mix_UnregisterEffect => [:int, :pointer],
168
+ :Mix_UnregisterAllEffects => [:int],
169
+ :Mix_SetPanning => [:int, :uchar, :uchar],
170
+ :Mix_SetPosition => [:int, :short, :uchar],
171
+ :Mix_SetDistance => [:int, :uchar],
172
+ :Mix_SetReverseStereo => [:int, :int],
173
+ :Mix_ReserveChannels => [:int],
174
+ :Mix_GroupChannel => [:int, :int],
175
+ :Mix_GroupChannels => [:int, :int, :int],
176
+ :Mix_GroupAvailable => [:int],
177
+ :Mix_GroupCount => [:int],
178
+ :Mix_GroupOldest => [:int],
179
+ :Mix_GroupNewer => [:int],
180
+ :Mix_PlayChannelTimed => [:int, :pointer, :int, :int],
181
+ :Mix_PlayMusic => [:pointer, :int],
182
+ :Mix_FadeInMusic => [:pointer, :int, :int],
183
+ :Mix_FadeInMusicPos => [:pointer, :int, :int, :double],
184
+ :Mix_FadeInChannelTimed => [:int, :pointer, :int, :int, :int],
185
+ :Mix_Volume => [:int, :int],
186
+ :Mix_VolumeChunk => [:pointer, :int],
187
+ :Mix_VolumeMusic => [:int],
188
+ :Mix_HaltChannel => [:int],
189
+ :Mix_HaltGroup => [:int],
190
+ :Mix_HaltMusic => [],
191
+ :Mix_ExpireChannel => [:int, :int],
192
+ :Mix_FadeOutChannel => [:int, :int],
193
+ :Mix_FadeOutGroup => [:int, :int],
194
+ :Mix_FadeOutMusic => [:int],
195
+ :Mix_FadingMusic => [],
196
+ :Mix_FadingChannel => [:int],
197
+ :Mix_Pause => [:int],
198
+ :Mix_Resume => [:int],
199
+ :Mix_Paused => [:int],
200
+ :Mix_PauseMusic => [],
201
+ :Mix_ResumeMusic => [],
202
+ :Mix_RewindMusic => [],
203
+ :Mix_PausedMusic => [],
204
+ :Mix_SetMusicPosition => [:double],
205
+ :Mix_Playing => [:int],
206
+ :Mix_PlayingMusic => [],
207
+ :Mix_SetMusicCMD => [:pointer],
208
+ :Mix_SetSynchroValue => [:int],
209
+ :Mix_GetSynchroValue => [],
210
+ :Mix_SetSoundFonts => [:pointer],
211
+ :Mix_GetSoundFonts => [],
212
+ :Mix_EachSoundFont => [:pointer, :pointer],
213
+ :Mix_GetChunk => [:int],
214
+ :Mix_CloseAudio => [],
215
+ }
216
+ retvals = {
217
+ :Mix_Linked_Version => :pointer,
218
+ :Mix_Init => :int,
219
+ :Mix_Quit => :void,
220
+ :Mix_OpenAudio => :int,
221
+ :Mix_OpenAudioDevice => :int,
222
+ :Mix_AllocateChannels => :int,
223
+ :Mix_QuerySpec => :int,
224
+ :Mix_LoadWAV_RW => :pointer,
225
+ :Mix_LoadMUS => :pointer,
226
+ :Mix_LoadMUS_RW => :pointer,
227
+ :Mix_LoadMUSType_RW => :pointer,
228
+ :Mix_QuickLoad_WAV => :pointer,
229
+ :Mix_QuickLoad_RAW => :pointer,
230
+ :Mix_FreeChunk => :void,
231
+ :Mix_FreeMusic => :void,
232
+ :Mix_GetNumChunkDecoders => :int,
233
+ :Mix_GetChunkDecoder => :pointer,
234
+ :Mix_HasChunkDecoder => :int,
235
+ :Mix_GetNumMusicDecoders => :int,
236
+ :Mix_GetMusicDecoder => :pointer,
237
+ :Mix_HasMusicDecoder => :int,
238
+ :Mix_GetMusicType => :int,
239
+ :Mix_SetPostMix => :void,
240
+ :Mix_HookMusic => :void,
241
+ :Mix_HookMusicFinished => :void,
242
+ :Mix_GetMusicHookData => :pointer,
243
+ :Mix_ChannelFinished => :void,
244
+ :Mix_RegisterEffect => :int,
245
+ :Mix_UnregisterEffect => :int,
246
+ :Mix_UnregisterAllEffects => :int,
247
+ :Mix_SetPanning => :int,
248
+ :Mix_SetPosition => :int,
249
+ :Mix_SetDistance => :int,
250
+ :Mix_SetReverseStereo => :int,
251
+ :Mix_ReserveChannels => :int,
252
+ :Mix_GroupChannel => :int,
253
+ :Mix_GroupChannels => :int,
254
+ :Mix_GroupAvailable => :int,
255
+ :Mix_GroupCount => :int,
256
+ :Mix_GroupOldest => :int,
257
+ :Mix_GroupNewer => :int,
258
+ :Mix_PlayChannelTimed => :int,
259
+ :Mix_PlayMusic => :int,
260
+ :Mix_FadeInMusic => :int,
261
+ :Mix_FadeInMusicPos => :int,
262
+ :Mix_FadeInChannelTimed => :int,
263
+ :Mix_Volume => :int,
264
+ :Mix_VolumeChunk => :int,
265
+ :Mix_VolumeMusic => :int,
266
+ :Mix_HaltChannel => :int,
267
+ :Mix_HaltGroup => :int,
268
+ :Mix_HaltMusic => :int,
269
+ :Mix_ExpireChannel => :int,
270
+ :Mix_FadeOutChannel => :int,
271
+ :Mix_FadeOutGroup => :int,
272
+ :Mix_FadeOutMusic => :int,
273
+ :Mix_FadingMusic => :int,
274
+ :Mix_FadingChannel => :int,
275
+ :Mix_Pause => :void,
276
+ :Mix_Resume => :void,
277
+ :Mix_Paused => :int,
278
+ :Mix_PauseMusic => :void,
279
+ :Mix_ResumeMusic => :void,
280
+ :Mix_RewindMusic => :void,
281
+ :Mix_PausedMusic => :int,
282
+ :Mix_SetMusicPosition => :int,
283
+ :Mix_Playing => :int,
284
+ :Mix_PlayingMusic => :int,
285
+ :Mix_SetMusicCMD => :int,
286
+ :Mix_SetSynchroValue => :int,
287
+ :Mix_GetSynchroValue => :int,
288
+ :Mix_SetSoundFonts => :int,
289
+ :Mix_GetSoundFonts => :pointer,
290
+ :Mix_EachSoundFont => :int,
291
+ :Mix_GetChunk => :pointer,
292
+ :Mix_CloseAudio => :void,
293
+ }
294
+ symbols.each do |sym|
295
+ begin
296
+ attach_function sym, args[sym], retvals[sym]
297
+ rescue FFI::NotFoundError => error
298
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
299
+ end
300
+ end
301
+ end
302
+
303
+ end
304
+