ruby2d 0.12.0 → 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 (619) 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 -428
  285. data/assets/app.icns +0 -0
  286. data/assets/include/GLES2/gl2.h +0 -656
  287. data/assets/include/GLES2/gl2ext.h +0 -3949
  288. data/assets/include/GLES2/gl2ext_angle.h +0 -701
  289. data/assets/include/GLES2/gl2platform.h +0 -27
  290. data/assets/include/GLES3/gl3.h +0 -1192
  291. data/assets/include/GLES3/gl31.h +0 -1507
  292. data/assets/include/GLES3/gl32.h +0 -1808
  293. data/assets/include/GLES3/gl3platform.h +0 -27
  294. data/assets/include/KHR/khrplatform.h +0 -290
  295. data/assets/include/SDL2/SDL.h +0 -233
  296. data/assets/include/SDL2/SDL_assert.h +0 -326
  297. data/assets/include/SDL2/SDL_atomic.h +0 -415
  298. data/assets/include/SDL2/SDL_audio.h +0 -1500
  299. data/assets/include/SDL2/SDL_clipboard.h +0 -141
  300. data/assets/include/SDL2/SDL_config.h +0 -61
  301. data/assets/include/SDL2/SDL_config_android.h +0 -194
  302. data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
  303. data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
  304. data/assets/include/SDL2/SDL_config_macosx.h +0 -277
  305. data/assets/include/SDL2/SDL_config_minimal.h +0 -95
  306. data/assets/include/SDL2/SDL_config_ngage.h +0 -89
  307. data/assets/include/SDL2/SDL_config_os2.h +0 -207
  308. data/assets/include/SDL2/SDL_config_pandora.h +0 -141
  309. data/assets/include/SDL2/SDL_config_windows.h +0 -331
  310. data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
  311. data/assets/include/SDL2/SDL_config_winrt.h +0 -220
  312. data/assets/include/SDL2/SDL_config_xbox.h +0 -235
  313. data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
  314. data/assets/include/SDL2/SDL_endian.h +0 -348
  315. data/assets/include/SDL2/SDL_error.h +0 -163
  316. data/assets/include/SDL2/SDL_events.h +0 -1166
  317. data/assets/include/SDL2/SDL_filesystem.h +0 -149
  318. data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
  319. data/assets/include/SDL2/SDL_gesture.h +0 -117
  320. data/assets/include/SDL2/SDL_guid.h +0 -100
  321. data/assets/include/SDL2/SDL_haptic.h +0 -1341
  322. data/assets/include/SDL2/SDL_hidapi.h +0 -451
  323. data/assets/include/SDL2/SDL_hints.h +0 -2569
  324. data/assets/include/SDL2/SDL_image.h +0 -2173
  325. data/assets/include/SDL2/SDL_joystick.h +0 -1066
  326. data/assets/include/SDL2/SDL_keyboard.h +0 -353
  327. data/assets/include/SDL2/SDL_keycode.h +0 -358
  328. data/assets/include/SDL2/SDL_loadso.h +0 -115
  329. data/assets/include/SDL2/SDL_log.h +0 -404
  330. data/assets/include/SDL2/SDL_main.h +0 -275
  331. data/assets/include/SDL2/SDL_mixer.h +0 -2784
  332. data/assets/include/SDL2/SDL_mouse.h +0 -465
  333. data/assets/include/SDL2/SDL_mutex.h +0 -471
  334. data/assets/include/SDL2/SDL_name.h +0 -33
  335. data/assets/include/SDL2/SDL_pixels.h +0 -644
  336. data/assets/include/SDL2/SDL_platform.h +0 -261
  337. data/assets/include/SDL2/SDL_quit.h +0 -58
  338. data/assets/include/SDL2/SDL_rect.h +0 -376
  339. data/assets/include/SDL2/SDL_render.h +0 -1919
  340. data/assets/include/SDL2/SDL_revision.h +0 -6
  341. data/assets/include/SDL2/SDL_rwops.h +0 -841
  342. data/assets/include/SDL2/SDL_sensor.h +0 -322
  343. data/assets/include/SDL2/SDL_shape.h +0 -155
  344. data/assets/include/SDL2/SDL_stdinc.h +0 -830
  345. data/assets/include/SDL2/SDL_surface.h +0 -997
  346. data/assets/include/SDL2/SDL_system.h +0 -623
  347. data/assets/include/SDL2/SDL_syswm.h +0 -386
  348. data/assets/include/SDL2/SDL_test_images.h +0 -78
  349. data/assets/include/SDL2/SDL_test_random.h +0 -115
  350. data/assets/include/SDL2/SDL_thread.h +0 -464
  351. data/assets/include/SDL2/SDL_timer.h +0 -222
  352. data/assets/include/SDL2/SDL_touch.h +0 -150
  353. data/assets/include/SDL2/SDL_ttf.h +0 -2316
  354. data/assets/include/SDL2/SDL_types.h +0 -29
  355. data/assets/include/SDL2/SDL_version.h +0 -204
  356. data/assets/include/SDL2/SDL_video.h +0 -2150
  357. data/assets/include/SDL2/SDL_vulkan.h +0 -215
  358. data/assets/include/SDL2/begin_code.h +0 -187
  359. data/assets/include/mruby/boxing_no.h +0 -58
  360. data/assets/include/mruby/class.h +0 -108
  361. data/assets/include/mruby/error.h +0 -147
  362. data/assets/include/mruby/gc.h +0 -94
  363. data/assets/include/mruby/irep.h +0 -147
  364. data/assets/include/mruby/khash.h +0 -284
  365. data/assets/include/mruby/object.h +0 -43
  366. data/assets/include/mruby/presym/disable.h +0 -70
  367. data/assets/include/mruby/presym/enable.h +0 -37
  368. data/assets/include/mruby/presym.h +0 -40
  369. data/assets/include/mruby/proc.h +0 -211
  370. data/assets/include/mruby/throw.h +0 -66
  371. data/assets/macos/universal/bin/mrbc +0 -0
  372. data/assets/macos/universal/lib/libFLAC.a +0 -0
  373. data/assets/macos/universal/lib/libSDL2.a +0 -0
  374. data/assets/macos/universal/lib/libSDL2_image.a +0 -0
  375. data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
  376. data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
  377. data/assets/macos/universal/lib/libavif.a +0 -0
  378. data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
  379. data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
  380. data/assets/macos/universal/lib/libfreetype.a +0 -0
  381. data/assets/macos/universal/lib/libgraphite2.a +0 -0
  382. data/assets/macos/universal/lib/libharfbuzz.a +0 -0
  383. data/assets/macos/universal/lib/libhwy.a +0 -0
  384. data/assets/macos/universal/lib/libjpeg.a +0 -0
  385. data/assets/macos/universal/lib/libjxl.a +0 -0
  386. data/assets/macos/universal/lib/libmodplug.a +0 -0
  387. data/assets/macos/universal/lib/libmpg123.a +0 -0
  388. data/assets/macos/universal/lib/libmruby.a +0 -0
  389. data/assets/macos/universal/lib/libogg.a +0 -0
  390. data/assets/macos/universal/lib/libpng.a +0 -0
  391. data/assets/macos/universal/lib/libtiff.a +0 -0
  392. data/assets/macos/universal/lib/libvorbis.a +0 -0
  393. data/assets/macos/universal/lib/libvorbisfile.a +0 -0
  394. data/assets/macos/universal/lib/libwebp.a +0 -0
  395. data/assets/macos/universal/lib/libzstd.a +0 -0
  396. data/assets/test_media/README.md +0 -3
  397. data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
  398. data/assets/test_media/bitstream_vera/vera.ttf +0 -0
  399. data/assets/test_media/boom.png +0 -0
  400. data/assets/test_media/coin.png +0 -0
  401. data/assets/test_media/colors.png +0 -0
  402. data/assets/test_media/controller.png +0 -0
  403. data/assets/test_media/dial.wav +0 -0
  404. data/assets/test_media/hero.png +0 -0
  405. data/assets/test_media/image.bmp +0 -0
  406. data/assets/test_media/image.jpg +0 -0
  407. data/assets/test_media/image.png +0 -0
  408. data/assets/test_media/music.flac +0 -0
  409. data/assets/test_media/music.mp3 +0 -0
  410. data/assets/test_media/music.ogg +0 -0
  411. data/assets/test_media/music.wav +0 -0
  412. data/assets/test_media/originals/boom.pxm +0 -0
  413. data/assets/test_media/originals/coin.pxm +0 -0
  414. data/assets/test_media/originals/controller.sketch +0 -0
  415. data/assets/test_media/originals/hero.pxm +0 -0
  416. data/assets/test_media/originals/image.pxm +0 -0
  417. data/assets/test_media/originals/music.caf +0 -0
  418. data/assets/test_media/originals/texture_atlas.pxm +0 -0
  419. data/assets/test_media/rondo_alla_turka.ogg +0 -0
  420. data/assets/test_media/sound.flac +0 -0
  421. data/assets/test_media/sound.mp3 +0 -0
  422. data/assets/test_media/sound.ogg +0 -0
  423. data/assets/test_media/sound.wav +0 -0
  424. data/assets/test_media/sprite_sheet.png +0 -0
  425. data/assets/test_media/texture_atlas.png +0 -0
  426. data/assets/wasm/libmruby.a +0 -0
  427. data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
  428. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
  429. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
  430. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
  431. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
  432. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
  433. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
  434. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
  435. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
  436. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
  437. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
  438. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
  439. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
  440. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
  441. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
  442. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
  443. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
  444. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
  445. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
  446. data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
  447. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
  448. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
  449. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
  450. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
  451. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
  452. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
  453. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
  454. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
  455. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
  456. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
  457. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
  458. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
  459. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
  460. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
  461. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
  462. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
  463. data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
  464. data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
  465. data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
  466. data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
  467. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
  468. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
  469. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
  470. data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
  471. data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
  472. data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
  473. data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
  474. data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
  475. data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
  476. data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
  477. data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
  478. data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
  479. data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
  480. data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
  481. data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
  482. data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
  483. data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
  484. data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
  485. data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
  486. data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
  487. data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
  488. data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
  489. data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
  490. data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
  491. data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
  492. data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
  493. data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
  494. data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
  495. data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
  496. data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
  497. data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
  498. data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
  499. data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  500. data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
  501. data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
  502. data/assets/xcode/ios/Info.plist +0 -43
  503. data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
  504. data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
  505. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  506. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  507. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  508. data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
  509. data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
  510. data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
  511. data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
  512. data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
  513. data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
  514. data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
  515. data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
  516. data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
  517. data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
  518. data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
  519. data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
  520. data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
  521. data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
  522. data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
  523. data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
  524. data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
  525. data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
  526. data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
  527. data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
  528. data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
  529. data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
  530. data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
  531. data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
  532. data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
  533. data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
  534. data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
  535. data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
  536. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  537. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  538. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  539. data/assets/xcode/ios/main.c +0 -1
  540. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  541. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
  542. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
  543. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  544. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
  545. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  546. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  547. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  548. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
  549. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
  550. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  551. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
  552. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  553. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  554. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
  555. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
  556. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
  557. data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
  558. data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
  559. data/assets/xcode/tvos/Info.plist +0 -30
  560. data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
  561. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
  562. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  563. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  564. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  565. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
  566. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
  567. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
  568. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
  569. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
  570. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
  571. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
  572. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
  573. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
  574. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
  575. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
  576. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
  577. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
  578. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
  579. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
  580. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
  581. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
  582. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
  583. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
  584. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
  585. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
  586. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
  587. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
  588. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
  589. data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
  590. data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
  591. data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
  592. data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
  593. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  594. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  595. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  596. data/assets/xcode/tvos/main.c +0 -1
  597. data/ext/ruby2d/common.c +0 -185
  598. data/ext/ruby2d/controllers.c +0 -110
  599. data/ext/ruby2d/gl.c +0 -398
  600. data/ext/ruby2d/gl2.c +0 -86
  601. data/ext/ruby2d/gl3.c +0 -304
  602. data/ext/ruby2d/gles.c +0 -302
  603. data/ext/ruby2d/input.c +0 -48
  604. data/ext/ruby2d/music.c +0 -127
  605. data/ext/ruby2d/sound.c +0 -132
  606. data/lib/ruby2d/cli/console.rb +0 -65
  607. data/lib/ruby2d/cli/enable_console.rb +0 -7
  608. data/lib/ruby2d/cli/platform.rb +0 -17
  609. data/lib/ruby2d/music.rb +0 -77
  610. data/lib/ruby2d/pixel.rb +0 -18
  611. data/lib/ruby2d/pixmap.rb +0 -39
  612. data/lib/ruby2d/pixmap_atlas.rb +0 -56
  613. data/lib/ruby2d/sound.rb +0 -61
  614. data/lib/ruby2d/texture.rb +0 -38
  615. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
  616. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
  617. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
  618. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
  619. /data/assets/{include → platform/include}/mruby/re.h +0 -0
@@ -18,7 +18,7 @@
18
18
  #endif
19
19
 
20
20
  #if defined(MRB_32BIT) && defined(MRB_64BIT)
21
- #error Cannot build for 32 and 64 bit architecture at the same time
21
+ #error Cannot build for 32 and 64-bit architecture at the same time
22
22
  #endif
23
23
 
24
24
  /* configuration options: */
@@ -42,21 +42,6 @@
42
42
  #error Cannot define MRB_USE_FLOAT32 and MRB_NO_FLOAT at the same time
43
43
  #endif
44
44
 
45
- /* add -DMRB_NO_METHOD_CACHE to disable method cache to save memory */
46
- //#define MRB_NO_METHOD_CACHE
47
- /* size of the method cache (need to be the power of 2) */
48
- //#define MRB_METHOD_CACHE_SIZE (1<<8)
49
-
50
- /* add -DMRB_USE_METHOD_T_STRUCT on machines that use higher bits of function pointers */
51
- /* no MRB_USE_METHOD_T_STRUCT requires highest 2 bits of function pointers to be zero */
52
- #ifndef MRB_USE_METHOD_T_STRUCT
53
- // can't use highest 2 bits of function pointers at least on 32bit
54
- // Windows and 32bit Linux.
55
- # ifdef MRB_32BIT
56
- # define MRB_USE_METHOD_T_STRUCT
57
- # endif
58
- #endif
59
-
60
45
  /* define on big endian machines; used by MRB_NAN_BOXING, etc. */
61
46
  #ifndef MRB_ENDIAN_BIG
62
47
  # if (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN) || \
@@ -79,34 +64,57 @@
79
64
  # define MRB_WORD_BOXING
80
65
  #endif
81
66
 
82
- /* if defined mruby allocates Float objects in the heap to keep full precision if needed */
83
- //#define MRB_WORDBOX_NO_FLOAT_TRUNCATE
67
+ /* if defined mruby does not inline float values in word boxing;
68
+ all floats are heap-allocated as RFloat objects */
69
+ //#define MRB_WORDBOX_NO_INLINE_FLOAT
70
+
71
+ /* obsolete configuration */
72
+ #if defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
73
+ # define MRB_WORDBOX_NO_INLINE_FLOAT
74
+ #endif
84
75
 
85
- /* add -DMRB_INT32 to use 32bit integer for mrb_int; conflict with MRB_INT64;
76
+ /* add -DMRB_INT32 to use 32-bit integer for mrb_int; conflict with MRB_INT64;
86
77
  Default for 32-bit CPU mode. */
87
78
  //#define MRB_INT32
88
79
 
89
- /* add -DMRB_INT64 to use 64bit integer for mrb_int; conflict with MRB_INT32;
80
+ /* add -DMRB_INT64 to use 64-bit integer for mrb_int; conflict with MRB_INT32;
90
81
  Default for 64-bit CPU mode (unless using MRB_NAN_BOXING). */
91
82
  //#define MRB_INT64
92
83
 
93
84
  /* if no specific integer type is chosen */
94
85
  #if !defined(MRB_INT32) && !defined(MRB_INT64)
95
86
  # if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING)
96
- /* Use 64bit integers on 64bit architecture (without MRB_NAN_BOXING) */
87
+ /* Use 64-bit integers on 64-bit architecture (without MRB_NAN_BOXING) */
97
88
  # define MRB_INT64
98
89
  # else
99
- /* Otherwise use 32bit integers */
90
+ /* Otherwise use 32-bit integers */
100
91
  # define MRB_INT32
101
92
  # endif
102
93
  #endif
103
94
 
95
+ /* MRB_INT64 on 32-bit with word/NaN boxing causes alignment issues
96
+ for heap-allocated RInteger (int64_t needs 8-byte alignment but
97
+ GC heap slots may not guarantee it); use MRB_NO_BOXING instead */
98
+ #if defined(MRB_INT64) && defined(MRB_32BIT) && !defined(MRB_NO_BOXING)
99
+ #error "MRB_INT64 on 32-bit requires MRB_NO_BOXING"
100
+ #endif
101
+
104
102
  /* call malloc_trim(0) from mrb_full_gc() */
105
103
  //#define MRB_USE_MALLOC_TRIM
106
104
 
107
105
  /* string class to handle UTF-8 encoding */
108
106
  //#define MRB_UTF8_STRING
109
107
 
108
+ /* maximum length of strings */
109
+ /* the default value is 1MB */
110
+ /* set this value to zero to skip the check */
111
+ //#define MRB_STR_LENGTH_MAX 1048576
112
+
113
+ /* maximum length of arrays */
114
+ /* the default value is 2**17 entries */
115
+ /* set this value to zero to skip the check */
116
+ //#define MRB_ARY_LENGTH_MAX 131072
117
+
110
118
  /* argv max size in mrb_funcall */
111
119
  //#define MRB_FUNCALL_ARGC_MAX 16
112
120
 
@@ -130,8 +138,8 @@
130
138
  /* turn off generational GC by default */
131
139
  //#define MRB_GC_TURN_OFF_GENERATIONAL
132
140
 
133
- /* default size of khash table bucket */
134
- //#define KHASH_DEFAULT_SIZE 32
141
+ /* initial size of khash table bucket */
142
+ //#define KHASH_INITIAL_SIZE 32
135
143
 
136
144
  /* allocated memory address alignment */
137
145
  //#define POOL_ALIGNMENT 4
@@ -158,15 +166,18 @@
158
166
  //#define MRB_USE_DEBUG_HOOK /* hooks for debugger */
159
167
  //#define MRB_USE_ALL_SYMBOLS /* Symbol.all_symbols */
160
168
 
161
- /* obsolete configurations */
162
- #ifdef MRB_METHOD_T_STRUCT
163
- # define MRB_USE_METHOD_T_STRUCT
169
+ /* Symbol table configuration */
170
+ /* Threshold for switching from linear search to hash table */
171
+ #ifndef MRB_SYMBOL_LINEAR_THRESHOLD
172
+ #define MRB_SYMBOL_LINEAR_THRESHOLD 256
164
173
  #endif
174
+
175
+ /* obsolete configurations */
165
176
  #if defined(DISABLE_STDIO) || defined(MRB_DISABLE_STDIO)
166
177
  # define MRB_NO_STDIO
167
178
  #endif
168
- #ifdef MRB_DISABLE_DIRECT_THREADING
169
- # define MRB_NO_DIRECT_THREADING
179
+ #if defined(MRB_DISABLE_DIRECT_THREADING) || defined(MRB_NO_DIRECT_THREADING)
180
+ # define MRB_USE_VM_SWITCH_DISPATCH
170
181
  #endif
171
182
  #if defined(ENABLE_DEBUG) || defined(MRB_ENABLE_DEBUG_HOOK)
172
183
  # define MRB_USE_DEBUG_HOOK
@@ -197,8 +208,8 @@
197
208
  # define MRB_NO_METHOD_CACHE
198
209
  # endif
199
210
 
200
- # ifndef KHASH_DEFAULT_SIZE
201
- # define KHASH_DEFAULT_SIZE 16
211
+ # ifndef KHASH_INITIAL_SIZE
212
+ # define KHASH_INITIAL_SIZE 16
202
213
  # endif
203
214
 
204
215
  # ifndef MRB_HEAP_PAGE_SIZE
@@ -20,7 +20,7 @@ typedef struct mrb_shared_array {
20
20
  mrb_value *ptr;
21
21
  } mrb_shared_array;
22
22
 
23
- #if defined(MRB_32BIT) && defined(MRB_NO_BOXING) && !defined(MRB_USE_FLOAT32) && !defined(MRB_ARY_NO_EMBED)
23
+ #if defined(MRB_32BIT) && defined(MRB_NO_BOXING) && (!defined(MRB_USE_FLOAT32) || defined(MRB_INT64)) && !defined(MRB_ARY_NO_EMBED)
24
24
  # define MRB_ARY_NO_EMBED
25
25
  #endif
26
26
 
@@ -85,8 +85,9 @@ struct RArray {
85
85
  #define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED)
86
86
  #define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED)
87
87
 
88
- void mrb_ary_decref(mrb_state*, mrb_shared_array*);
89
88
  MRB_API void mrb_ary_modify(mrb_state*, struct RArray*);
89
+ MRB_API mrb_value mrb_ary_dup(mrb_state*, mrb_value ary);
90
+ MRB_API mrb_value mrb_ary_make_shared_copy(mrb_state*, mrb_value ary);
90
91
  MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
91
92
 
92
93
  /*
@@ -296,8 +297,6 @@ MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
296
297
  */
297
298
  MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len);
298
299
 
299
- /* helper functions */
300
- mrb_value mrb_ary_subseq(mrb_state *mrb, mrb_value ary, mrb_int beg, mrb_int len);
301
300
 
302
301
  MRB_END_DECL
303
302
 
@@ -98,6 +98,16 @@ mrb_type(mrb_value o)
98
98
  }
99
99
  }
100
100
 
101
+ MRB_INLINE enum mrb_vtype
102
+ mrb_unboxed_type(mrb_value o)
103
+ {
104
+ if (!mrb_float_p(o) && mrb_nb_tt(o) == MRB_NANBOX_TT_OBJECT && o.u != 0) {
105
+ return ((struct RBasic*)(uintptr_t)o.u)->tt;
106
+ } else {
107
+ return MRB_TT_FALSE;
108
+ }
109
+ }
110
+
101
111
  #define NANBOX_SET_MISC_VALUE(r,t,i) NANBOX_SET_VALUE(r, MRB_NANBOX_TT_MISC, ((uint64_t)(t)<<32) | (i))
102
112
 
103
113
  #define mrb_float(o) mrb_nan_boxing_value_float(o)
@@ -0,0 +1,59 @@
1
+ /**
2
+ ** @file mruby/boxing_no.h - unboxed mrb_value definition
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_BOXING_NO_H
8
+ #define MRUBY_BOXING_NO_H
9
+
10
+ #define MRB_FIXNUM_SHIFT 0
11
+ #define MRB_SYMBOL_SHIFT 0
12
+ #define MRB_FIXNUM_MIN MRB_INT_MIN
13
+ #define MRB_FIXNUM_MAX MRB_INT_MAX
14
+
15
+ union mrb_value_union {
16
+ #ifndef MRB_NO_FLOAT
17
+ mrb_float f;
18
+ #endif
19
+ void *p;
20
+ mrb_int i;
21
+ mrb_sym sym;
22
+ };
23
+
24
+ typedef struct mrb_value {
25
+ union mrb_value_union value;
26
+ enum mrb_vtype tt;
27
+ } mrb_value;
28
+
29
+ #define mrb_ptr(o) (o).value.p
30
+ #define mrb_cptr(o) mrb_ptr(o)
31
+ #ifndef MRB_NO_FLOAT
32
+ #define mrb_float(o) (o).value.f
33
+ #endif
34
+ #define mrb_fixnum(o) (o).value.i
35
+ #define mrb_integer(o) mrb_fixnum(o)
36
+ #define mrb_symbol(o) (o).value.sym
37
+ #define mrb_type(o) (o).tt
38
+ #define mrb_unboxed_type(o) (o).tt
39
+
40
+ #define BOXNO_SET_VALUE(o, ttt, attr, v) do {\
41
+ (o).tt = ttt;\
42
+ (o).attr = v;\
43
+ } while (0)
44
+
45
+ #define SET_NIL_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
46
+ #define SET_FALSE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
47
+ #define SET_TRUE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
48
+ #define SET_BOOL_VALUE(r,b) BOXNO_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1)
49
+ #define SET_INT_VALUE(mrb,r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
50
+ #define SET_FIXNUM_VALUE(r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
51
+ #ifndef MRB_NO_FLOAT
52
+ #define SET_FLOAT_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
53
+ #endif
54
+ #define SET_SYM_VALUE(r,v) BOXNO_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
55
+ #define SET_OBJ_VALUE(r,v) BOXNO_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
56
+ #define SET_CPTR_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_CPTR, value.p, v)
57
+ #define SET_UNDEF_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0)
58
+
59
+ #endif /* MRUBY_BOXING_NO_H */
@@ -7,15 +7,44 @@
7
7
  #ifndef MRUBY_BOXING_WORD_H
8
8
  #define MRUBY_BOXING_WORD_H
9
9
 
10
- #if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
11
- # define MRB_WORDBOX_NO_FLOAT_TRUNCATE
10
+ #if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_INLINE_FLOAT)
11
+ # define MRB_WORDBOX_NO_INLINE_FLOAT
12
12
  #endif
13
13
 
14
- #if !defined(MRB_NO_FLOAT) && defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
14
+ #ifndef MRB_NO_FLOAT
15
15
  struct RFloat {
16
16
  MRB_OBJECT_HEADER;
17
+ #ifdef MRB_WORDBOX_NO_INLINE_FLOAT
18
+ /* avoid 8-byte alignment on 32-bit; use memcpy-based accessors */
19
+ char f[sizeof(mrb_float)];
20
+ #else
17
21
  mrb_float f;
22
+ #endif
18
23
  };
24
+
25
+ #include <string.h>
26
+
27
+ static inline mrb_float
28
+ mrb_rfloat_value(const struct RFloat *p)
29
+ {
30
+ #ifdef MRB_WORDBOX_NO_INLINE_FLOAT
31
+ mrb_float f;
32
+ memcpy(&f, p->f, sizeof(mrb_float));
33
+ return f;
34
+ #else
35
+ return p->f;
36
+ #endif
37
+ }
38
+
39
+ static inline void
40
+ mrb_rfloat_set(struct RFloat *p, mrb_float f)
41
+ {
42
+ #ifdef MRB_WORDBOX_NO_INLINE_FLOAT
43
+ memcpy(p->f, &f, sizeof(mrb_float));
44
+ #else
45
+ p->f = f;
46
+ #endif
47
+ }
19
48
  #endif
20
49
 
21
50
  struct RInteger {
@@ -50,8 +79,9 @@ enum mrb_special_consts {
50
79
  #define WORDBOX_FIXNUM_FLAG (1 << (WORDBOX_FIXNUM_BIT_POS - 1))
51
80
  #define WORDBOX_FIXNUM_MASK ((1 << WORDBOX_FIXNUM_BIT_POS) - 1)
52
81
 
53
- #if defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
82
+ #if defined(MRB_WORDBOX_NO_INLINE_FLOAT) || defined(MRB_NO_FLOAT)
54
83
  /* floats are allocated in heaps */
84
+ #define WORDBOX_IMMEDIATE_MASK 0x03
55
85
  #define WORDBOX_SYMBOL_BIT_POS 2
56
86
  #define WORDBOX_SYMBOL_SHIFT WORDBOX_SYMBOL_BIT_POS
57
87
  #define WORDBOX_SYMBOL_FLAG (1 << (WORDBOX_SYMBOL_BIT_POS - 1))
@@ -68,7 +98,9 @@ enum mrb_special_consts {
68
98
  #define WORDBOX_SYMBOL_MASK 0x1f
69
99
  #endif
70
100
 
101
+ #ifndef WORDBOX_IMMEDIATE_MASK
71
102
  #define WORDBOX_IMMEDIATE_MASK 0x07
103
+ #endif
72
104
 
73
105
  #define WORDBOX_SET_SHIFT_VALUE(o,n,v) \
74
106
  ((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
@@ -80,34 +112,29 @@ enum mrb_special_consts {
80
112
  /*
81
113
  * mrb_value representation:
82
114
  *
83
- * 64bit word with inline float:
115
+ * 64-bit word with inline float (rotation encoding, lossless):
84
116
  * nil : ...0000 0000 (all bits are 0)
85
117
  * false : ...0000 0100 (mrb_fixnum(v) != 0)
86
118
  * true : ...0000 1100
87
119
  * undef : ...0001 0100
88
120
  * symbol: ...0001 1100 (use only upper 32-bit as symbol value with MRB_64BIT)
89
121
  * fixnum: ...IIII III1
90
- * float : ...FFFF FF10 (51 bit significands; require MRB_64BIT)
122
+ * float : ...FFFF FF10 (rotl64(float64-ADDEND, 3); exponent [-255,+256])
91
123
  * object: ...PPPP P000
124
+ * (floats outside inline range are heap-allocated as RFloat)
92
125
  *
93
- * 32bit word with inline float:
94
- * nil : ...0000 0000 (all bits are 0)
95
- * false : ...0000 0100 (mrb_fixnum(v) != 0)
96
- * true : ...0000 1100
97
- * undef : ...0001 0100
98
- * symbol: ...SSS1 0100 (symbol occupies 20bits)
99
- * fixnum: ...IIII III1
100
- * float : ...FFFF FF10 (22 bit significands; require MRB_64BIT)
101
- * object: ...PPPP P000
126
+ * 64-bit word with inline float32 (MRB_USE_FLOAT32):
127
+ * float : ...FFFF FF10 (float32 shifted left by 2)
128
+ * (other values same as above)
102
129
  *
103
- * and word boxing without inline float (MRB_WORDBOX_NO_FLOAT_TRUNCATE):
130
+ * word boxing without inline float (MRB_WORDBOX_NO_INLINE_FLOAT):
104
131
  * nil : ...0000 0000 (all bits are 0)
105
132
  * false : ...0000 0100 (mrb_fixnum(v) != 0)
106
133
  * true : ...0000 1100
107
134
  * undef : ...0001 0100
108
135
  * fixnum: ...IIII III1
109
136
  * symbol: ...SSSS SS10
110
- * object: ...PPPP P000 (any bits are 1)
137
+ * object: ...PPPP PP00 (any bits are 1)
111
138
  */
112
139
  typedef struct mrb_value {
113
140
  uintptr_t w;
@@ -117,10 +144,9 @@ union mrb_value_ {
117
144
  void *p;
118
145
  struct RBasic *bp;
119
146
  #ifndef MRB_NO_FLOAT
120
- #ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
121
- mrb_float f;
122
- #else
123
147
  struct RFloat *fp;
148
+ #if !defined(MRB_WORDBOX_NO_INLINE_FLOAT) && defined(MRB_USE_FLOAT32)
149
+ mrb_float f;
124
150
  #endif
125
151
  #endif
126
152
  struct RInteger *ip;
@@ -145,16 +171,20 @@ MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float);
145
171
  #endif
146
172
  MRB_API mrb_value mrb_boxing_int_value(struct mrb_state*, mrb_int);
147
173
 
174
+ #if WORDBOX_IMMEDIATE_MASK == 0x3
175
+ #define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w <= MRB_Qundef)
176
+ #else
148
177
  #define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
178
+ #endif
149
179
 
150
180
  #define mrb_ptr(o) mrb_val_union(o).p
151
181
  #define mrb_cptr(o) mrb_val_union(o).vp->p
152
182
  #ifndef MRB_NO_FLOAT
153
- #ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
183
+ #ifndef MRB_WORDBOX_NO_INLINE_FLOAT
154
184
  MRB_API mrb_float mrb_word_boxing_value_float(mrb_value v);
155
185
  #define mrb_float(o) mrb_word_boxing_value_float(o)
156
186
  #else
157
- #define mrb_float(o) mrb_val_union(o).fp->f
187
+ #define mrb_float(o) mrb_rfloat_value(mrb_val_union(o).fp)
158
188
  #endif
159
189
  #endif
160
190
  #define mrb_fixnum(o) (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
@@ -175,11 +205,16 @@ mrb_integer_func(mrb_value o) {
175
205
  #define mrb_false_p(o) ((o).w == MRB_Qfalse)
176
206
  #define mrb_true_p(o) ((o).w == MRB_Qtrue)
177
207
  #ifndef MRB_NO_FLOAT
178
- #ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
208
+ #ifdef MRB_WORDBOX_NO_INLINE_FLOAT
209
+ #define mrb_float_p(o) WORDBOX_OBJ_TYPE_P(o, FLOAT)
210
+ #elif defined(MRB_USE_FLOAT32) && defined(MRB_64BIT)
179
211
  #define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
180
212
  #else
181
- #define mrb_float_p(o) WORDBOX_OBJ_TYPE_P(o, FLOAT)
213
+ /* rotation encoding: most floats inline, edge cases on heap */
214
+ #define mrb_float_p(o) (WORDBOX_SHIFT_VALUE_P(o, FLOAT) || WORDBOX_OBJ_TYPE_P(o, FLOAT))
182
215
  #endif
216
+ #else
217
+ #define mrb_float_p(o) FALSE
183
218
  #endif
184
219
  #define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
185
220
  #define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
@@ -222,10 +257,21 @@ mrb_type(mrb_value o)
222
257
  mrb_fixnum_p(o) ? MRB_TT_INTEGER :
223
258
  mrb_symbol_p(o) ? MRB_TT_SYMBOL :
224
259
  mrb_undef_p(o) ? MRB_TT_UNDEF :
225
- #ifndef MRB_NO_FLOAT
226
260
  mrb_float_p(o) ? MRB_TT_FLOAT :
227
- #endif
228
261
  mrb_val_union(o).bp->tt;
229
262
  }
230
263
 
264
+ MRB_INLINE enum mrb_vtype
265
+ mrb_unboxed_type(mrb_value o)
266
+ {
267
+ if (mrb_nil_p(o)) {
268
+ return MRB_TT_FALSE;
269
+ } else if ((o.w & WORDBOX_IMMEDIATE_MASK) == 0) {
270
+ return mrb_val_union(o).bp->tt;
271
+ } else {
272
+ return MRB_TT_FALSE;
273
+ }
274
+ }
275
+
276
+
231
277
  #endif /* MRUBY_BOXING_WORD_H */
@@ -0,0 +1,157 @@
1
+ /**
2
+ ** @file mruby/class.h - Class class
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_CLASS_H
8
+ #define MRUBY_CLASS_H
9
+
10
+ #include "common.h"
11
+
12
+ /**
13
+ * Class class
14
+ */
15
+ MRB_BEGIN_DECL
16
+
17
+ struct RClass {
18
+ MRB_OBJECT_HEADER;
19
+ struct iv_tbl *iv;
20
+ struct mrb_mt_tbl *mt;
21
+ struct RClass *super;
22
+ };
23
+
24
+ #define mrb_class_ptr(v) ((struct RClass*)(mrb_ptr(v)))
25
+
26
+ MRB_INLINE struct RClass*
27
+ mrb_class(mrb_state *mrb, mrb_value v)
28
+ {
29
+ if (!mrb_immediate_p(v)) {
30
+ return mrb_obj_ptr(v)->c;
31
+ }
32
+
33
+ switch (mrb_type(v)) {
34
+ case MRB_TT_FALSE:
35
+ if (mrb_fixnum(v))
36
+ return mrb->false_class;
37
+ return mrb->nil_class;
38
+ case MRB_TT_TRUE:
39
+ return mrb->true_class;
40
+ case MRB_TT_SYMBOL:
41
+ return mrb->symbol_class;
42
+ case MRB_TT_INTEGER:
43
+ return mrb->integer_class;
44
+ #ifndef MRB_NO_FLOAT
45
+ case MRB_TT_FLOAT:
46
+ return mrb->float_class;
47
+ #endif
48
+ case MRB_TT_CPTR:
49
+ return mrb->object_class;
50
+ default:
51
+ return NULL;
52
+ }
53
+ }
54
+
55
+ /* flags:
56
+ 20: frozen
57
+ 19: is_prepended
58
+ 18: is_origin
59
+ 17: is_inherited (used by method cache)
60
+ 7-16: unused
61
+ 6: prohibit Class#allocate
62
+ 0-5: instance type
63
+ */
64
+ #define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
65
+ #define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
66
+ #define MRB_CLASS_ORIGIN(c) do {\
67
+ if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
68
+ (c) = (c)->super;\
69
+ while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
70
+ (c) = (c)->super;\
71
+ }\
72
+ }\
73
+ } while (0)
74
+ #define MRB_FL_CLASS_IS_INHERITED (1 << 17)
75
+ #define MRB_INSTANCE_TT_MASK (0x1F)
76
+ #define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
77
+ #define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
78
+ #define MRB_FL_UNDEF_ALLOCATE (1 << 6)
79
+ #define MRB_UNDEF_ALLOCATOR(c) (mrb_assert((c)->tt == MRB_TT_CLASS), (c)->flags |= MRB_FL_UNDEF_ALLOCATE)
80
+ #define MRB_UNDEF_ALLOCATOR_P(c) ((c)->flags & MRB_FL_UNDEF_ALLOCATE)
81
+ #define MRB_DEFINE_ALLOCATOR(c) ((c)->flags &= ~MRB_FL_UNDEF_ALLOCATE)
82
+
83
+ MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
84
+ MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b);
85
+ MRB_API void mrb_remove_method(mrb_state *mrb, struct RClass *c, mrb_sym sym);
86
+
87
+ MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
88
+ MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
89
+
90
+ MRB_API struct RClass* mrb_class_real(struct RClass* cl);
91
+ MRB_API struct RClass* mrb_class_outer(mrb_state *mrb, struct RClass *c);
92
+
93
+ #ifndef MRB_NO_METHOD_CACHE
94
+ void mrb_mc_clear_by_class(mrb_state *mrb, struct RClass* c);
95
+ #else
96
+ #define mrb_mc_clear_by_class(mrb,c)
97
+ #endif
98
+
99
+ /* return non zero to break the loop */
100
+ typedef int (mrb_mt_foreach_func)(mrb_state*,mrb_sym,mrb_method_t,void*);
101
+ MRB_API void mrb_mt_foreach(mrb_state*, struct RClass*, mrb_mt_foreach_func*, void*);
102
+
103
+ /* ROM method table types for static method registration */
104
+ union mrb_mt_ptr {
105
+ const struct RProc *proc;
106
+ mrb_func_t func;
107
+ };
108
+
109
+ /* entry combining function pointer, symbol key, and flags */
110
+ typedef struct mrb_mt_entry {
111
+ union mrb_mt_ptr val;
112
+ mrb_sym key; /* pure symbol ID (no flags packed) */
113
+ uint32_t flags; /* method flags + aspec */
114
+ } mrb_mt_entry;
115
+
116
+ typedef struct mrb_mt_tbl {
117
+ int size;
118
+ int alloc; /* bit 30: MRB_MT_READONLY_BIT, bit 29: MRB_MT_FROZEN_BIT */
119
+ mrb_mt_entry *ptr;
120
+ struct mrb_mt_tbl *next;
121
+ } mrb_mt_tbl;
122
+
123
+ #define MRB_MT_READONLY_BIT (1 << 30)
124
+ #define MRB_MT_FROZEN_BIT (1 << 29)
125
+ #define MRB_MT_FUNC (1 << 24) /* MRB_METHOD_FUNC_FL */
126
+ #define MRB_MT_PUBLIC 0
127
+ #define MRB_MT_PRIVATE (1 << 25) /* MRB_METHOD_PRIVATE_FL */
128
+
129
+ /* ROM table entry: 3rd param is MRB_ARGS_*() optionally OR'd with MRB_MT_PRIVATE. */
130
+ #define MRB_MT_ENTRY(fn, sym, flags) \
131
+ { { .func = (fn) }, (sym), (flags) | MRB_MT_FUNC }
132
+ #define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) & 0xffffff))
133
+
134
+ /* "removed" tombstone: MRB_MT_FUNC flag set with NULL function pointer.
135
+ This combination never occurs naturally (C functions are never NULL).
136
+ Unlike undef (proc=NULL without MRB_MT_FUNC), a removed marker makes
137
+ mt_get() return 0 ("not found"), blocking ROM chain walk while
138
+ allowing superclass lookup. */
139
+ #define MRB_MT_REMOVED_P(e) (((e).flags&MRB_MT_FUNC) && (e).val.func==NULL)
140
+
141
+ /* Singly-linked list node for tracking heap-allocated ROM wrappers. */
142
+ struct mrb_mt_rom_list {
143
+ mrb_mt_tbl *tbl;
144
+ struct mrb_mt_rom_list *next;
145
+ };
146
+
147
+ /* Allocate a per-state ROM layer wrapping the const entries array,
148
+ and push it onto the class's method table chain. */
149
+ void mrb_mt_init_rom(mrb_state *mrb, struct RClass *c,
150
+ const mrb_mt_entry *entries, int size);
151
+ #define MRB_MT_INIT_ROM(mrb, cls, entries) \
152
+ mrb_mt_init_rom(mrb, cls, entries, \
153
+ (int)(sizeof(entries)/sizeof(entries[0])))
154
+
155
+ MRB_END_DECL
156
+
157
+ #endif /* MRUBY_CLASS_H */
@@ -59,6 +59,35 @@ MRB_BEGIN_DECL
59
59
  # define mrb_deprecated
60
60
  #endif
61
61
 
62
+ /** Branch prediction hints for optimization. */
63
+ #if defined(__GNUC__) || defined(__clang__)
64
+ # define mrb_likely(x) __builtin_expect(!!(x), 1)
65
+ # define mrb_unlikely(x) __builtin_expect(!!(x), 0)
66
+ #else
67
+ # define mrb_likely(x) (x)
68
+ # define mrb_unlikely(x) (x)
69
+ #endif
70
+
71
+ /** Declare a type or object as an alignment requirement. */
72
+ #ifndef mrb_alignas
73
+ # if defined(__cplusplus) && __cplusplus >= 201103L
74
+ # // https://en.cppreference.com/w/cpp/language/alignas
75
+ # define mrb_alignas(n) alignas(n)
76
+ # elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
77
+ # // https://en.cppreference.com/w/c/language/_Alignas
78
+ # define mrb_alignas(n) _Alignas(n)
79
+ # elif defined(_MSC_VER) || defined(__INTEL_COMPILER)
80
+ # // https://learn.microsoft.com/en-us/cpp/cpp/align-cpp?view=msvc-170
81
+ # define mrb_alignas(n) __declspec(align(n))
82
+ # elif defined(__GNUC__) || defined(__clang__)
83
+ # // https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-aligned-type-attribute
84
+ # define mrb_alignas(n) __attribute__((aligned(n)))
85
+ # else
86
+ # // `mrb_alignas` defined as dummy. If necessary, send issues to https://github.com/mruby/mruby .
87
+ # define mrb_alignas(n)
88
+ # endif
89
+ #endif
90
+
62
91
  /** Declare a function as always inlined. */
63
92
  #if defined _MSC_VER && _MSC_VER < 1900
64
93
  # ifndef __cplusplus
@@ -67,7 +96,7 @@ MRB_BEGIN_DECL
67
96
  #endif
68
97
  #define MRB_INLINE static inline
69
98
 
70
- /** Declare a public MRuby API function. */
99
+ /** Declare a public mruby API function. */
71
100
  #ifndef MRB_API
72
101
  #if defined(MRB_BUILD_AS_DLL)
73
102
  #if defined(MRB_CORE) || defined(MRB_LIB)