ruby2d 0.12.1 → 1.0.0

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.
Files changed (620) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +7 -0
  3. data/README.md +141 -0
  4. data/USAGE.md +2435 -0
  5. data/assets/Rakefile +637 -0
  6. data/assets/build_support/CMakeLists.txt +94 -0
  7. data/assets/build_support/mruby/build_config.rb +34 -0
  8. data/assets/build_support/mruby/build_config_wasm.rb +30 -0
  9. data/assets/build_support/sdl_test.c +174 -0
  10. data/assets/deps.yaml +16 -0
  11. data/assets/platform/include/SDL3/SDL.h +91 -0
  12. data/assets/platform/include/SDL3/SDL_assert.h +705 -0
  13. data/assets/platform/include/SDL3/SDL_asyncio.h +550 -0
  14. data/assets/platform/include/SDL3/SDL_atomic.h +692 -0
  15. data/assets/platform/include/SDL3/SDL_audio.h +2370 -0
  16. data/assets/platform/include/SDL3/SDL_begin_code.h +553 -0
  17. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_bits.h +47 -27
  18. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_blendmode.h +59 -55
  19. data/assets/platform/include/SDL3/SDL_camera.h +535 -0
  20. data/assets/platform/include/SDL3/SDL_clipboard.h +331 -0
  21. data/assets/{include/SDL2/close_code.h → platform/include/SDL3/SDL_close_code.h} +9 -8
  22. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_copying.h +3 -1
  23. data/assets/platform/include/SDL3/SDL_cpuinfo.h +374 -0
  24. data/assets/platform/include/SDL3/SDL_dialog.h +343 -0
  25. data/assets/platform/include/SDL3/SDL_dlopennote.h +234 -0
  26. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_egl.h +11 -8
  27. data/assets/platform/include/SDL3/SDL_endian.h +645 -0
  28. data/assets/platform/include/SDL3/SDL_error.h +226 -0
  29. data/assets/platform/include/SDL3/SDL_events.h +1645 -0
  30. data/assets/platform/include/SDL3/SDL_filesystem.h +537 -0
  31. data/assets/platform/include/SDL3/SDL_gamepad.h +1656 -0
  32. data/assets/platform/include/SDL3/SDL_gpu.h +4608 -0
  33. data/assets/platform/include/SDL3/SDL_guid.h +106 -0
  34. data/assets/platform/include/SDL3/SDL_haptic.h +1461 -0
  35. data/assets/platform/include/SDL3/SDL_hidapi.h +571 -0
  36. data/assets/platform/include/SDL3/SDL_hints.h +5001 -0
  37. data/assets/platform/include/SDL3/SDL_init.h +507 -0
  38. data/assets/platform/include/SDL3/SDL_intrin.h +410 -0
  39. data/assets/platform/include/SDL3/SDL_iostream.h +1379 -0
  40. data/assets/platform/include/SDL3/SDL_joystick.h +1385 -0
  41. data/assets/platform/include/SDL3/SDL_keyboard.h +608 -0
  42. data/assets/platform/include/SDL3/SDL_keycode.h +347 -0
  43. data/assets/platform/include/SDL3/SDL_loadso.h +145 -0
  44. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_locale.h +40 -24
  45. data/assets/platform/include/SDL3/SDL_log.h +541 -0
  46. data/assets/platform/include/SDL3/SDL_main.h +704 -0
  47. data/assets/platform/include/SDL3/SDL_main_impl.h +151 -0
  48. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_messagebox.h +85 -48
  49. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_metal.h +29 -29
  50. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_misc.h +13 -12
  51. data/assets/platform/include/SDL3/SDL_mouse.h +813 -0
  52. data/assets/platform/include/SDL3/SDL_mutex.h +1117 -0
  53. data/assets/platform/include/SDL3/SDL_oldnames.h +1339 -0
  54. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl.h +1247 -278
  55. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl_glext.h +5 -1
  56. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles.h +6 -7
  57. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2.h +10 -11
  58. data/assets/platform/include/SDL3/SDL_pen.h +198 -0
  59. data/assets/platform/include/SDL3/SDL_pixels.h +1441 -0
  60. data/assets/{include/SDL2/SDL_test_log.h → platform/include/SDL3/SDL_platform.h} +25 -26
  61. data/assets/platform/include/SDL3/SDL_platform_defines.h +497 -0
  62. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_power.h +40 -20
  63. data/assets/platform/include/SDL3/SDL_process.h +441 -0
  64. data/assets/platform/include/SDL3/SDL_properties.h +572 -0
  65. data/assets/platform/include/SDL3/SDL_rect.h +528 -0
  66. data/assets/platform/include/SDL3/SDL_render.h +3028 -0
  67. data/assets/platform/include/SDL3/SDL_revision.h +59 -0
  68. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_scancode.h +59 -68
  69. data/assets/platform/include/SDL3/SDL_sensor.h +321 -0
  70. data/assets/platform/include/SDL3/SDL_stdinc.h +6186 -0
  71. data/assets/platform/include/SDL3/SDL_storage.h +686 -0
  72. data/assets/platform/include/SDL3/SDL_surface.h +1769 -0
  73. data/assets/platform/include/SDL3/SDL_system.h +840 -0
  74. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test.h +16 -22
  75. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_assert.h +27 -34
  76. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_common.h +109 -52
  77. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_compare.h +22 -14
  78. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_crc32.h +27 -30
  79. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_font.h +50 -49
  80. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_fuzzer.h +64 -79
  81. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_harness.h +47 -30
  82. data/assets/platform/include/SDL3/SDL_test_log.h +83 -0
  83. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_md5.h +21 -28
  84. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_memory.h +19 -16
  85. data/assets/platform/include/SDL3/SDL_thread.h +602 -0
  86. data/assets/platform/include/SDL3/SDL_time.h +249 -0
  87. data/assets/platform/include/SDL3/SDL_timer.h +454 -0
  88. data/assets/platform/include/SDL3/SDL_touch.h +184 -0
  89. data/assets/platform/include/SDL3/SDL_tray.h +544 -0
  90. data/assets/platform/include/SDL3/SDL_version.h +198 -0
  91. data/assets/platform/include/SDL3/SDL_video.h +3497 -0
  92. data/assets/platform/include/SDL3/SDL_vulkan.h +287 -0
  93. data/assets/platform/include/SDL3_image/SDL_image.h +3328 -0
  94. data/assets/platform/include/SDL3_mixer/SDL_mixer.h +3369 -0
  95. data/assets/platform/include/SDL3_ttf/SDL_textengine.h +181 -0
  96. data/assets/platform/include/SDL3_ttf/SDL_ttf.h +2833 -0
  97. data/assets/{include → platform/include}/mrbconf.h +42 -31
  98. data/assets/{include → platform/include}/mruby/array.h +3 -4
  99. data/assets/{include → platform/include}/mruby/boxing_nan.h +10 -0
  100. data/assets/platform/include/mruby/boxing_no.h +59 -0
  101. data/assets/{include → platform/include}/mruby/boxing_word.h +72 -26
  102. data/assets/platform/include/mruby/class.h +157 -0
  103. data/assets/{include → platform/include}/mruby/common.h +30 -1
  104. data/assets/{include → platform/include}/mruby/compile.h +52 -74
  105. data/assets/{include → platform/include}/mruby/data.h +2 -2
  106. data/assets/{include → platform/include}/mruby/debug.h +12 -5
  107. data/assets/{include → platform/include}/mruby/dump.h +7 -9
  108. data/assets/{include → platform/include}/mruby/endian.h +1 -1
  109. data/assets/platform/include/mruby/error.h +173 -0
  110. data/assets/platform/include/mruby/gc.h +79 -0
  111. data/assets/{include → platform/include}/mruby/hash.h +1 -7
  112. data/assets/platform/include/mruby/internal.h +282 -0
  113. data/assets/platform/include/mruby/irep.h +143 -0
  114. data/assets/{include → platform/include}/mruby/istruct.h +1 -1
  115. data/assets/platform/include/mruby/khash.h +455 -0
  116. data/assets/platform/include/mruby/mempool.h +19 -0
  117. data/assets/{include → platform/include}/mruby/numeric.h +7 -10
  118. data/assets/platform/include/mruby/object.h +51 -0
  119. data/assets/{include → platform/include}/mruby/opcode.h +5 -5
  120. data/assets/{include → platform/include}/mruby/ops.h +19 -6
  121. data/assets/platform/include/mruby/presym/id.h +1447 -0
  122. data/assets/{include → platform/include}/mruby/presym/scanning.h +10 -7
  123. data/assets/platform/include/mruby/presym/table.h +2893 -0
  124. data/assets/platform/include/mruby/presym.h +65 -0
  125. data/assets/platform/include/mruby/proc.h +184 -0
  126. data/assets/{include → platform/include}/mruby/range.h +0 -2
  127. data/assets/{include → platform/include}/mruby/string.h +33 -53
  128. data/assets/platform/include/mruby/throw.h +81 -0
  129. data/assets/{include → platform/include}/mruby/value.h +64 -29
  130. data/assets/{include → platform/include}/mruby/variable.h +6 -23
  131. data/assets/{include → platform/include}/mruby/version.h +7 -7
  132. data/assets/{include → platform/include}/mruby.h +238 -116
  133. data/assets/platform/macos-arm64/bin/mrbc +0 -0
  134. data/assets/platform/macos-arm64/lib/libSDL3.a +0 -0
  135. data/assets/platform/macos-arm64/lib/libSDL3_image.a +0 -0
  136. data/assets/platform/macos-arm64/lib/libSDL3_mixer.a +0 -0
  137. data/assets/platform/macos-arm64/lib/libSDL3_ttf.a +0 -0
  138. data/assets/platform/macos-arm64/lib/libmruby.a +0 -0
  139. data/assets/platform/wasm/lib/libFLAC.a +0 -0
  140. data/assets/platform/wasm/lib/libSDL3.a +0 -0
  141. data/assets/platform/wasm/lib/libSDL3_image.a +0 -0
  142. data/assets/platform/wasm/lib/libSDL3_mixer.a +0 -0
  143. data/assets/platform/wasm/lib/libSDL3_ttf.a +0 -0
  144. data/assets/platform/wasm/lib/libfreetype.a +0 -0
  145. data/assets/platform/wasm/lib/libharfbuzz.a +0 -0
  146. data/assets/platform/wasm/lib/libmruby.a +0 -0
  147. data/assets/platform/wasm/lib/libogg.a +0 -0
  148. data/assets/platform/wasm/lib/libplutosvg.a +0 -0
  149. data/assets/platform/wasm/lib/libplutovg.a +0 -0
  150. data/assets/platform/wasm/lib/libpng.a +0 -0
  151. data/assets/platform/wasm/lib/libpng16.a +0 -0
  152. data/assets/platform/wasm/lib/libvorbis.a +0 -0
  153. data/assets/platform/wasm/lib/libvorbisfile.a +0 -0
  154. data/assets/platform/wasm/lib/libzlibstatic.a +0 -0
  155. data/assets/platform/windows-arm64-mingw-ucrt/bin/mrbc.exe +0 -0
  156. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3.a +0 -0
  157. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_image.a +0 -0
  158. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
  159. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
  160. data/assets/platform/windows-arm64-mingw-ucrt/lib/libmruby.a +0 -0
  161. data/assets/platform/windows-x86_64-mingw-ucrt/bin/mrbc.exe +0 -0
  162. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3.a +0 -0
  163. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_image.a +0 -0
  164. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
  165. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
  166. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libmruby.a +0 -0
  167. data/assets/resources/fonts/outfit/OFL.txt +93 -0
  168. data/assets/resources/fonts/outfit/outfit.ttf +0 -0
  169. data/assets/resources/fonts/roboto_mono/OFL.txt +91 -0
  170. data/assets/resources/fonts/roboto_mono/roboto_mono.ttf +0 -0
  171. data/assets/resources/icons/icon.icns +0 -0
  172. data/assets/resources/icons/icon.png +0 -0
  173. data/assets/resources/spritesheets/License.txt +28 -0
  174. data/assets/resources/spritesheets/spritesheet-backgrounds.png +0 -0
  175. data/assets/resources/spritesheets/spritesheet-backgrounds.xml +16 -0
  176. data/assets/resources/spritesheets/spritesheet-characters.png +0 -0
  177. data/assets/resources/spritesheets/spritesheet-characters.xml +47 -0
  178. data/assets/resources/spritesheets/spritesheet-enemies.png +0 -0
  179. data/assets/resources/spritesheets/spritesheet-enemies.xml +62 -0
  180. data/assets/resources/spritesheets/spritesheet-tiles.png +0 -0
  181. data/assets/resources/spritesheets/spritesheet-tiles.xml +316 -0
  182. data/assets/{wasm → resources/web}/template.html +1 -1
  183. data/assets/target.rb +131 -0
  184. data/bin/ruby2d +281 -82
  185. data/examples/astar.rb +269 -0
  186. data/examples/asteroids.rb +403 -0
  187. data/examples/bezier_editor.rb +96 -0
  188. data/examples/boids.rb +191 -0
  189. data/examples/bouncing_balls.rb +119 -0
  190. data/examples/breakout.rb +186 -0
  191. data/examples/constellations.rb +100 -0
  192. data/examples/dashboard.rb +133 -0
  193. data/examples/double_pendulum.rb +254 -0
  194. data/examples/falling_sand.rb +291 -0
  195. data/examples/fireworks.rb +110 -0
  196. data/examples/fluid_dynamics.rb +340 -0
  197. data/examples/fourier_epicycles.rb +142 -0
  198. data/examples/fractal_tree.rb +326 -0
  199. data/examples/game_of_life.rb +148 -0
  200. data/examples/gamepads.rb +333 -0
  201. data/examples/hill_driver.rb +613 -0
  202. data/examples/logo_animation.rb +251 -0
  203. data/examples/lorenz_attractor.rb +115 -0
  204. data/examples/mandelbrot.rb +207 -0
  205. data/examples/marching_squares.rb +200 -0
  206. data/examples/maze.rb +323 -0
  207. data/examples/nbody.rb +338 -0
  208. data/examples/outrun.rb +391 -0
  209. data/examples/pixel_paint.rb +313 -0
  210. data/examples/platformer.rb +335 -0
  211. data/examples/ray_casting_maze.rb +175 -0
  212. data/examples/shadow_casting.rb +151 -0
  213. data/examples/shape_recognizer.rb +908 -0
  214. data/examples/snake.rb +144 -0
  215. data/examples/sprite_sheets.rb +246 -0
  216. data/examples/swarm.rb +206 -0
  217. data/examples/tsp_annealing.rb +104 -0
  218. data/examples/ui_controls.rb +163 -0
  219. data/examples/wireframe_3d.rb +139 -0
  220. data/ext/ruby2d/audio.c +324 -0
  221. data/ext/ruby2d/canvas.c +1715 -494
  222. data/ext/ruby2d/ext.c +541 -0
  223. data/ext/ruby2d/extconf.rb +122 -145
  224. data/ext/ruby2d/font.c +566 -20
  225. data/ext/ruby2d/fps.c +92 -0
  226. data/ext/ruby2d/image.c +466 -41
  227. data/ext/ruby2d/ruby2d.c +374 -1890
  228. data/ext/ruby2d/ruby2d.h +840 -460
  229. data/ext/ruby2d/shapes.c +931 -101
  230. data/ext/ruby2d/text.c +586 -21
  231. data/ext/ruby2d/window.c +1693 -283
  232. data/lib/ruby2d/atlas_parser.rb +194 -0
  233. data/lib/ruby2d/audio.rb +73 -0
  234. data/lib/ruby2d/benchmark.rb +259 -0
  235. data/lib/ruby2d/bitmap_text.rb +155 -0
  236. data/lib/ruby2d/button.rb +402 -0
  237. data/lib/ruby2d/canvas.rb +703 -279
  238. data/lib/ruby2d/circle.rb +206 -29
  239. data/lib/ruby2d/cli/browser.rb +314 -0
  240. data/lib/ruby2d/cli/build.rb +471 -257
  241. data/lib/ruby2d/cli/colorize.rb +7 -5
  242. data/lib/ruby2d/cli/examples.rb +127 -0
  243. data/lib/ruby2d/cli/launch.rb +24 -39
  244. data/lib/ruby2d/cli/lib_files.rb +48 -0
  245. data/lib/ruby2d/cli/messages.rb +40 -0
  246. data/lib/ruby2d/cli/setup.rb +273 -0
  247. data/lib/ruby2d/cli/static_server.rb +160 -0
  248. data/lib/ruby2d/cli/usage.rb +255 -0
  249. data/lib/ruby2d/color.rb +191 -69
  250. data/lib/ruby2d/core.rb +37 -19
  251. data/lib/ruby2d/deps_help.rb +89 -0
  252. data/lib/ruby2d/dsl.rb +51 -12
  253. data/lib/ruby2d/ellipse.rb +228 -0
  254. data/lib/ruby2d/exceptions.rb +0 -2
  255. data/lib/ruby2d/font.rb +34 -74
  256. data/lib/ruby2d/gamepad.rb +323 -0
  257. data/lib/ruby2d/gem_paths.rb +19 -0
  258. data/lib/ruby2d/image.rb +155 -52
  259. data/lib/ruby2d/interactive.rb +103 -0
  260. data/lib/ruby2d/json_parser.rb +268 -0
  261. data/lib/ruby2d/line.rb +194 -85
  262. data/lib/ruby2d/mruby_compat.rb +12 -0
  263. data/lib/ruby2d/polygon.rb +297 -0
  264. data/lib/ruby2d/polyline.rb +368 -0
  265. data/lib/ruby2d/quad.rb +358 -94
  266. data/lib/ruby2d/rectangle.rb +77 -19
  267. data/lib/ruby2d/renderable.rb +411 -11
  268. data/lib/ruby2d/sprite.rb +471 -180
  269. data/lib/ruby2d/sprite_sheet.rb +64 -0
  270. data/lib/ruby2d/square.rb +29 -17
  271. data/lib/ruby2d/text.rb +196 -65
  272. data/lib/ruby2d/tileset.rb +139 -81
  273. data/lib/ruby2d/triangle.rb +324 -89
  274. data/lib/ruby2d/version.rb +1 -3
  275. data/lib/ruby2d/vertices.rb +62 -85
  276. data/lib/ruby2d/warnings.rb +29 -0
  277. data/lib/ruby2d/window/class_methods.rb +218 -0
  278. data/lib/ruby2d/window/gamepad_events.rb +141 -0
  279. data/lib/ruby2d/window/key_events.rb +74 -0
  280. data/lib/ruby2d/window/mouse_events.rb +171 -0
  281. data/lib/ruby2d/window/object_events.rb +168 -0
  282. data/lib/ruby2d/window.rb +632 -585
  283. data/lib/ruby2d.rb +14 -19
  284. metadata +275 -443
  285. data/assets/app.icns +0 -0
  286. data/assets/include/GL/glew.h +0 -26427
  287. data/assets/include/GLES2/gl2.h +0 -656
  288. data/assets/include/GLES2/gl2ext.h +0 -3949
  289. data/assets/include/GLES2/gl2ext_angle.h +0 -701
  290. data/assets/include/GLES2/gl2platform.h +0 -27
  291. data/assets/include/GLES3/gl3.h +0 -1192
  292. data/assets/include/GLES3/gl31.h +0 -1507
  293. data/assets/include/GLES3/gl32.h +0 -1808
  294. data/assets/include/GLES3/gl3platform.h +0 -27
  295. data/assets/include/KHR/khrplatform.h +0 -290
  296. data/assets/include/SDL2/SDL.h +0 -233
  297. data/assets/include/SDL2/SDL_assert.h +0 -326
  298. data/assets/include/SDL2/SDL_atomic.h +0 -415
  299. data/assets/include/SDL2/SDL_audio.h +0 -1500
  300. data/assets/include/SDL2/SDL_clipboard.h +0 -141
  301. data/assets/include/SDL2/SDL_config.h +0 -61
  302. data/assets/include/SDL2/SDL_config_android.h +0 -194
  303. data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
  304. data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
  305. data/assets/include/SDL2/SDL_config_macosx.h +0 -277
  306. data/assets/include/SDL2/SDL_config_minimal.h +0 -95
  307. data/assets/include/SDL2/SDL_config_ngage.h +0 -89
  308. data/assets/include/SDL2/SDL_config_os2.h +0 -207
  309. data/assets/include/SDL2/SDL_config_pandora.h +0 -141
  310. data/assets/include/SDL2/SDL_config_windows.h +0 -331
  311. data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
  312. data/assets/include/SDL2/SDL_config_winrt.h +0 -220
  313. data/assets/include/SDL2/SDL_config_xbox.h +0 -235
  314. data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
  315. data/assets/include/SDL2/SDL_endian.h +0 -348
  316. data/assets/include/SDL2/SDL_error.h +0 -163
  317. data/assets/include/SDL2/SDL_events.h +0 -1166
  318. data/assets/include/SDL2/SDL_filesystem.h +0 -149
  319. data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
  320. data/assets/include/SDL2/SDL_gesture.h +0 -117
  321. data/assets/include/SDL2/SDL_guid.h +0 -100
  322. data/assets/include/SDL2/SDL_haptic.h +0 -1341
  323. data/assets/include/SDL2/SDL_hidapi.h +0 -451
  324. data/assets/include/SDL2/SDL_hints.h +0 -2569
  325. data/assets/include/SDL2/SDL_image.h +0 -2173
  326. data/assets/include/SDL2/SDL_joystick.h +0 -1066
  327. data/assets/include/SDL2/SDL_keyboard.h +0 -353
  328. data/assets/include/SDL2/SDL_keycode.h +0 -358
  329. data/assets/include/SDL2/SDL_loadso.h +0 -115
  330. data/assets/include/SDL2/SDL_log.h +0 -404
  331. data/assets/include/SDL2/SDL_main.h +0 -275
  332. data/assets/include/SDL2/SDL_mixer.h +0 -2784
  333. data/assets/include/SDL2/SDL_mouse.h +0 -465
  334. data/assets/include/SDL2/SDL_mutex.h +0 -471
  335. data/assets/include/SDL2/SDL_name.h +0 -33
  336. data/assets/include/SDL2/SDL_pixels.h +0 -644
  337. data/assets/include/SDL2/SDL_platform.h +0 -261
  338. data/assets/include/SDL2/SDL_quit.h +0 -58
  339. data/assets/include/SDL2/SDL_rect.h +0 -376
  340. data/assets/include/SDL2/SDL_render.h +0 -1919
  341. data/assets/include/SDL2/SDL_revision.h +0 -6
  342. data/assets/include/SDL2/SDL_rwops.h +0 -841
  343. data/assets/include/SDL2/SDL_sensor.h +0 -322
  344. data/assets/include/SDL2/SDL_shape.h +0 -155
  345. data/assets/include/SDL2/SDL_stdinc.h +0 -830
  346. data/assets/include/SDL2/SDL_surface.h +0 -997
  347. data/assets/include/SDL2/SDL_system.h +0 -623
  348. data/assets/include/SDL2/SDL_syswm.h +0 -386
  349. data/assets/include/SDL2/SDL_test_images.h +0 -78
  350. data/assets/include/SDL2/SDL_test_random.h +0 -115
  351. data/assets/include/SDL2/SDL_thread.h +0 -464
  352. data/assets/include/SDL2/SDL_timer.h +0 -222
  353. data/assets/include/SDL2/SDL_touch.h +0 -150
  354. data/assets/include/SDL2/SDL_ttf.h +0 -2316
  355. data/assets/include/SDL2/SDL_types.h +0 -29
  356. data/assets/include/SDL2/SDL_version.h +0 -204
  357. data/assets/include/SDL2/SDL_video.h +0 -2150
  358. data/assets/include/SDL2/SDL_vulkan.h +0 -215
  359. data/assets/include/SDL2/begin_code.h +0 -187
  360. data/assets/include/mruby/boxing_no.h +0 -58
  361. data/assets/include/mruby/class.h +0 -108
  362. data/assets/include/mruby/error.h +0 -147
  363. data/assets/include/mruby/gc.h +0 -94
  364. data/assets/include/mruby/irep.h +0 -147
  365. data/assets/include/mruby/khash.h +0 -284
  366. data/assets/include/mruby/object.h +0 -43
  367. data/assets/include/mruby/presym/disable.h +0 -70
  368. data/assets/include/mruby/presym/enable.h +0 -37
  369. data/assets/include/mruby/presym.h +0 -40
  370. data/assets/include/mruby/proc.h +0 -211
  371. data/assets/include/mruby/throw.h +0 -66
  372. data/assets/macos/universal/bin/mrbc +0 -0
  373. data/assets/macos/universal/lib/libFLAC.a +0 -0
  374. data/assets/macos/universal/lib/libSDL2.a +0 -0
  375. data/assets/macos/universal/lib/libSDL2_image.a +0 -0
  376. data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
  377. data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
  378. data/assets/macos/universal/lib/libavif.a +0 -0
  379. data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
  380. data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
  381. data/assets/macos/universal/lib/libfreetype.a +0 -0
  382. data/assets/macos/universal/lib/libgraphite2.a +0 -0
  383. data/assets/macos/universal/lib/libharfbuzz.a +0 -0
  384. data/assets/macos/universal/lib/libhwy.a +0 -0
  385. data/assets/macos/universal/lib/libjpeg.a +0 -0
  386. data/assets/macos/universal/lib/libjxl.a +0 -0
  387. data/assets/macos/universal/lib/libmodplug.a +0 -0
  388. data/assets/macos/universal/lib/libmpg123.a +0 -0
  389. data/assets/macos/universal/lib/libmruby.a +0 -0
  390. data/assets/macos/universal/lib/libogg.a +0 -0
  391. data/assets/macos/universal/lib/libpng.a +0 -0
  392. data/assets/macos/universal/lib/libtiff.a +0 -0
  393. data/assets/macos/universal/lib/libvorbis.a +0 -0
  394. data/assets/macos/universal/lib/libvorbisfile.a +0 -0
  395. data/assets/macos/universal/lib/libwebp.a +0 -0
  396. data/assets/macos/universal/lib/libzstd.a +0 -0
  397. data/assets/test_media/README.md +0 -3
  398. data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
  399. data/assets/test_media/bitstream_vera/vera.ttf +0 -0
  400. data/assets/test_media/boom.png +0 -0
  401. data/assets/test_media/coin.png +0 -0
  402. data/assets/test_media/colors.png +0 -0
  403. data/assets/test_media/controller.png +0 -0
  404. data/assets/test_media/dial.wav +0 -0
  405. data/assets/test_media/hero.png +0 -0
  406. data/assets/test_media/image.bmp +0 -0
  407. data/assets/test_media/image.jpg +0 -0
  408. data/assets/test_media/image.png +0 -0
  409. data/assets/test_media/music.flac +0 -0
  410. data/assets/test_media/music.mp3 +0 -0
  411. data/assets/test_media/music.ogg +0 -0
  412. data/assets/test_media/music.wav +0 -0
  413. data/assets/test_media/originals/boom.pxm +0 -0
  414. data/assets/test_media/originals/coin.pxm +0 -0
  415. data/assets/test_media/originals/controller.sketch +0 -0
  416. data/assets/test_media/originals/hero.pxm +0 -0
  417. data/assets/test_media/originals/image.pxm +0 -0
  418. data/assets/test_media/originals/music.caf +0 -0
  419. data/assets/test_media/originals/texture_atlas.pxm +0 -0
  420. data/assets/test_media/rondo_alla_turka.ogg +0 -0
  421. data/assets/test_media/sound.flac +0 -0
  422. data/assets/test_media/sound.mp3 +0 -0
  423. data/assets/test_media/sound.ogg +0 -0
  424. data/assets/test_media/sound.wav +0 -0
  425. data/assets/test_media/sprite_sheet.png +0 -0
  426. data/assets/test_media/texture_atlas.png +0 -0
  427. data/assets/wasm/libmruby.a +0 -0
  428. data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
  429. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
  430. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
  431. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
  432. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
  433. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
  434. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
  435. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
  436. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
  437. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
  438. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
  439. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
  440. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
  441. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
  442. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
  443. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
  444. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
  445. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
  446. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
  447. data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
  448. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
  449. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
  450. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
  451. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
  452. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
  453. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
  454. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
  455. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
  456. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
  457. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
  458. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
  459. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
  460. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
  461. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
  462. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
  463. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
  464. data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
  465. data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
  466. data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
  467. data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
  468. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
  469. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
  470. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
  471. data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
  472. data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
  473. data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
  474. data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
  475. data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
  476. data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
  477. data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
  478. data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
  479. data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
  480. data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
  481. data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
  482. data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
  483. data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
  484. data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
  485. data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
  486. data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
  487. data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
  488. data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
  489. data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
  490. data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
  491. data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
  492. data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
  493. data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
  494. data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
  495. data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
  496. data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
  497. data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
  498. data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
  499. data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
  500. data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  501. data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
  502. data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
  503. data/assets/xcode/ios/Info.plist +0 -43
  504. data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
  505. data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
  506. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  507. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  508. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  509. data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
  510. data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
  511. data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
  512. data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
  513. data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
  514. data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
  515. data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
  516. data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
  517. data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
  518. data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
  519. data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
  520. data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
  521. data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
  522. data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
  523. data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
  524. data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
  525. data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
  526. data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
  527. data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
  528. data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
  529. data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
  530. data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
  531. data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
  532. data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
  533. data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
  534. data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
  535. data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
  536. data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
  537. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  538. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  539. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  540. data/assets/xcode/ios/main.c +0 -1
  541. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  542. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
  543. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
  544. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  545. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
  546. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  547. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  548. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  549. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
  550. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
  551. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  552. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
  553. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  554. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  555. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
  556. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
  557. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
  558. data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
  559. data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
  560. data/assets/xcode/tvos/Info.plist +0 -30
  561. data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
  562. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
  563. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  564. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  565. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  566. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
  567. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
  568. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
  569. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
  570. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
  571. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
  572. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
  573. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
  574. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
  575. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
  576. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
  577. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
  578. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
  579. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
  580. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
  581. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
  582. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
  583. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
  584. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
  585. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
  586. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
  587. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
  588. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
  589. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
  590. data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
  591. data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
  592. data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
  593. data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
  594. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  595. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  596. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  597. data/assets/xcode/tvos/main.c +0 -1
  598. data/ext/ruby2d/common.c +0 -185
  599. data/ext/ruby2d/controllers.c +0 -110
  600. data/ext/ruby2d/gl.c +0 -398
  601. data/ext/ruby2d/gl2.c +0 -86
  602. data/ext/ruby2d/gl3.c +0 -304
  603. data/ext/ruby2d/gles.c +0 -302
  604. data/ext/ruby2d/input.c +0 -48
  605. data/ext/ruby2d/music.c +0 -127
  606. data/ext/ruby2d/sound.c +0 -132
  607. data/lib/ruby2d/cli/console.rb +0 -65
  608. data/lib/ruby2d/cli/enable_console.rb +0 -7
  609. data/lib/ruby2d/cli/platform.rb +0 -17
  610. data/lib/ruby2d/music.rb +0 -77
  611. data/lib/ruby2d/pixel.rb +0 -18
  612. data/lib/ruby2d/pixmap.rb +0 -39
  613. data/lib/ruby2d/pixmap_atlas.rb +0 -56
  614. data/lib/ruby2d/sound.rb +0 -61
  615. data/lib/ruby2d/texture.rb +0 -38
  616. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
  617. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
  618. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
  619. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
  620. /data/assets/{include → platform/include}/mruby/re.h +0 -0
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ** mruby - An embeddable Ruby implementation
3
3
  **
4
- ** Copyright (c) mruby developers 2010-2021
4
+ ** Copyright (c) mruby developers 2010-
5
5
  **
6
6
  ** Permission is hereby granted, free of charge, to any person obtaining
7
7
  ** a copy of this software and associated documentation files (the
@@ -139,7 +139,7 @@
139
139
  #endif
140
140
 
141
141
  /**
142
- * MRuby C API entry point
142
+ * mruby C API entry point
143
143
  */
144
144
  MRB_BEGIN_DECL
145
145
 
@@ -154,19 +154,9 @@ typedef uint8_t mrb_code;
154
154
  */
155
155
  typedef uint32_t mrb_aspec;
156
156
 
157
- struct mrb_irep;
158
- struct mrb_state;
157
+ typedef struct mrb_irep mrb_irep;
159
158
 
160
- /**
161
- * Function pointer type of custom allocator used in @see mrb_open_allocf.
162
- *
163
- * The function pointing it must behave similarly as realloc except:
164
- * - If ptr is NULL it must allocate new space.
165
- * - If s is NULL, ptr must be freed.
166
- *
167
- * See @see mrb_default_allocf for the default implementation.
168
- */
169
- typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
159
+ struct mrb_state;
170
160
 
171
161
  #ifndef MRB_FIXED_STATE_ATEXIT_STACK_SIZE
172
162
  #define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5
@@ -176,13 +166,17 @@ typedef struct {
176
166
  uint8_t n:4; /* (15=*) c=n|nk<<4 */
177
167
  uint8_t nk:4; /* (15=*) */
178
168
  uint8_t cci; /* called from C function */
169
+ uint8_t vis; /* 5(ZERO):1(separate module):2(method visibility) */
170
+ /* under 3-bit flags are copied to env, and after that, env takes precedence */
179
171
  mrb_sym mid;
180
172
  const struct RProc *proc;
173
+ struct RProc *blk;
181
174
  mrb_value *stack;
182
175
  const mrb_code *pc; /* current address on iseq of this proc */
183
176
  union {
184
177
  struct REnv *env;
185
178
  struct RClass *target_class;
179
+ const void *keep_context; /* if NULL, it means that the fiber has switched; for internal use */
186
180
  } u;
187
181
  } mrb_callinfo;
188
182
 
@@ -195,6 +189,10 @@ enum mrb_fiber_state {
195
189
  MRB_FIBER_TERMINATED,
196
190
  };
197
191
 
192
+ /* Task context status aliases */
193
+ #define MRB_TASK_CREATED MRB_FIBER_CREATED
194
+ #define MRB_TASK_STOPPED MRB_FIBER_TERMINATED
195
+
198
196
  struct mrb_context {
199
197
  struct mrb_context *prev;
200
198
 
@@ -228,17 +226,14 @@ mrb_static_assert_powerof2(MRB_METHOD_CACHE_SIZE);
228
226
  */
229
227
  typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self);
230
228
 
231
- #ifndef MRB_USE_METHOD_T_STRUCT
232
- typedef uintptr_t mrb_method_t;
233
- #else
234
229
  typedef struct {
235
- uint8_t flags;
230
+ uint32_t flags; /* method flags (no symbol packed) */
231
+
236
232
  union {
237
- struct RProc *proc;
233
+ const struct RProc *proc;
238
234
  mrb_func_t func;
239
- };
235
+ } as;
240
236
  } mrb_method_t;
241
- #endif
242
237
 
243
238
  #ifndef MRB_NO_METHOD_CACHE
244
239
  struct mrb_cache_entry {
@@ -252,12 +247,22 @@ struct mrb_jmpbuf;
252
247
 
253
248
  typedef void (*mrb_atexit_func)(struct mrb_state*);
254
249
 
250
+ #ifdef MRB_USE_TASK_SCHEDULER
251
+ struct mrb_task;
252
+
253
+ typedef struct mrb_task_state {
254
+ struct mrb_task *queues[4]; /* Task queues (dormant, ready, waiting, suspended) */
255
+ volatile uint32_t tick; /* Current tick count */
256
+ volatile uint32_t wakeup_tick; /* Next wakeup tick */
257
+ volatile mrb_bool switching; /* Context switch pending flag */
258
+ struct mrb_task *main_task; /* Main task wrapper for root context */
259
+ uint8_t scheduler_lock; /* Lock counter for synchronous execution */
260
+ } mrb_task_state;
261
+ #endif
262
+
255
263
  typedef struct mrb_state {
256
264
  struct mrb_jmpbuf *jmp;
257
265
 
258
- mrb_allocf allocf; /* memory allocation function */
259
- void *allocf_ud; /* auxiliary data of allocf */
260
-
261
266
  struct mrb_context *c;
262
267
  struct mrb_context *root_c;
263
268
  struct iv_tbl *globals; /* global variable table */
@@ -286,18 +291,19 @@ typedef struct mrb_state {
286
291
 
287
292
  mrb_gc gc;
288
293
 
294
+ mrb_bool bootstrapping;
295
+
289
296
  #ifndef MRB_NO_METHOD_CACHE
290
297
  struct mrb_cache_entry cache[MRB_METHOD_CACHE_SIZE];
291
298
  #endif
292
299
 
293
300
  mrb_sym symidx;
294
301
  const char **symtbl;
295
- uint8_t *symlink;
296
- uint8_t *symflags;
297
- mrb_sym symhash[256];
298
302
  size_t symcapa;
303
+ struct mrb_sym_hash_table *symhash;
304
+ void *sym_pool;
299
305
  #ifndef MRB_USE_ALL_SYMBOLS
300
- char symbuf[8]; /* buffer for small symbol names */
306
+ char symbuf[8]; /* buffer for small symbol names */
301
307
  #endif
302
308
 
303
309
  #ifdef MRB_USE_DEBUG_HOOK
@@ -312,11 +318,15 @@ typedef struct mrb_state {
312
318
  struct RClass *eException_class;
313
319
  struct RClass *eStandardError_class;
314
320
  struct RObject *nomem_err; /* pre-allocated NoMemoryError */
315
- struct RObject *stack_err; /* pre-allocated SysStackError */
321
+ struct RObject *stack_err; /* pre-allocated SystemStackError */
316
322
  #ifdef MRB_GC_FIXED_ARENA
317
323
  struct RObject *arena_err; /* pre-allocated arena overflow error */
318
324
  #endif
319
325
 
326
+ struct mrb_mt_rom_list *rom_mt; /* heap-allocated ROM wrappers (freed at close) */
327
+
328
+ struct mrb_iv_shape *root_shape; /* root of IV shape tree */
329
+
320
330
  void *ud; /* auxiliary data */
321
331
 
322
332
  #ifdef MRB_FIXED_STATE_ATEXIT_STACK
@@ -325,6 +335,10 @@ typedef struct mrb_state {
325
335
  mrb_atexit_func *atexit_stack;
326
336
  #endif
327
337
  uint16_t atexit_stack_len;
338
+
339
+ #ifdef MRB_USE_TASK_SCHEDULER
340
+ mrb_task_state task; /* Task scheduler state */
341
+ #endif
328
342
  } mrb_state;
329
343
 
330
344
  /**
@@ -361,7 +375,18 @@ MRB_API struct RClass *mrb_define_class_id(mrb_state *mrb, mrb_sym name, struct
361
375
  MRB_API struct RClass *mrb_define_module(mrb_state *mrb, const char *name);
362
376
  MRB_API struct RClass *mrb_define_module_id(mrb_state *mrb, mrb_sym name);
363
377
 
378
+ /**
379
+ * Returns the singleton class of an object.
380
+ *
381
+ * Raises a `TypeError` exception for immediate values.
382
+ */
364
383
  MRB_API mrb_value mrb_singleton_class(mrb_state *mrb, mrb_value val);
384
+
385
+ /**
386
+ * Returns the singleton class of an object.
387
+ *
388
+ * Returns `NULL` for immediate values,
389
+ */
365
390
  MRB_API struct RClass *mrb_singleton_class_ptr(mrb_state *mrb, mrb_value val);
366
391
 
367
392
  /**
@@ -391,7 +416,7 @@ MRB_API void mrb_include_module(mrb_state *mrb, struct RClass *cla, struct RClas
391
416
  MRB_API void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClass *prepended);
392
417
 
393
418
  /**
394
- * Defines a global function in ruby.
419
+ * Defines a global function in Ruby.
395
420
  *
396
421
  * If you're creating a gem it may look something like this
397
422
  *
@@ -408,14 +433,17 @@ MRB_API void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClas
408
433
  * mrb_define_method(mrb, mrb->kernel_module, "example_method", example_method, MRB_ARGS_NONE());
409
434
  * }
410
435
  *
411
- * @param mrb The MRuby state reference.
436
+ * @param mrb The mruby state reference.
412
437
  * @param cla The class pointer where the method will be defined.
413
438
  * @param name The name of the method being defined.
414
439
  * @param func The function pointer to the method definition.
415
440
  * @param aspec The method parameters declaration.
416
441
  */
442
+
417
443
  MRB_API void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
418
444
  MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
445
+ MRB_API void mrb_define_private_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
446
+ MRB_API void mrb_define_private_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
419
447
 
420
448
  /**
421
449
  * Defines a class method.
@@ -436,7 +464,7 @@ MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid,
436
464
  * foo = mrb_define_class(mrb, "Foo", mrb->object_class);
437
465
  * mrb_define_class_method(mrb, foo, "bar", bar_method, MRB_ARGS_NONE());
438
466
  * }
439
- * @param mrb The MRuby state reference.
467
+ * @param mrb The mruby state reference.
440
468
  * @param cla The class where the class method will be defined.
441
469
  * @param name The name of the class method being defined.
442
470
  * @param fun The function pointer to the class method definition.
@@ -472,7 +500,7 @@ MRB_API void mrb_define_singleton_method_id(mrb_state *mrb, struct RObject *cla,
472
500
  * foo = mrb_define_module(mrb, "Foo");
473
501
  * mrb_define_module_function(mrb, foo, "bar", bar_method, MRB_ARGS_NONE());
474
502
  * }
475
- * @param mrb The MRuby state reference.
503
+ * @param mrb The mruby state reference.
476
504
  * @param cla The module where the module function will be defined.
477
505
  * @param name The name of the module function being defined.
478
506
  * @param fun The function pointer to the module function definition.
@@ -502,7 +530,7 @@ MRB_API void mrb_define_module_function_id(mrb_state *mrb, struct RClass *cla, m
502
530
  * mrb_value
503
531
  * mrb_example_gem_final(mrb_state* mrb){
504
532
  * }
505
- * @param mrb The MRuby state reference.
533
+ * @param mrb The mruby state reference.
506
534
  * @param cla A class or module the constant is defined in.
507
535
  * @param name The name of the constant being defined.
508
536
  * @param val The value for the constant.
@@ -686,9 +714,9 @@ MRB_API struct RClass * mrb_module_new(mrb_state *mrb);
686
714
  * example_class = mrb_define_class(mrb, "ExampleClass", mrb->object_class);
687
715
  * cd = mrb_class_defined(mrb, "ExampleClass");
688
716
  *
689
- * // If mrb_class_defined returns 1 then puts "True"
690
- * // If mrb_class_defined returns 0 then puts "False"
691
- * if (cd == 1){
717
+ * // If mrb_class_defined returns TRUE then puts "True"
718
+ * // If mrb_class_defined returns FALSE then puts "False"
719
+ * if (cd) {
692
720
  * puts("True");
693
721
  * }
694
722
  * else {
@@ -735,9 +763,9 @@ MRB_API struct RClass* mrb_exc_get_id(mrb_state *mrb, mrb_sym name);
735
763
  * example_inner = mrb_define_class_under(mrb, example_outer, "ExampleInner", mrb->object_class);
736
764
  * cd = mrb_class_defined_under(mrb, example_outer, "ExampleInner");
737
765
  *
738
- * // If mrb_class_defined_under returns 1 then puts "True"
739
- * // If mrb_class_defined_under returns 0 then puts "False"
740
- * if (cd == 1){
766
+ * // If mrb_class_defined_under returns TRUE then puts "True"
767
+ * // If mrb_class_defined_under returns FALSE then puts "False"
768
+ * if (cd) {
741
769
  * puts("True");
742
770
  * }
743
771
  * else {
@@ -786,6 +814,8 @@ MRB_API struct RClass * mrb_module_get_under_id(mrb_state *mrb, struct RClass *o
786
814
  MRB_API void mrb_notimplement(mrb_state*);
787
815
  /* a function to be replacement of unimplemented method */
788
816
  MRB_API mrb_value mrb_notimplement_m(mrb_state*, mrb_value);
817
+ /* just return it self */
818
+ MRB_API mrb_value mrb_obj_itself(mrb_state*, mrb_value);
789
819
 
790
820
  /**
791
821
  * Duplicate an object.
@@ -821,14 +851,14 @@ MRB_API mrb_value mrb_obj_dup(mrb_state *mrb, mrb_value obj);
821
851
  * example_class = mrb_define_class(mrb, "ExampleClass", mrb->object_class);
822
852
  * mrb_define_method(mrb, example_class, "example_method", exampleMethod, MRB_ARGS_NONE());
823
853
  * mid = mrb_intern_str(mrb, mrb_str_new_lit(mrb, "example_method" ));
824
- * obj_resp = mrb_obj_respond_to(mrb, example_class, mid); // => 1(true in Ruby world)
854
+ * obj_resp = mrb_obj_respond_to(mrb, example_class, mid); // => TRUE (true in Ruby world)
825
855
  *
826
- * // If mrb_obj_respond_to returns 1 then puts "True"
827
- * // If mrb_obj_respond_to returns 0 then puts "False"
828
- * if (obj_resp == 1) {
856
+ * // If mrb_obj_respond_to returns TRUE then puts "True"
857
+ * // If mrb_obj_respond_to returns FALSE then puts "False"
858
+ * if (obj_resp) {
829
859
  * puts("True");
830
860
  * }
831
- * else if (obj_resp == 0) {
861
+ * else {
832
862
  * puts("False");
833
863
  * }
834
864
  * }
@@ -896,6 +926,11 @@ MRB_API struct RClass* mrb_define_module_under_id(mrb_state *mrb, struct RClass
896
926
  */
897
927
  #define MRB_ARGS_BLOCK() ((mrb_aspec)1)
898
928
 
929
+ /**
930
+ * Function does not accept a block (&nil)
931
+ */
932
+ #define MRB_ARGS_NOBLOCK() ((mrb_aspec)(1 << 23))
933
+
899
934
  /**
900
935
  * Function accepts any number of arguments
901
936
  */
@@ -930,7 +965,7 @@ MRB_API struct RClass* mrb_define_module_under_id(mrb_state *mrb, struct RClass
930
965
  * | `I` | inline struct | void *, struct RClass | `I!` gives `NULL` for `nil` |
931
966
  * | `&` | block | {mrb_value} | &! raises exception if no block given. |
932
967
  * | `*` | rest arguments | const {mrb_value} *, {mrb_int} | Receive the rest of arguments as an array; `*!` avoid copy of the stack. |
933
- * | <code>\|</code> | optional | | After this spec following specs would be optional. |
968
+ * | `\|` | optional | | After this spec following specs would be optional. |
934
969
  * | `?` | optional given | {mrb_bool} | `TRUE` if preceding argument is given. Used to check optional argument is given. |
935
970
  * | `:` | keyword args | {mrb_kwargs} const | Get keyword arguments. @see mrb_kwargs |
936
971
  *
@@ -948,14 +983,14 @@ typedef const char *mrb_args_format;
948
983
  /**
949
984
  * Get keyword arguments by `mrb_get_args()` with `:` specifier.
950
985
  *
951
- * `mrb_kwargs::num` indicates that the number of keyword values.
986
+ * `mrb_kwargs::num` indicates that the total number of keyword values.
952
987
  *
953
- * `mrb_kwargs::values` is an object array, and the keyword argument corresponding to the string array is assigned.
954
- * Note that `undef` is assigned if there is no keyword argument corresponding to `mrb_kwargs::optional`.
988
+ * `mrb_kwargs::required` indicates that the specified number of keywords starting from the beginning of the `mrb_sym` array are required.
955
989
  *
956
- * `mrb_kwargs::table` accepts a string array.
990
+ * `mrb_kwargs::table` accepts a `mrb_sym` array of C.
957
991
  *
958
- * `mrb_kwargs::required` indicates that the specified number of keywords starting from the beginning of the string array are required.
992
+ * `mrb_kwargs::values` is an object array of C, and the keyword argument corresponding to the `mrb_sym` array is assigned.
993
+ * Note that `undef` is assigned if there is no keyword argument corresponding over `mrb_kwargs::required` to `mrb_kwargs::num`.
959
994
  *
960
995
  * `mrb_kwargs::rest` is the remaining keyword argument that can be accepted as `**rest` in Ruby.
961
996
  * If `NULL` is specified, `ArgumentError` is raised when there is an undefined keyword.
@@ -964,11 +999,11 @@ typedef const char *mrb_args_format;
964
999
  *
965
1000
  * // def method(a: 1, b: 2)
966
1001
  *
967
- * uint32_t kw_num = 2;
968
- * const char *kw_names[kw_num] = { "a", "b" };
969
- * uint32_t kw_required = 0;
1002
+ * mrb_int kw_num = 2;
1003
+ * mrb_int kw_required = 0;
1004
+ * mrb_sym kw_names[] = { mrb_intern_lit(mrb, "a"), mrb_intern_lit(mrb, "b") };
970
1005
  * mrb_value kw_values[kw_num];
971
- * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, NULL };
1006
+ * mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, NULL };
972
1007
  *
973
1008
  * mrb_get_args(mrb, ":", &kwargs);
974
1009
  * if (mrb_undef_p(kw_values[0])) { kw_values[0] = mrb_fixnum_value(1); }
@@ -979,10 +1014,12 @@ typedef const char *mrb_args_format;
979
1014
  *
980
1015
  * mrb_value str, kw_rest;
981
1016
  * uint32_t kw_num = 3;
982
- * const mrb_sym kw_names[kw_num] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
983
1017
  * uint32_t kw_required = 1;
1018
+ * // `MRB_SYM()` is available via `mruby.h` (which includes `mruby/presym.h`).
1019
+ * // If the usage of `MRB_SYM()` is not desired, replace it with `mrb_intern_lit()`.
1020
+ * mrb_sym kw_names[] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
984
1021
  * mrb_value kw_values[kw_num];
985
- * const mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, &kw_rest };
1022
+ * mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, &kw_rest };
986
1023
  *
987
1024
  * mrb_get_args(mrb, "S:", &str, &kwargs);
988
1025
  * // or: mrb_get_args(mrb, ":S", &kwargs, &str);
@@ -993,8 +1030,8 @@ typedef struct mrb_kwargs mrb_kwargs;
993
1030
 
994
1031
  struct mrb_kwargs
995
1032
  {
996
- uint32_t num; /* number of keyword arguments */
997
- uint32_t required; /* number of required keyword arguments */
1033
+ mrb_int num; /* number of keyword arguments */
1034
+ mrb_int required; /* number of required keyword arguments */
998
1035
  const mrb_sym *table; /* C array of symbols for keyword names */
999
1036
  mrb_value *values; /* keyword argument values */
1000
1037
  mrb_value *rest; /* keyword rest (dict) */
@@ -1003,7 +1040,7 @@ struct mrb_kwargs
1003
1040
  /**
1004
1041
  * Retrieve arguments from mrb_state.
1005
1042
  *
1006
- * @param mrb The current MRuby state.
1043
+ * @param mrb The current mruby state.
1007
1044
  * @param format is a list of format specifiers
1008
1045
  * @param ... The passing variadic arguments must be a pointer of retrieving type.
1009
1046
  * @return the number of arguments retrieved.
@@ -1012,6 +1049,13 @@ struct mrb_kwargs
1012
1049
  */
1013
1050
  MRB_API mrb_int mrb_get_args(mrb_state *mrb, mrb_args_format format, ...);
1014
1051
 
1052
+ /**
1053
+ * Array version of mrb_get_args()
1054
+ *
1055
+ * @param ptr Array of void*, in the same order as the varargs version.
1056
+ */
1057
+ MRB_API mrb_int mrb_get_args_a(mrb_state *mrb, mrb_args_format format, void** ptr);
1058
+
1015
1059
  MRB_INLINE mrb_sym
1016
1060
  mrb_get_mid(mrb_state *mrb) /* get method symbol */
1017
1061
  {
@@ -1054,13 +1098,13 @@ MRB_API mrb_bool mrb_block_given_p(mrb_state *mrb);
1054
1098
  #define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
1055
1099
 
1056
1100
  /**
1057
- * Call existing ruby functions.
1101
+ * Call existing Ruby functions.
1058
1102
  *
1059
1103
  * Example:
1060
1104
  *
1061
1105
  * #include <stdio.h>
1062
1106
  * #include <mruby.h>
1063
- * #include "mruby/compile.h"
1107
+ * #include <mruby/compile.h>
1064
1108
  *
1065
1109
  * int
1066
1110
  * main()
@@ -1087,11 +1131,11 @@ MRB_API mrb_bool mrb_block_given_p(mrb_state *mrb);
1087
1131
  MRB_API mrb_value mrb_funcall(mrb_state *mrb, mrb_value val, const char *name, mrb_int argc, ...);
1088
1132
  MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb_int argc, ...);
1089
1133
  /**
1090
- * Call existing ruby functions. This is basically the type safe version of mrb_funcall.
1134
+ * Call existing Ruby functions. This is basically the type safe version of mrb_funcall.
1091
1135
  *
1092
1136
  * #include <stdio.h>
1093
1137
  * #include <mruby.h>
1094
- * #include "mruby/compile.h"
1138
+ * #include <mruby/compile.h>
1095
1139
  * int
1096
1140
  * main()
1097
1141
  * {
@@ -1102,7 +1146,7 @@ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb
1102
1146
  *
1103
1147
  * FILE *fp = fopen("test.rb","r");
1104
1148
  * mrb_value obj = mrb_load_file(mrb,fp);
1105
- * mrb_funcall_argv(mrb, obj, MRB_SYM(method_name), 1, &obj); // Calling ruby function from test.rb.
1149
+ * mrb_funcall_argv(mrb, obj, MRB_SYM(method_name), 1, &obj); // Calling Ruby function from test.rb.
1106
1150
  * fclose(fp);
1107
1151
  * mrb_close(mrb);
1108
1152
  * }
@@ -1116,12 +1160,13 @@ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb
1116
1160
  */
1117
1161
  MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv);
1118
1162
  /**
1119
- * Call existing ruby functions with a block.
1163
+ * Call existing Ruby functions with a block.
1120
1164
  */
1121
1165
  MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv, mrb_value block);
1122
1166
  /**
1123
- * Create a symbol from C string. But usually it's better to use MRB_SYM,
1124
- * MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
1167
+ * Create a symbol from C string. But usually it's better to
1168
+ * use MRB_SYM, MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_GVSYM,
1169
+ * MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
1125
1170
  *
1126
1171
  * Example:
1127
1172
  *
@@ -1178,13 +1223,13 @@ MRB_API void mrb_free(mrb_state*, void*);
1178
1223
  */
1179
1224
  #define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
1180
1225
 
1181
- MRB_API mrb_value mrb_str_new(mrb_state *mrb, const char *p, size_t len);
1226
+ MRB_API mrb_value mrb_str_new(mrb_state *mrb, const char *p, mrb_int len);
1182
1227
 
1183
1228
  /**
1184
1229
  * Turns a C string into a Ruby string value.
1185
1230
  */
1186
1231
  MRB_API mrb_value mrb_str_new_cstr(mrb_state*, const char*);
1187
- MRB_API mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, size_t len);
1232
+ MRB_API mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, mrb_int len);
1188
1233
  #define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
1189
1234
 
1190
1235
  MRB_API mrb_value mrb_obj_freeze(mrb_state*, mrb_value);
@@ -1214,49 +1259,95 @@ MRB_API char* mrb_locale_from_utf8(const char *p, int len);
1214
1259
  MRB_API mrb_state* mrb_open(void);
1215
1260
 
1216
1261
  /**
1217
- * Create new mrb_state with custom allocators.
1262
+ * Create new mrb_state with just the mruby core
1218
1263
  *
1219
1264
  * @param f
1220
1265
  * Reference to the allocation function.
1266
+ * Use mrb_basic_alloc_func for the default
1221
1267
  * @param ud
1222
1268
  * User data will be passed to custom allocator f.
1223
1269
  * If user data isn't required just pass NULL.
1224
1270
  * @return
1225
1271
  * Pointer to the newly created mrb_state.
1226
1272
  */
1227
- MRB_API mrb_state* mrb_open_allocf(mrb_allocf f, void *ud);
1273
+ MRB_API mrb_state* mrb_open_core(void);
1228
1274
 
1229
1275
  /**
1230
- * Create new mrb_state with just the MRuby core
1276
+ * Closes and frees a mrb_state.
1231
1277
  *
1232
- * @param f
1233
- * Reference to the allocation function.
1234
- * Use mrb_default_allocf for the default
1235
- * @param ud
1236
- * User data will be passed to custom allocator f.
1237
- * If user data isn't required just pass NULL.
1278
+ * @param mrb
1279
+ * Pointer to the mrb_state to be closed.
1280
+ */
1281
+ MRB_API void mrb_close(mrb_state *mrb);
1282
+ #ifndef MRB_NO_METHOD_CACHE
1283
+ MRB_API void mrb_method_cache_clear(mrb_state *mrb);
1284
+ #else
1285
+ #define mrb_method_cache_clear(mrb) ((void)0)
1286
+ #endif
1287
+
1288
+ /**
1289
+ * Check if mrb_open() failed
1290
+ *
1291
+ * @param mrb
1292
+ * Pointer returned from mrb_open() or mrb_open_core().
1238
1293
  * @return
1239
- * Pointer to the newly created mrb_state.
1294
+ * Non-zero if initialization failed, 0 if succeeded.
1295
+ * @note
1296
+ * mrb_open() may return non-NULL even on failure (with mrb->exc set).
1297
+ * Use this macro to check for failure:
1298
+ * @code
1299
+ * mrb_state *mrb = mrb_open();
1300
+ * if (MRB_OPEN_FAILURE(mrb)) {
1301
+ * if (mrb) {
1302
+ * // Inspect mrb->exc for error details
1303
+ * mrb_close(mrb);
1304
+ * }
1305
+ * return EXIT_FAILURE;
1306
+ * }
1307
+ * @endcode
1240
1308
  */
1241
- MRB_API mrb_state* mrb_open_core(mrb_allocf f, void *ud);
1309
+ #define MRB_OPEN_FAILURE(mrb) (!(mrb) || (mrb)->exc)
1242
1310
 
1243
1311
  /**
1244
- * Closes and frees a mrb_state.
1312
+ * Check if mrb_open() succeeded
1245
1313
  *
1246
1314
  * @param mrb
1247
- * Pointer to the mrb_state to be closed.
1315
+ * Pointer returned from mrb_open() or mrb_open_core().
1316
+ * @return
1317
+ * Non-zero if initialization succeeded, 0 if failed.
1248
1318
  */
1249
- MRB_API void mrb_close(mrb_state *mrb);
1319
+ #define MRB_OPEN_SUCCESS(mrb) (!MRB_OPEN_FAILURE(mrb))
1250
1320
 
1251
1321
  /**
1252
- * The default allocation function.
1322
+ * The memory allocation function. You can redefine this function for your own allocator.
1253
1323
  *
1254
- * @see mrb_allocf
1255
1324
  */
1256
- MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
1325
+ MRB_API void* mrb_basic_alloc_func(void*, size_t);
1257
1326
 
1258
1327
  MRB_API mrb_value mrb_top_self(mrb_state *mrb);
1328
+
1329
+ /**
1330
+ * Enter the mruby VM and execute the proc.
1331
+ *
1332
+ * @param mrb
1333
+ * The current mruby state.
1334
+ * @param proc
1335
+ * An object containing `irep`.
1336
+ * If supplied an object containing anything other than `irep`, it will probably crash.
1337
+ * @param self
1338
+ * `self` on the execution context of `proc`.
1339
+ * @param stack_keep
1340
+ * Specifies the number of values to hold from the stack top.
1341
+ * Values on the stack outside this range will be initialized to `nil`.
1342
+ *
1343
+ * @note
1344
+ * When called from a C function defined as a method, the current stack is destroyed.
1345
+ * If you want to use arguments obtained by `mrb_get_args()` or other methods after `mrb_top_run()`,
1346
+ * you must protect them by `mrb_gc_protect()` or other ways before this function.
1347
+ * Or consider using `mrb_yield()` family functions.
1348
+ */
1259
1349
  MRB_API mrb_value mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
1350
+
1260
1351
  MRB_API mrb_value mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
1261
1352
  MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *iseq);
1262
1353
  /* compatibility macros */
@@ -1282,26 +1373,36 @@ MRB_API mrb_bool mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
1282
1373
  /* mrb_cmp(mrb, obj1, obj2): 1:0:-1; -2 for error */
1283
1374
  MRB_API mrb_int mrb_cmp(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
1284
1375
 
1285
- MRB_INLINE int
1286
- mrb_gc_arena_save(mrb_state *mrb)
1287
- {
1288
- return mrb->gc.arena_idx;
1289
- }
1376
+ /* recursion detection */
1377
+ MRB_API mrb_bool mrb_recursive_method_p(mrb_state *mrb, mrb_sym mid, mrb_value obj1, mrb_value obj2);
1378
+ MRB_API mrb_bool mrb_recursive_func_p(mrb_state *mrb, mrb_sym mid, mrb_value obj1, mrb_value obj2);
1290
1379
 
1291
- MRB_INLINE void
1292
- mrb_gc_arena_restore(mrb_state *mrb, int idx)
1293
- {
1294
- mrb->gc.arena_idx = idx;
1295
- }
1380
+ #define MRB_RECURSIVE_P(mrb, mid, obj1, obj2) \
1381
+ mrb_recursive_method_p(mrb, mid, obj1, obj2)
1382
+
1383
+ #define MRB_RECURSIVE_UNARY_P(mrb, mid, obj) \
1384
+ mrb_recursive_method_p(mrb, mid, obj, mrb_nil_value())
1385
+
1386
+ #define MRB_RECURSIVE_BINARY_P(mrb, mid, obj1, obj2) \
1387
+ mrb_recursive_method_p(mrb, mid, obj1, obj2)
1388
+
1389
+ #define MRB_RECURSIVE_FUNC_P(mrb, mid, obj) \
1390
+ mrb_recursive_func_p(mrb, mid, obj, mrb_nil_value())
1391
+
1392
+ #define MRB_RECURSIVE_BINARY_FUNC_P(mrb, mid, obj1, obj2) \
1393
+ mrb_recursive_func_p(mrb, mid, obj1, obj2)
1394
+
1395
+ #define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
1396
+ #define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
1296
1397
 
1297
1398
  MRB_API void mrb_garbage_collect(mrb_state*);
1298
1399
  MRB_API void mrb_full_gc(mrb_state*);
1299
- MRB_API void mrb_incremental_gc(mrb_state *);
1400
+ MRB_API void mrb_incremental_gc(mrb_state*);
1300
1401
  MRB_API void mrb_gc_mark(mrb_state*,struct RBasic*);
1301
1402
  #define mrb_gc_mark_value(mrb,val) do {\
1302
1403
  if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
1303
1404
  } while (0)
1304
- MRB_API void mrb_field_write_barrier(mrb_state *, struct RBasic*, struct RBasic*);
1405
+ MRB_API void mrb_field_write_barrier(mrb_state*, struct RBasic*, struct RBasic*);
1305
1406
  #define mrb_field_write_barrier_value(mrb, obj, val) do{\
1306
1407
  if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
1307
1408
  } while (0)
@@ -1336,7 +1437,7 @@ MRB_API mrb_value mrb_obj_clone(mrb_state *mrb, mrb_value self);
1336
1437
  #define TOLOWER(c) (ISUPPER(c) ? ((c) | 0x20) : (c))
1337
1438
  #endif
1338
1439
 
1339
- MRB_API mrb_value mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, size_t len);
1440
+ MRB_API mrb_value mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, mrb_int len);
1340
1441
  MRB_API mrb_noreturn void mrb_exc_raise(mrb_state *mrb, mrb_value exc);
1341
1442
 
1342
1443
  MRB_API mrb_noreturn void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg);
@@ -1345,7 +1446,7 @@ MRB_API mrb_noreturn void mrb_name_error(mrb_state *mrb, mrb_sym id, const char
1345
1446
  MRB_API mrb_noreturn void mrb_frozen_error(mrb_state *mrb, void *frozen_obj);
1346
1447
  MRB_API mrb_noreturn void mrb_argnum_error(mrb_state *mrb, mrb_int argc, int min, int max);
1347
1448
  MRB_API void mrb_warn(mrb_state *mrb, const char *fmt, ...);
1348
- MRB_API mrb_noreturn void mrb_bug(mrb_state *mrb, const char *fmt, ...);
1449
+ MRB_API mrb_noreturn void mrb_bug(mrb_state *mrb, const char *mesg);
1349
1450
  MRB_API void mrb_print_backtrace(mrb_state *mrb);
1350
1451
  MRB_API void mrb_print_error(mrb_state *mrb);
1351
1452
  /* function for `raisef` formatting */
@@ -1357,6 +1458,8 @@ MRB_API mrb_value mrb_vformat(mrb_state *mrb, const char *format, va_list ap);
1357
1458
  + exception objects obtained from those macros are local to mrb
1358
1459
  */
1359
1460
  #define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
1461
+ #define E_EXCEPTION mrb->eException_class
1462
+ #define E_STANDARD_ERROR mrb->eStandardError_class
1360
1463
  #define E_RUNTIME_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
1361
1464
  #define E_TYPE_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
1362
1465
  #define E_ZERODIV_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(ZeroDivisionError))
@@ -1404,6 +1507,9 @@ MRB_API mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str);
1404
1507
  #define mrb_to_str(mrb, str) mrb_ensure_string_type(mrb,str)
1405
1508
  /* obsolete: use mrb_obj_as_string() instead */
1406
1509
  #define mrb_str_to_str(mrb, str) mrb_obj_as_string(mrb, str)
1510
+ /* check if val is an integer (including Bigint) */
1511
+ MRB_API mrb_value mrb_ensure_integer_type(mrb_state *mrb, mrb_value val);
1512
+ /* check if val fit in mrb_int */
1407
1513
  MRB_API mrb_value mrb_ensure_int_type(mrb_state *mrb, mrb_value val);
1408
1514
  #define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
1409
1515
  /* obsolete: use mrb_ensure_int_type() instead */
@@ -1412,12 +1518,8 @@ MRB_API mrb_value mrb_ensure_int_type(mrb_state *mrb, mrb_value val);
1412
1518
 
1413
1519
  /* string type checking (contrary to the name, it doesn't convert) */
1414
1520
  MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t);
1415
-
1416
- MRB_INLINE void mrb_check_frozen(mrb_state *mrb, void *o)
1417
- {
1418
- if (mrb_frozen_p((struct RBasic*)o)) mrb_frozen_error(mrb, o);
1419
- }
1420
-
1521
+ MRB_API void mrb_check_frozen(mrb_state *mrb, void *);
1522
+ MRB_API void mrb_check_frozen_value(mrb_state *mrb, mrb_value v);
1421
1523
  MRB_API void mrb_define_alias(mrb_state *mrb, struct RClass *c, const char *a, const char *b);
1422
1524
  MRB_API void mrb_define_alias_id(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
1423
1525
  MRB_API const char *mrb_class_name(mrb_state *mrb, struct RClass* klass);
@@ -1426,16 +1528,25 @@ MRB_API void mrb_define_global_const(mrb_state *mrb, const char *name, mrb_value
1426
1528
  MRB_API mrb_value mrb_attr_get(mrb_state *mrb, mrb_value obj, mrb_sym id);
1427
1529
 
1428
1530
  MRB_API mrb_bool mrb_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym mid);
1429
- MRB_API mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c);
1531
+ MRB_API mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, const struct RClass* c);
1430
1532
  MRB_API mrb_bool mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func);
1431
1533
 
1432
1534
  /* obsolete function(s); will be removed */
1433
1535
  #define mrb_int(mrb, val) mrb_as_int(mrb, val)
1434
1536
 
1537
+ /**
1538
+ * Create a new Fiber from proc object
1539
+ *
1540
+ * Implemented in mruby-fiber
1541
+ */
1542
+ MRB_API mrb_value mrb_fiber_new(mrb_state *mrb, const struct RProc *proc);
1543
+
1435
1544
  /**
1436
1545
  * Resume a Fiber
1437
1546
  *
1438
1547
  * Implemented in mruby-fiber
1548
+ *
1549
+ * Switches to the specified fiber and executes. Like the `Fiber#resume` method.
1439
1550
  */
1440
1551
  MRB_API mrb_value mrb_fiber_resume(mrb_state *mrb, mrb_value fib, mrb_int argc, const mrb_value *argv);
1441
1552
 
@@ -1443,6 +1554,15 @@ MRB_API mrb_value mrb_fiber_resume(mrb_state *mrb, mrb_value fib, mrb_int argc,
1443
1554
  * Yield a Fiber
1444
1555
  *
1445
1556
  * Implemented in mruby-fiber
1557
+ *
1558
+ * Passes control to the caller fiber of the running fiber. Like the `Fiber.yield` method.
1559
+ *
1560
+ * @note This function is only available from inside a function defined as a method by,
1561
+ * for example, `mrb_define_method()`.
1562
+ * Also, the work following `mrb_fiber_yield()` cannot be performed,
1563
+ * and the return value of `mrb_fiber_yield()` must be returned as is.
1564
+ *
1565
+ * return mrb_fiber_yield(mrb, argc, argv);
1446
1566
  */
1447
1567
  MRB_API mrb_value mrb_fiber_yield(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
1448
1568
 
@@ -1461,15 +1581,9 @@ MRB_API mrb_value mrb_fiber_alive_p(mrb_state *mrb, mrb_value fib);
1461
1581
  #define E_FIBER_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FiberError))
1462
1582
  MRB_API void mrb_stack_extend(mrb_state*, mrb_int);
1463
1583
 
1464
- /* memory pool implementation */
1465
- typedef struct mrb_pool mrb_pool;
1466
- MRB_API struct mrb_pool* mrb_pool_open(mrb_state*);
1467
- MRB_API void mrb_pool_close(struct mrb_pool*);
1468
- MRB_API void* mrb_pool_alloc(struct mrb_pool*, size_t);
1469
- MRB_API void* mrb_pool_realloc(struct mrb_pool*, void*, size_t oldlen, size_t newlen);
1470
- MRB_API mrb_bool mrb_pool_can_realloc(struct mrb_pool*, void*, size_t);
1471
1584
  /* temporary memory allocation, only effective while GC arena is kept */
1472
- MRB_API void* mrb_alloca(mrb_state *mrb, size_t);
1585
+ MRB_API void* mrb_temp_alloc(mrb_state *mrb, size_t);
1586
+ #define mrb_alloca(mrb, size) mrb_temp_alloc(mrb, size) /* for compatibility */
1473
1587
 
1474
1588
  MRB_API void mrb_state_atexit(mrb_state *mrb, mrb_atexit_func func);
1475
1589
 
@@ -1480,6 +1594,8 @@ MRB_API mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
1480
1594
 
1481
1595
  #ifdef MRB_PRESYM_SCANNING
1482
1596
  # include <mruby/presym/scanning.h>
1597
+ #else
1598
+ # include <mruby/presym.h>
1483
1599
  #endif
1484
1600
 
1485
1601
  #if 0
@@ -1509,6 +1625,12 @@ mrbmemset(void *s, int c, size_t n)
1509
1625
  #define memset(a,b,c) mrbmemset(a,b,c)
1510
1626
  #endif
1511
1627
 
1628
+ #define mrb_int_hash_func(mrb,key) (uint32_t)((key)^((key)<<2)^((key)>>2))
1629
+
1630
+ #define MRB_UNIQNAME(name) MRB_UNIQNAME_1(name, __LINE__)
1631
+ #define MRB_UNIQNAME_1(name, line) MRB_UNIQNAME_2(name, line)
1632
+ #define MRB_UNIQNAME_2(name, line) name##line
1633
+
1512
1634
  MRB_END_DECL
1513
1635
 
1514
1636
  #endif /* MRUBY_H */