sdl3-bindings 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +159 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +132 -0
  5. data/lib/sdl3.rb +150 -0
  6. data/lib/sdl3_assert.rb +61 -0
  7. data/lib/sdl3_asyncio.rb +68 -0
  8. data/lib/sdl3_atomic.rb +64 -0
  9. data/lib/sdl3_audio.rb +120 -0
  10. data/lib/sdl3_bits.rb +38 -0
  11. data/lib/sdl3_blendmode.rb +63 -0
  12. data/lib/sdl3_camera.rb +67 -0
  13. data/lib/sdl3_clipboard.rb +49 -0
  14. data/lib/sdl3_cpuinfo.rb +55 -0
  15. data/lib/sdl3_dialog.rb +60 -0
  16. data/lib/sdl3_endian.rb +39 -0
  17. data/lib/sdl3_error.rb +41 -0
  18. data/lib/sdl3_events.rb +680 -0
  19. data/lib/sdl3_filesystem.rb +82 -0
  20. data/lib/sdl3_gamepad.rb +216 -0
  21. data/lib/sdl3_gpu.rb +836 -0
  22. data/lib/sdl3_guid.rb +44 -0
  23. data/lib/sdl3_haptic.rb +209 -0
  24. data/lib/sdl3_hidapi.rb +84 -0
  25. data/lib/sdl3_hints.rb +285 -0
  26. data/lib/sdl3_image.rb +108 -0
  27. data/lib/sdl3_init.rb +71 -0
  28. data/lib/sdl3_iostream.rb +115 -0
  29. data/lib/sdl3_joystick.rb +174 -0
  30. data/lib/sdl3_keyboard.rb +81 -0
  31. data/lib/sdl3_keycode.rb +310 -0
  32. data/lib/sdl3_loadso.rb +39 -0
  33. data/lib/sdl3_locale.rb +44 -0
  34. data/lib/sdl3_log.rb +85 -0
  35. data/lib/sdl3_messagebox.rb +88 -0
  36. data/lib/sdl3_misc.rb +37 -0
  37. data/lib/sdl3_mixer.rb +179 -0
  38. data/lib/sdl3_mouse.rb +90 -0
  39. data/lib/sdl3_mutex.rb +77 -0
  40. data/lib/sdl3_pen.rb +56 -0
  41. data/lib/sdl3_pixels.rb +296 -0
  42. data/lib/sdl3_platform.rb +37 -0
  43. data/lib/sdl3_power.rb +44 -0
  44. data/lib/sdl3_process.rb +65 -0
  45. data/lib/sdl3_properties.rb +67 -0
  46. data/lib/sdl3_rect.rb +98 -0
  47. data/lib/sdl3_render.rb +240 -0
  48. data/lib/sdl3_revision.rb +37 -0
  49. data/lib/sdl3_scancode.rb +286 -0
  50. data/lib/sdl3_sensor.rb +61 -0
  51. data/lib/sdl3_sound.rb +98 -0
  52. data/lib/sdl3_stdinc.rb +229 -0
  53. data/lib/sdl3_storage.rb +70 -0
  54. data/lib/sdl3_surface.rb +122 -0
  55. data/lib/sdl3_thread.rb +65 -0
  56. data/lib/sdl3_time.rb +66 -0
  57. data/lib/sdl3_timer.rb +54 -0
  58. data/lib/sdl3_touch.rb +56 -0
  59. data/lib/sdl3_tray.rb +66 -0
  60. data/lib/sdl3_ttf.rb +216 -0
  61. data/lib/sdl3_version.rb +41 -0
  62. data/lib/sdl3_video.rb +341 -0
  63. data/lib/sdl3_vulkan.rb +46 -0
  64. metadata +118 -0
@@ -0,0 +1,286 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ SCANCODE_UNKNOWN = 0
17
+ SCANCODE_A = 4
18
+ SCANCODE_B = 5
19
+ SCANCODE_C = 6
20
+ SCANCODE_D = 7
21
+ SCANCODE_E = 8
22
+ SCANCODE_F = 9
23
+ SCANCODE_G = 10
24
+ SCANCODE_H = 11
25
+ SCANCODE_I = 12
26
+ SCANCODE_J = 13
27
+ SCANCODE_K = 14
28
+ SCANCODE_L = 15
29
+ SCANCODE_M = 16
30
+ SCANCODE_N = 17
31
+ SCANCODE_O = 18
32
+ SCANCODE_P = 19
33
+ SCANCODE_Q = 20
34
+ SCANCODE_R = 21
35
+ SCANCODE_S = 22
36
+ SCANCODE_T = 23
37
+ SCANCODE_U = 24
38
+ SCANCODE_V = 25
39
+ SCANCODE_W = 26
40
+ SCANCODE_X = 27
41
+ SCANCODE_Y = 28
42
+ SCANCODE_Z = 29
43
+ SCANCODE_1 = 30
44
+ SCANCODE_2 = 31
45
+ SCANCODE_3 = 32
46
+ SCANCODE_4 = 33
47
+ SCANCODE_5 = 34
48
+ SCANCODE_6 = 35
49
+ SCANCODE_7 = 36
50
+ SCANCODE_8 = 37
51
+ SCANCODE_9 = 38
52
+ SCANCODE_0 = 39
53
+ SCANCODE_RETURN = 40
54
+ SCANCODE_ESCAPE = 41
55
+ SCANCODE_BACKSPACE = 42
56
+ SCANCODE_TAB = 43
57
+ SCANCODE_SPACE = 44
58
+ SCANCODE_MINUS = 45
59
+ SCANCODE_EQUALS = 46
60
+ SCANCODE_LEFTBRACKET = 47
61
+ SCANCODE_RIGHTBRACKET = 48
62
+ SCANCODE_BACKSLASH = 49
63
+ SCANCODE_NONUSHASH = 50
64
+ SCANCODE_SEMICOLON = 51
65
+ SCANCODE_APOSTROPHE = 52
66
+ SCANCODE_GRAVE = 53
67
+ SCANCODE_COMMA = 54
68
+ SCANCODE_PERIOD = 55
69
+ SCANCODE_SLASH = 56
70
+ SCANCODE_CAPSLOCK = 57
71
+ SCANCODE_F1 = 58
72
+ SCANCODE_F2 = 59
73
+ SCANCODE_F3 = 60
74
+ SCANCODE_F4 = 61
75
+ SCANCODE_F5 = 62
76
+ SCANCODE_F6 = 63
77
+ SCANCODE_F7 = 64
78
+ SCANCODE_F8 = 65
79
+ SCANCODE_F9 = 66
80
+ SCANCODE_F10 = 67
81
+ SCANCODE_F11 = 68
82
+ SCANCODE_F12 = 69
83
+ SCANCODE_PRINTSCREEN = 70
84
+ SCANCODE_SCROLLLOCK = 71
85
+ SCANCODE_PAUSE = 72
86
+ SCANCODE_INSERT = 73
87
+ SCANCODE_HOME = 74
88
+ SCANCODE_PAGEUP = 75
89
+ SCANCODE_DELETE = 76
90
+ SCANCODE_END = 77
91
+ SCANCODE_PAGEDOWN = 78
92
+ SCANCODE_RIGHT = 79
93
+ SCANCODE_LEFT = 80
94
+ SCANCODE_DOWN = 81
95
+ SCANCODE_UP = 82
96
+ SCANCODE_NUMLOCKCLEAR = 83
97
+ SCANCODE_KP_DIVIDE = 84
98
+ SCANCODE_KP_MULTIPLY = 85
99
+ SCANCODE_KP_MINUS = 86
100
+ SCANCODE_KP_PLUS = 87
101
+ SCANCODE_KP_ENTER = 88
102
+ SCANCODE_KP_1 = 89
103
+ SCANCODE_KP_2 = 90
104
+ SCANCODE_KP_3 = 91
105
+ SCANCODE_KP_4 = 92
106
+ SCANCODE_KP_5 = 93
107
+ SCANCODE_KP_6 = 94
108
+ SCANCODE_KP_7 = 95
109
+ SCANCODE_KP_8 = 96
110
+ SCANCODE_KP_9 = 97
111
+ SCANCODE_KP_0 = 98
112
+ SCANCODE_KP_PERIOD = 99
113
+ SCANCODE_NONUSBACKSLASH = 100
114
+ SCANCODE_APPLICATION = 101
115
+ SCANCODE_POWER = 102
116
+ SCANCODE_KP_EQUALS = 103
117
+ SCANCODE_F13 = 104
118
+ SCANCODE_F14 = 105
119
+ SCANCODE_F15 = 106
120
+ SCANCODE_F16 = 107
121
+ SCANCODE_F17 = 108
122
+ SCANCODE_F18 = 109
123
+ SCANCODE_F19 = 110
124
+ SCANCODE_F20 = 111
125
+ SCANCODE_F21 = 112
126
+ SCANCODE_F22 = 113
127
+ SCANCODE_F23 = 114
128
+ SCANCODE_F24 = 115
129
+ SCANCODE_EXECUTE = 116
130
+ SCANCODE_HELP = 117
131
+ SCANCODE_MENU = 118
132
+ SCANCODE_SELECT = 119
133
+ SCANCODE_STOP = 120
134
+ SCANCODE_AGAIN = 121
135
+ SCANCODE_UNDO = 122
136
+ SCANCODE_CUT = 123
137
+ SCANCODE_COPY = 124
138
+ SCANCODE_PASTE = 125
139
+ SCANCODE_FIND = 126
140
+ SCANCODE_MUTE = 127
141
+ SCANCODE_VOLUMEUP = 128
142
+ SCANCODE_VOLUMEDOWN = 129
143
+ SCANCODE_KP_COMMA = 133
144
+ SCANCODE_KP_EQUALSAS400 = 134
145
+ SCANCODE_INTERNATIONAL1 = 135
146
+ SCANCODE_INTERNATIONAL2 = 136
147
+ SCANCODE_INTERNATIONAL3 = 137
148
+ SCANCODE_INTERNATIONAL4 = 138
149
+ SCANCODE_INTERNATIONAL5 = 139
150
+ SCANCODE_INTERNATIONAL6 = 140
151
+ SCANCODE_INTERNATIONAL7 = 141
152
+ SCANCODE_INTERNATIONAL8 = 142
153
+ SCANCODE_INTERNATIONAL9 = 143
154
+ SCANCODE_LANG1 = 144
155
+ SCANCODE_LANG2 = 145
156
+ SCANCODE_LANG3 = 146
157
+ SCANCODE_LANG4 = 147
158
+ SCANCODE_LANG5 = 148
159
+ SCANCODE_LANG6 = 149
160
+ SCANCODE_LANG7 = 150
161
+ SCANCODE_LANG8 = 151
162
+ SCANCODE_LANG9 = 152
163
+ SCANCODE_ALTERASE = 153
164
+ SCANCODE_SYSREQ = 154
165
+ SCANCODE_CANCEL = 155
166
+ SCANCODE_CLEAR = 156
167
+ SCANCODE_PRIOR = 157
168
+ SCANCODE_RETURN2 = 158
169
+ SCANCODE_SEPARATOR = 159
170
+ SCANCODE_OUT = 160
171
+ SCANCODE_OPER = 161
172
+ SCANCODE_CLEARAGAIN = 162
173
+ SCANCODE_CRSEL = 163
174
+ SCANCODE_EXSEL = 164
175
+ SCANCODE_KP_00 = 176
176
+ SCANCODE_KP_000 = 177
177
+ SCANCODE_THOUSANDSSEPARATOR = 178
178
+ SCANCODE_DECIMALSEPARATOR = 179
179
+ SCANCODE_CURRENCYUNIT = 180
180
+ SCANCODE_CURRENCYSUBUNIT = 181
181
+ SCANCODE_KP_LEFTPAREN = 182
182
+ SCANCODE_KP_RIGHTPAREN = 183
183
+ SCANCODE_KP_LEFTBRACE = 184
184
+ SCANCODE_KP_RIGHTBRACE = 185
185
+ SCANCODE_KP_TAB = 186
186
+ SCANCODE_KP_BACKSPACE = 187
187
+ SCANCODE_KP_A = 188
188
+ SCANCODE_KP_B = 189
189
+ SCANCODE_KP_C = 190
190
+ SCANCODE_KP_D = 191
191
+ SCANCODE_KP_E = 192
192
+ SCANCODE_KP_F = 193
193
+ SCANCODE_KP_XOR = 194
194
+ SCANCODE_KP_POWER = 195
195
+ SCANCODE_KP_PERCENT = 196
196
+ SCANCODE_KP_LESS = 197
197
+ SCANCODE_KP_GREATER = 198
198
+ SCANCODE_KP_AMPERSAND = 199
199
+ SCANCODE_KP_DBLAMPERSAND = 200
200
+ SCANCODE_KP_VERTICALBAR = 201
201
+ SCANCODE_KP_DBLVERTICALBAR = 202
202
+ SCANCODE_KP_COLON = 203
203
+ SCANCODE_KP_HASH = 204
204
+ SCANCODE_KP_SPACE = 205
205
+ SCANCODE_KP_AT = 206
206
+ SCANCODE_KP_EXCLAM = 207
207
+ SCANCODE_KP_MEMSTORE = 208
208
+ SCANCODE_KP_MEMRECALL = 209
209
+ SCANCODE_KP_MEMCLEAR = 210
210
+ SCANCODE_KP_MEMADD = 211
211
+ SCANCODE_KP_MEMSUBTRACT = 212
212
+ SCANCODE_KP_MEMMULTIPLY = 213
213
+ SCANCODE_KP_MEMDIVIDE = 214
214
+ SCANCODE_KP_PLUSMINUS = 215
215
+ SCANCODE_KP_CLEAR = 216
216
+ SCANCODE_KP_CLEARENTRY = 217
217
+ SCANCODE_KP_BINARY = 218
218
+ SCANCODE_KP_OCTAL = 219
219
+ SCANCODE_KP_DECIMAL = 220
220
+ SCANCODE_KP_HEXADECIMAL = 221
221
+ SCANCODE_LCTRL = 224
222
+ SCANCODE_LSHIFT = 225
223
+ SCANCODE_LALT = 226
224
+ SCANCODE_LGUI = 227
225
+ SCANCODE_RCTRL = 228
226
+ SCANCODE_RSHIFT = 229
227
+ SCANCODE_RALT = 230
228
+ SCANCODE_RGUI = 231
229
+ SCANCODE_MODE = 257
230
+ SCANCODE_SLEEP = 258
231
+ SCANCODE_WAKE = 259
232
+ SCANCODE_CHANNEL_INCREMENT = 260
233
+ SCANCODE_CHANNEL_DECREMENT = 261
234
+ SCANCODE_MEDIA_PLAY = 262
235
+ SCANCODE_MEDIA_PAUSE = 263
236
+ SCANCODE_MEDIA_RECORD = 264
237
+ SCANCODE_MEDIA_FAST_FORWARD = 265
238
+ SCANCODE_MEDIA_REWIND = 266
239
+ SCANCODE_MEDIA_NEXT_TRACK = 267
240
+ SCANCODE_MEDIA_PREVIOUS_TRACK = 268
241
+ SCANCODE_MEDIA_STOP = 269
242
+ SCANCODE_MEDIA_EJECT = 270
243
+ SCANCODE_MEDIA_PLAY_PAUSE = 271
244
+ SCANCODE_MEDIA_SELECT = 272
245
+ SCANCODE_AC_NEW = 273
246
+ SCANCODE_AC_OPEN = 274
247
+ SCANCODE_AC_CLOSE = 275
248
+ SCANCODE_AC_EXIT = 276
249
+ SCANCODE_AC_SAVE = 277
250
+ SCANCODE_AC_PRINT = 278
251
+ SCANCODE_AC_PROPERTIES = 279
252
+ SCANCODE_AC_SEARCH = 280
253
+ SCANCODE_AC_HOME = 281
254
+ SCANCODE_AC_BACK = 282
255
+ SCANCODE_AC_FORWARD = 283
256
+ SCANCODE_AC_STOP = 284
257
+ SCANCODE_AC_REFRESH = 285
258
+ SCANCODE_AC_BOOKMARKS = 286
259
+ SCANCODE_SOFTLEFT = 287
260
+ SCANCODE_SOFTRIGHT = 288
261
+ SCANCODE_CALL = 289
262
+ SCANCODE_ENDCALL = 290
263
+ SCANCODE_RESERVED = 400
264
+ SCANCODE_COUNT = 512
265
+
266
+ # Typedef
267
+
268
+ typedef :int, :SDL_Scancode
269
+
270
+ # Struct
271
+
272
+
273
+ # Function
274
+
275
+ def self.setup_scancode_symbols(output_error = false)
276
+ entries = [
277
+ ]
278
+ entries.each do |entry|
279
+ attach_function entry[0], entry[1], entry[2], entry[3]
280
+ rescue FFI::NotFoundError => e
281
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
282
+ end
283
+ end
284
+
285
+ end
286
+
@@ -0,0 +1,61 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ STANDARD_GRAVITY = 9.80665
14
+
15
+ # Enum
16
+
17
+ SENSOR_INVALID = -1
18
+ SENSOR_UNKNOWN = 0
19
+ SENSOR_ACCEL = 1
20
+ SENSOR_GYRO = 2
21
+ SENSOR_ACCEL_L = 3
22
+ SENSOR_GYRO_L = 4
23
+ SENSOR_ACCEL_R = 5
24
+ SENSOR_GYRO_R = 6
25
+
26
+ # Typedef
27
+
28
+ typedef :uint, :SDL_SensorID
29
+ typedef :int, :SDL_SensorType
30
+
31
+ # Struct
32
+
33
+
34
+ # Function
35
+
36
+ def self.setup_sensor_symbols(output_error = false)
37
+ entries = [
38
+ [:GetSensors, :SDL_GetSensors, [:pointer], :pointer],
39
+ [:GetSensorNameForID, :SDL_GetSensorNameForID, [:uint], :pointer],
40
+ [:GetSensorTypeForID, :SDL_GetSensorTypeForID, [:uint], :int],
41
+ [:GetSensorNonPortableTypeForID, :SDL_GetSensorNonPortableTypeForID, [:uint], :int],
42
+ [:OpenSensor, :SDL_OpenSensor, [:uint], :pointer],
43
+ [:GetSensorFromID, :SDL_GetSensorFromID, [:uint], :pointer],
44
+ [:GetSensorProperties, :SDL_GetSensorProperties, [:pointer], :uint],
45
+ [:GetSensorName, :SDL_GetSensorName, [:pointer], :pointer],
46
+ [:GetSensorType, :SDL_GetSensorType, [:pointer], :int],
47
+ [:GetSensorNonPortableType, :SDL_GetSensorNonPortableType, [:pointer], :int],
48
+ [:GetSensorID, :SDL_GetSensorID, [:pointer], :uint],
49
+ [:GetSensorData, :SDL_GetSensorData, [:pointer, :pointer, :int], :bool],
50
+ [:CloseSensor, :SDL_CloseSensor, [:pointer], :void],
51
+ [:UpdateSensors, :SDL_UpdateSensors, [], :void],
52
+ ]
53
+ entries.each do |entry|
54
+ attach_function entry[0], entry[1], entry[2], entry[3]
55
+ rescue FFI::NotFoundError => e
56
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
57
+ end
58
+ end
59
+
60
+ end
61
+
data/lib/sdl3_sound.rb ADDED
@@ -0,0 +1,98 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ SOUND_VER_MAJOR = 3
14
+ SOUND_VER_MINOR = 0
15
+ SOUND_VER_PATCH = 0
16
+
17
+ # Enum
18
+
19
+ SOUND_SAMPLEFLAG_NONE = 0
20
+ SOUND_SAMPLEFLAG_CANSEEK = 1
21
+ SOUND_SAMPLEFLAG_EOF = 536870912
22
+ SOUND_SAMPLEFLAG_ERROR = 1073741824
23
+ SOUND_SAMPLEFLAG_EAGAIN = -2147483648
24
+
25
+ # Typedef
26
+
27
+ typedef :int, :Sound_SampleFlags
28
+
29
+ # Struct
30
+
31
+ class Sound_AudioInfo < FFI::Struct
32
+ layout(
33
+ :format, :ushort,
34
+ :channels, :uchar,
35
+ :rate, :uint,
36
+ )
37
+ end
38
+
39
+ class Sound_DecoderInfo < FFI::Struct
40
+ layout(
41
+ :extensions, :pointer,
42
+ :description, :pointer,
43
+ :author, :pointer,
44
+ :url, :pointer,
45
+ )
46
+ end
47
+
48
+ class Sound_Sample < FFI::Struct
49
+ layout(
50
+ :opaque, :pointer,
51
+ :decoder, :pointer,
52
+ :desired, Sound_AudioInfo,
53
+ :actual, Sound_AudioInfo,
54
+ :buffer, :pointer,
55
+ :buffer_size, :uint,
56
+ :flags, :int,
57
+ )
58
+ end
59
+
60
+ class Sound_Version < FFI::Struct
61
+ layout(
62
+ :major, :int,
63
+ :minor, :int,
64
+ :patch, :int,
65
+ )
66
+ end
67
+
68
+
69
+ # Function
70
+
71
+ def self.setup_sound_symbols(output_error = false)
72
+ entries = [
73
+ [:Sound_GetLinkedVersion, :Sound_GetLinkedVersion, [:pointer], :void],
74
+ [:Sound_Init, :Sound_Init, [], :int],
75
+ [:Sound_Quit, :Sound_Quit, [], :int],
76
+ [:Sound_AvailableDecoders, :Sound_AvailableDecoders, [], :pointer],
77
+ [:Sound_GetError, :Sound_GetError, [], :pointer],
78
+ [:Sound_ClearError, :Sound_ClearError, [], :void],
79
+ [:Sound_NewSample, :Sound_NewSample, [:pointer, :pointer, :pointer, :uint], :pointer],
80
+ [:Sound_NewSampleFromMem, :Sound_NewSampleFromMem, [:pointer, :uint, :pointer, :pointer, :uint], :pointer],
81
+ [:Sound_NewSampleFromFile, :Sound_NewSampleFromFile, [:pointer, :pointer, :uint], :pointer],
82
+ [:Sound_FreeSample, :Sound_FreeSample, [:pointer], :void],
83
+ [:Sound_GetDuration, :Sound_GetDuration, [:pointer], :int],
84
+ [:Sound_SetBufferSize, :Sound_SetBufferSize, [:pointer, :uint], :int],
85
+ [:Sound_Decode, :Sound_Decode, [:pointer], :uint],
86
+ [:Sound_DecodeAll, :Sound_DecodeAll, [:pointer], :uint],
87
+ [:Sound_Rewind, :Sound_Rewind, [:pointer], :int],
88
+ [:Sound_Seek, :Sound_Seek, [:pointer, :uint], :int],
89
+ ]
90
+ entries.each do |entry|
91
+ attach_function entry[0], entry[1], entry[2], entry[3]
92
+ rescue FFI::NotFoundError => e
93
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
94
+ end
95
+ end
96
+
97
+ end
98
+
@@ -0,0 +1,229 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+
17
+ # Typedef
18
+
19
+ typedef :char, :Sint8
20
+ typedef :uchar, :Uint8
21
+ typedef :short, :Sint16
22
+ typedef :ushort, :Uint16
23
+ typedef :int, :Sint32
24
+ typedef :uint, :Uint32
25
+ typedef :long_long, :Sint64
26
+ typedef :ulong_long, :Uint64
27
+ typedef :long_long, :SDL_Time
28
+ callback :SDL_malloc_func, [:ulong_long], :pointer
29
+ callback :SDL_calloc_func, [:ulong_long, :ulong_long], :pointer
30
+ callback :SDL_realloc_func, [:pointer, :ulong_long], :pointer
31
+ callback :SDL_free_func, [:pointer], :void
32
+ callback :SDL_CompareCallback, [:pointer, :pointer], :int
33
+ callback :SDL_CompareCallback_r, [:pointer, :pointer, :pointer], :int
34
+ typedef :pointer, :SDL_iconv_t
35
+ callback :SDL_FunctionPointer, [], :void
36
+
37
+ # Struct
38
+
39
+ class Alignment_test < FFI::Struct
40
+ layout(
41
+ :a, :uchar,
42
+ :b, :pointer,
43
+ )
44
+ end
45
+
46
+
47
+ # Function
48
+
49
+ def self.setup_stdinc_symbols(output_error = false)
50
+ entries = [
51
+ [:malloc, :SDL_malloc, [:ulong_long], :pointer],
52
+ [:calloc, :SDL_calloc, [:ulong_long, :ulong_long], :pointer],
53
+ [:realloc, :SDL_realloc, [:pointer, :ulong_long], :pointer],
54
+ [:free, :SDL_free, [:pointer], :void],
55
+ [:GetOriginalMemoryFunctions, :SDL_GetOriginalMemoryFunctions, [:pointer, :pointer, :pointer, :pointer], :void],
56
+ [:GetMemoryFunctions, :SDL_GetMemoryFunctions, [:pointer, :pointer, :pointer, :pointer], :void],
57
+ [:SetMemoryFunctions, :SDL_SetMemoryFunctions, [:SDL_malloc_func, :SDL_calloc_func, :SDL_realloc_func, :SDL_free_func], :bool],
58
+ [:aligned_alloc, :SDL_aligned_alloc, [:ulong_long, :ulong_long], :pointer],
59
+ [:aligned_free, :SDL_aligned_free, [:pointer], :void],
60
+ [:GetNumAllocations, :SDL_GetNumAllocations, [], :int],
61
+ [:GetEnvironment, :SDL_GetEnvironment, [], :pointer],
62
+ [:CreateEnvironment, :SDL_CreateEnvironment, [:bool], :pointer],
63
+ [:GetEnvironmentVariable, :SDL_GetEnvironmentVariable, [:pointer, :pointer], :pointer],
64
+ [:GetEnvironmentVariables, :SDL_GetEnvironmentVariables, [:pointer], :pointer],
65
+ [:SetEnvironmentVariable, :SDL_SetEnvironmentVariable, [:pointer, :pointer, :pointer, :bool], :bool],
66
+ [:UnsetEnvironmentVariable, :SDL_UnsetEnvironmentVariable, [:pointer, :pointer], :bool],
67
+ [:DestroyEnvironment, :SDL_DestroyEnvironment, [:pointer], :void],
68
+ [:getenv, :SDL_getenv, [:pointer], :pointer],
69
+ [:getenv_unsafe, :SDL_getenv_unsafe, [:pointer], :pointer],
70
+ [:setenv_unsafe, :SDL_setenv_unsafe, [:pointer, :pointer, :int], :int],
71
+ [:unsetenv_unsafe, :SDL_unsetenv_unsafe, [:pointer], :int],
72
+ [:qsort, :SDL_qsort, [:pointer, :ulong_long, :ulong_long, :SDL_CompareCallback], :void],
73
+ [:bsearch, :SDL_bsearch, [:pointer, :pointer, :ulong_long, :ulong_long, :SDL_CompareCallback], :pointer],
74
+ [:qsort_r, :SDL_qsort_r, [:pointer, :ulong_long, :ulong_long, :SDL_CompareCallback_r, :pointer], :void],
75
+ [:bsearch_r, :SDL_bsearch_r, [:pointer, :pointer, :ulong_long, :ulong_long, :SDL_CompareCallback_r, :pointer], :pointer],
76
+ [:abs, :SDL_abs, [:int], :int],
77
+ [:isalpha, :SDL_isalpha, [:int], :int],
78
+ [:isalnum, :SDL_isalnum, [:int], :int],
79
+ [:isblank, :SDL_isblank, [:int], :int],
80
+ [:iscntrl, :SDL_iscntrl, [:int], :int],
81
+ [:isdigit, :SDL_isdigit, [:int], :int],
82
+ [:isxdigit, :SDL_isxdigit, [:int], :int],
83
+ [:ispunct, :SDL_ispunct, [:int], :int],
84
+ [:isspace, :SDL_isspace, [:int], :int],
85
+ [:isupper, :SDL_isupper, [:int], :int],
86
+ [:islower, :SDL_islower, [:int], :int],
87
+ [:isprint, :SDL_isprint, [:int], :int],
88
+ [:isgraph, :SDL_isgraph, [:int], :int],
89
+ [:toupper, :SDL_toupper, [:int], :int],
90
+ [:tolower, :SDL_tolower, [:int], :int],
91
+ [:crc16, :SDL_crc16, [:ushort, :pointer, :ulong_long], :ushort],
92
+ [:crc32, :SDL_crc32, [:uint, :pointer, :ulong_long], :uint],
93
+ [:murmur3_32, :SDL_murmur3_32, [:pointer, :ulong_long, :uint], :uint],
94
+ [:memcpy, :SDL_memcpy, [:pointer, :pointer, :ulong_long], :pointer],
95
+ [:memmove, :SDL_memmove, [:pointer, :pointer, :ulong_long], :pointer],
96
+ [:memset, :SDL_memset, [:pointer, :int, :ulong_long], :pointer],
97
+ [:memcmp, :SDL_memcmp, [:pointer, :pointer, :ulong_long], :int],
98
+ [:wcslen, :SDL_wcslen, [:pointer], :ulong_long],
99
+ [:wcsnlen, :SDL_wcsnlen, [:pointer, :ulong_long], :ulong_long],
100
+ [:wcslcpy, :SDL_wcslcpy, [:pointer, :pointer, :ulong_long], :ulong_long],
101
+ [:wcslcat, :SDL_wcslcat, [:pointer, :pointer, :ulong_long], :ulong_long],
102
+ [:wcsdup, :SDL_wcsdup, [:pointer], :pointer],
103
+ [:wcsstr, :SDL_wcsstr, [:pointer, :pointer], :pointer],
104
+ [:wcsnstr, :SDL_wcsnstr, [:pointer, :pointer, :ulong_long], :pointer],
105
+ [:wcscmp, :SDL_wcscmp, [:pointer, :pointer], :int],
106
+ [:wcsncmp, :SDL_wcsncmp, [:pointer, :pointer, :ulong_long], :int],
107
+ [:wcscasecmp, :SDL_wcscasecmp, [:pointer, :pointer], :int],
108
+ [:wcsncasecmp, :SDL_wcsncasecmp, [:pointer, :pointer, :ulong_long], :int],
109
+ [:wcstol, :SDL_wcstol, [:pointer, :pointer, :int], :long],
110
+ [:strlen, :SDL_strlen, [:pointer], :ulong_long],
111
+ [:strnlen, :SDL_strnlen, [:pointer, :ulong_long], :ulong_long],
112
+ [:strlcpy, :SDL_strlcpy, [:pointer, :pointer, :ulong_long], :ulong_long],
113
+ [:utf8strlcpy, :SDL_utf8strlcpy, [:pointer, :pointer, :ulong_long], :ulong_long],
114
+ [:strlcat, :SDL_strlcat, [:pointer, :pointer, :ulong_long], :ulong_long],
115
+ [:strdup, :SDL_strdup, [:pointer], :pointer],
116
+ [:strndup, :SDL_strndup, [:pointer, :ulong_long], :pointer],
117
+ [:strrev, :SDL_strrev, [:pointer], :pointer],
118
+ [:strupr, :SDL_strupr, [:pointer], :pointer],
119
+ [:strlwr, :SDL_strlwr, [:pointer], :pointer],
120
+ [:strchr, :SDL_strchr, [:pointer, :int], :pointer],
121
+ [:strrchr, :SDL_strrchr, [:pointer, :int], :pointer],
122
+ [:strstr, :SDL_strstr, [:pointer, :pointer], :pointer],
123
+ [:strnstr, :SDL_strnstr, [:pointer, :pointer, :ulong_long], :pointer],
124
+ [:strcasestr, :SDL_strcasestr, [:pointer, :pointer], :pointer],
125
+ [:strtok_r, :SDL_strtok_r, [:pointer, :pointer, :pointer], :pointer],
126
+ [:utf8strlen, :SDL_utf8strlen, [:pointer], :ulong_long],
127
+ [:utf8strnlen, :SDL_utf8strnlen, [:pointer, :ulong_long], :ulong_long],
128
+ [:itoa, :SDL_itoa, [:int, :pointer, :int], :pointer],
129
+ [:uitoa, :SDL_uitoa, [:uint, :pointer, :int], :pointer],
130
+ [:ltoa, :SDL_ltoa, [:long, :pointer, :int], :pointer],
131
+ [:ultoa, :SDL_ultoa, [:ulong, :pointer, :int], :pointer],
132
+ [:lltoa, :SDL_lltoa, [:long_long, :pointer, :int], :pointer],
133
+ [:ulltoa, :SDL_ulltoa, [:ulong_long, :pointer, :int], :pointer],
134
+ [:atoi, :SDL_atoi, [:pointer], :int],
135
+ [:atof, :SDL_atof, [:pointer], :double],
136
+ [:strtol, :SDL_strtol, [:pointer, :pointer, :int], :long],
137
+ [:strtoul, :SDL_strtoul, [:pointer, :pointer, :int], :ulong],
138
+ [:strtoll, :SDL_strtoll, [:pointer, :pointer, :int], :long_long],
139
+ [:strtoull, :SDL_strtoull, [:pointer, :pointer, :int], :ulong_long],
140
+ [:strtod, :SDL_strtod, [:pointer, :pointer], :double],
141
+ [:strcmp, :SDL_strcmp, [:pointer, :pointer], :int],
142
+ [:strncmp, :SDL_strncmp, [:pointer, :pointer, :ulong_long], :int],
143
+ [:strcasecmp, :SDL_strcasecmp, [:pointer, :pointer], :int],
144
+ [:strncasecmp, :SDL_strncasecmp, [:pointer, :pointer, :ulong_long], :int],
145
+ [:strpbrk, :SDL_strpbrk, [:pointer, :pointer], :pointer],
146
+ [:StepUTF8, :SDL_StepUTF8, [:pointer, :pointer], :uint],
147
+ [:StepBackUTF8, :SDL_StepBackUTF8, [:pointer, :pointer], :uint],
148
+ [:UCS4ToUTF8, :SDL_UCS4ToUTF8, [:uint, :pointer], :pointer],
149
+ [:sscanf, :SDL_sscanf, [:pointer, :pointer], :int],
150
+ [:vsscanf, :SDL_vsscanf, [:pointer, :pointer, :pointer], :int],
151
+ [:snprintf, :SDL_snprintf, [:pointer, :ulong_long, :pointer], :int],
152
+ [:swprintf, :SDL_swprintf, [:pointer, :ulong_long, :pointer], :int],
153
+ [:vsnprintf, :SDL_vsnprintf, [:pointer, :ulong_long, :pointer, :pointer], :int],
154
+ [:vswprintf, :SDL_vswprintf, [:pointer, :ulong_long, :pointer, :pointer], :int],
155
+ [:asprintf, :SDL_asprintf, [:pointer, :pointer], :int],
156
+ [:vasprintf, :SDL_vasprintf, [:pointer, :pointer, :pointer], :int],
157
+ [:srand, :SDL_srand, [:ulong_long], :void],
158
+ [:rand, :SDL_rand, [:int], :int],
159
+ [:randf, :SDL_randf, [], :float],
160
+ [:rand_bits, :SDL_rand_bits, [], :uint],
161
+ [:rand_r, :SDL_rand_r, [:pointer, :int], :int],
162
+ [:randf_r, :SDL_randf_r, [:pointer], :float],
163
+ [:rand_bits_r, :SDL_rand_bits_r, [:pointer], :uint],
164
+ [:acos, :SDL_acos, [:double], :double],
165
+ [:acosf, :SDL_acosf, [:float], :float],
166
+ [:asin, :SDL_asin, [:double], :double],
167
+ [:asinf, :SDL_asinf, [:float], :float],
168
+ [:atan, :SDL_atan, [:double], :double],
169
+ [:atanf, :SDL_atanf, [:float], :float],
170
+ [:atan2, :SDL_atan2, [:double, :double], :double],
171
+ [:atan2f, :SDL_atan2f, [:float, :float], :float],
172
+ [:ceil, :SDL_ceil, [:double], :double],
173
+ [:ceilf, :SDL_ceilf, [:float], :float],
174
+ [:copysign, :SDL_copysign, [:double, :double], :double],
175
+ [:copysignf, :SDL_copysignf, [:float, :float], :float],
176
+ [:cos, :SDL_cos, [:double], :double],
177
+ [:cosf, :SDL_cosf, [:float], :float],
178
+ [:exp, :SDL_exp, [:double], :double],
179
+ [:expf, :SDL_expf, [:float], :float],
180
+ [:fabs, :SDL_fabs, [:double], :double],
181
+ [:fabsf, :SDL_fabsf, [:float], :float],
182
+ [:floor, :SDL_floor, [:double], :double],
183
+ [:floorf, :SDL_floorf, [:float], :float],
184
+ [:trunc, :SDL_trunc, [:double], :double],
185
+ [:truncf, :SDL_truncf, [:float], :float],
186
+ [:fmod, :SDL_fmod, [:double, :double], :double],
187
+ [:fmodf, :SDL_fmodf, [:float, :float], :float],
188
+ [:isinf, :SDL_isinf, [:double], :int],
189
+ [:isinff, :SDL_isinff, [:float], :int],
190
+ [:isnan, :SDL_isnan, [:double], :int],
191
+ [:isnanf, :SDL_isnanf, [:float], :int],
192
+ [:log, :SDL_log, [:double], :double],
193
+ [:logf, :SDL_logf, [:float], :float],
194
+ [:log10, :SDL_log10, [:double], :double],
195
+ [:log10f, :SDL_log10f, [:float], :float],
196
+ [:modf, :SDL_modf, [:double, :pointer], :double],
197
+ [:modff, :SDL_modff, [:float, :pointer], :float],
198
+ [:pow, :SDL_pow, [:double, :double], :double],
199
+ [:powf, :SDL_powf, [:float, :float], :float],
200
+ [:round, :SDL_round, [:double], :double],
201
+ [:roundf, :SDL_roundf, [:float], :float],
202
+ [:lround, :SDL_lround, [:double], :long],
203
+ [:lroundf, :SDL_lroundf, [:float], :long],
204
+ [:scalbn, :SDL_scalbn, [:double, :int], :double],
205
+ [:scalbnf, :SDL_scalbnf, [:float, :int], :float],
206
+ [:sin, :SDL_sin, [:double], :double],
207
+ [:sinf, :SDL_sinf, [:float], :float],
208
+ [:sqrt, :SDL_sqrt, [:double], :double],
209
+ [:sqrtf, :SDL_sqrtf, [:float], :float],
210
+ [:tan, :SDL_tan, [:double], :double],
211
+ [:tanf, :SDL_tanf, [:float], :float],
212
+ [:iconv_open, :SDL_iconv_open, [:pointer, :pointer], :pointer],
213
+ [:iconv_close, :SDL_iconv_close, [:pointer], :int],
214
+ [:iconv, :SDL_iconv, [:pointer, :pointer, :pointer, :pointer, :pointer], :ulong_long],
215
+ [:iconv_string, :SDL_iconv_string, [:pointer, :pointer, :pointer, :ulong_long], :pointer],
216
+ [:size_mul_check_overflow, :SDL_size_mul_check_overflow, [:ulong_long, :ulong_long, :pointer], :bool],
217
+ [:size_mul_check_overflow_builtin, :SDL_size_mul_check_overflow_builtin, [:ulong_long, :ulong_long, :pointer], :bool],
218
+ [:size_add_check_overflow, :SDL_size_add_check_overflow, [:ulong_long, :ulong_long, :pointer], :bool],
219
+ [:size_add_check_overflow_builtin, :SDL_size_add_check_overflow_builtin, [:ulong_long, :ulong_long, :pointer], :bool],
220
+ ]
221
+ entries.each do |entry|
222
+ attach_function entry[0], entry[1], entry[2], entry[3]
223
+ rescue FFI::NotFoundError => e
224
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
225
+ end
226
+ end
227
+
228
+ end
229
+