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
@@ -0,0 +1,455 @@
1
+ /**
2
+ ** @file mruby/khash.h - Hash for mruby
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_KHASH_H
8
+ #define MRUBY_KHASH_H
9
+
10
+ #include <string.h>
11
+
12
+ #include <mruby.h>
13
+ #include "common.h"
14
+
15
+ /**
16
+ * khash definitions used in mruby's hash table.
17
+ */
18
+ MRB_BEGIN_DECL
19
+
20
+ typedef uint32_t khint_t;
21
+ typedef khint_t khiter_t;
22
+
23
+ #ifndef KHASH_INITIAL_SIZE
24
+ # define KHASH_INITIAL_SIZE 32
25
+ #endif
26
+ #define KHASH_MIN_SIZE 8
27
+ #define KHASH_SMALL_LIMIT 4
28
+
29
+ #define KH_UPPER_BOUND(x) ((x) - ((x)>>3)) /* 87.5% load factor */
30
+
31
+ /* extern uint8_t __m[]; */
32
+
33
+ /* mask for flags */
34
+ static const uint8_t __m_empty[] = {0x02, 0x08, 0x20, 0x80};
35
+ static const uint8_t __m_del[] = {0x01, 0x04, 0x10, 0x40};
36
+ static const uint8_t __m_either[] = {0x03, 0x0c, 0x30, 0xc0};
37
+
38
+
39
+ #define __ac_isempty(ed_flag, i) (ed_flag[(i)/4]&__m_empty[(i)%4])
40
+ #define __ac_isdel(ed_flag, i) (ed_flag[(i)/4]&__m_del[(i)%4])
41
+ #define __ac_iseither(ed_flag, i) (ed_flag[(i)/4]&__m_either[(i)%4])
42
+ #define khash_power2(v) do { \
43
+ v--;\
44
+ v |= v >> 1;\
45
+ v |= v >> 2;\
46
+ v |= v >> 4;\
47
+ v |= v >> 8;\
48
+ v |= v >> 16;\
49
+ v++;\
50
+ } while (0)
51
+ #define khash_mask(h) ((h)->n_buckets-1)
52
+ #define khash_upper_bound(h) (KH_UPPER_BOUND((h)->n_buckets))
53
+
54
+ /* BREAKING CHANGE: khash structure optimized for 50% memory reduction
55
+ *
56
+ * The structure now uses a single data pointer instead of separate keys,
57
+ * vals, and ed_flags pointers, reducing size from 32 to 16 bytes.
58
+ *
59
+ * MIGRATION REQUIRED for field access macros:
60
+ * - OLD: kh_key(h, x) NEW: kh_key(typename, h, x)
61
+ * - OLD: kh_val(h, x) NEW: kh_val(typename, h, x)
62
+ * - OLD: kh_exist(h, x) NEW: kh_exist(typename, h, x)
63
+ * - OLD: KHASH_FOREACH() NEW: KHASH_FOREACH(typename, ...)
64
+ *
65
+ * Function-style macros (kh_get, kh_put, etc.) remain unchanged.
66
+ */
67
+
68
+ /* declare struct kh_xxx and kh_xxx_funcs
69
+
70
+ name: hash name
71
+ khkey_t: key data type
72
+ khval_t: value data type
73
+ kh_is_map: (0: hash set / 1: hash map)
74
+ */
75
+ #define KHASH_DECLARE(name, khkey_t, khval_t, kh_is_map) \
76
+ typedef struct kh_##name { \
77
+ void *data; /* Single allocation: [keys][vals][flags] */ \
78
+ khint_t n_buckets; /* Number of buckets (power of 2) */ \
79
+ khint_t size; /* Number of elements */ \
80
+ } kh_##name##_t; \
81
+ /* Address calculation functions for optimized memory layout */ \
82
+ static inline khkey_t* kh_keys_##name(const kh_##name##_t *h) { \
83
+ return (khkey_t*)(h)->data; \
84
+ } \
85
+ static inline khval_t* kh_vals_##name(const kh_##name##_t *h) { \
86
+ return kh_is_map ? \
87
+ (khval_t*)((uint8_t*)(h)->data + sizeof(khkey_t) * (h)->n_buckets) : NULL; \
88
+ } \
89
+ static inline uint8_t* kh_flags_##name(const kh_##name##_t *h) { \
90
+ return (uint8_t*)(h)->data + sizeof(khkey_t) * (h)->n_buckets + \
91
+ (kh_is_map ? sizeof(khval_t) * (h)->n_buckets : 0); \
92
+ } \
93
+ kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size); \
94
+ kh_##name##_t *kh_init_##name(mrb_state *mrb); \
95
+ void kh_destroy_##name(mrb_state *mrb, kh_##name##_t *h); \
96
+ void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h); \
97
+ khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key); \
98
+ khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret); \
99
+ void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets); \
100
+ void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x); \
101
+ kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h); \
102
+ void kh_init_data_##name(mrb_state *mrb, kh_##name##_t *h, khint_t size); \
103
+ void kh_destroy_data_##name(mrb_state *mrb, kh_##name##_t *h); \
104
+ void kh_replace_##name(mrb_state *mrb, kh_##name##_t *dst, const kh_##name##_t *src);
105
+
106
+ /* define kh_xxx_funcs
107
+
108
+ name: hash name
109
+ khkey_t: key data type
110
+ khval_t: value data type
111
+ kh_is_map: (0: hash set / 1: hash map)
112
+ __hash_func: hash function
113
+ __hash_equal: hash comparison function
114
+ */
115
+ #define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
116
+ mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb); \
117
+ /* Internal helper functions */ \
118
+ static inline size_t kh__kv_size_##name(khint_t count) { \
119
+ return sizeof(khkey_t) * count + \
120
+ (kh_is_map ? sizeof(khval_t) * count : 0); \
121
+ } \
122
+ static inline size_t kh__htable_size_##name(khint_t n_buckets) { \
123
+ return kh__kv_size_##name(n_buckets) + n_buckets / 4; \
124
+ } \
125
+ static inline void kh__mark_occupied_##name(kh_##name##_t *h, khint_t i) { \
126
+ uint8_t *flags = kh_flags_##name(h); \
127
+ flags[i/4] &= ~__m_either[i%4]; /* Clear both empty and deleted bits */ \
128
+ } \
129
+ static inline void kh__mark_deleted_##name(kh_##name##_t *h, khint_t i) { \
130
+ uint8_t *flags = kh_flags_##name(h); \
131
+ flags[i/4] |= __m_del[i%4]; /* Set deleted bit */ \
132
+ } \
133
+ static inline khint_t kh__key_idx_##name(mrb_state *mrb, khkey_t key, kh_##name##_t *h) { \
134
+ return __hash_func(mrb, key) & khash_mask(h); \
135
+ } \
136
+ static inline khint_t kh__next_probe_##name(khint_t k, khint_t *step, kh_##name##_t *h) { \
137
+ return (k+(++(*step))) & khash_mask(h); \
138
+ } \
139
+ static inline khint_t kh__insert_key_##name(kh_##name##_t *h, khint_t index, khkey_t key) { \
140
+ khkey_t *keys = kh_keys_##name(h); \
141
+ keys[index] = key; \
142
+ kh__mark_occupied_##name(h, index); \
143
+ h->size++; \
144
+ return index; \
145
+ } \
146
+ static inline void kh__clear_flags_##name(kh_##name##_t *h, khint_t n_buckets) { \
147
+ memset(kh_flags_##name(h), 0xaa, n_buckets/4); \
148
+ } \
149
+ static inline void kh__alloc_##name(mrb_state *mrb, kh_##name##_t *h) { \
150
+ khint_t sz = h->n_buckets; \
151
+ uint8_t *p = (uint8_t*)mrb_malloc(mrb, kh__htable_size_##name(sz)); \
152
+ h->size = 0; \
153
+ h->data = p; /* Single data pointer for optimized layout */ \
154
+ kh__clear_flags_##name(h, sz); \
155
+ } \
156
+ /* Small table optimization functions */ \
157
+ static inline int kh__is_small_##name(const kh_##name##_t *h) { \
158
+ return h->n_buckets == 0; /* Small table marker */ \
159
+ } \
160
+ static inline khint_t kh__get_small_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key) { \
161
+ khkey_t *keys = kh_keys_##name(h); \
162
+ for (khint_t i = 0; i < h->size; i++) { \
163
+ if (__hash_equal(mrb, keys[i], key)) return i; \
164
+ } \
165
+ return h->size; /* Not found - return end position */ \
166
+ } \
167
+ static inline void kh__rebuild_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets) { \
168
+ kh_##name##_t hh; \
169
+ hh.data = NULL; \
170
+ hh.size = 0; \
171
+ kh_init_data_##name(mrb, &hh, new_n_buckets); \
172
+ /* Rehash from old 'h' to 'hh' */ \
173
+ khkey_t *old_keys = kh_keys_##name(h); \
174
+ khval_t *old_vals = kh_vals_##name(h); \
175
+ uint8_t *old_flags = kh__is_small_##name(h) ? NULL : kh_flags_##name(h); \
176
+ khint_t limit = old_flags ? h->n_buckets : h->size; \
177
+ for (khint_t i = 0; i < limit; i++) { \
178
+ if (old_flags && __ac_iseither(old_flags, i)) continue; \
179
+ khint_t k = kh_put_##name(mrb, &hh, old_keys[i], NULL); \
180
+ if (kh_is_map) { \
181
+ kh_val(name, &hh, k) = old_vals[i]; \
182
+ } \
183
+ } \
184
+ /* Final Swap */ \
185
+ mrb_free(mrb, h->data); \
186
+ h->data = hh.data; \
187
+ h->n_buckets = hh.n_buckets; \
188
+ h->size = hh.size; \
189
+ } \
190
+ static inline khint_t kh__put_small_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) { \
191
+ /* First check if key exists */ \
192
+ khint_t pos = kh__get_small_##name(mrb, h, key); \
193
+ if (pos < h->size) { \
194
+ if (ret) *ret = 0; /* Key exists */ \
195
+ return pos; \
196
+ } \
197
+ /* Check if we need to convert to hash table */ \
198
+ if (h->size >= KHASH_SMALL_LIMIT) { \
199
+ /* Convert from small table to hash table */ \
200
+ kh__rebuild_##name(mrb, h, KHASH_MIN_SIZE); \
201
+ /* Now add the new key using regular hash table */ \
202
+ return kh_put_##name(mrb, h, key, ret); \
203
+ } \
204
+ /* Add new element to small table */ \
205
+ khkey_t *keys = kh_keys_##name(h); \
206
+ keys[h->size] = key; \
207
+ h->size++; \
208
+ if (ret) *ret = 1; /* New key */ \
209
+ return h->size - 1; \
210
+ } \
211
+ kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size) { \
212
+ kh_##name##_t *h = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
213
+ kh_init_data_##name(mrb, h, size); \
214
+ return h; \
215
+ } \
216
+ kh_##name##_t *kh_init_##name(mrb_state *mrb) { \
217
+ return kh_init_##name##_size(mrb, KHASH_INITIAL_SIZE); \
218
+ } \
219
+ void kh_destroy_##name(mrb_state *mrb, kh_##name##_t *h) \
220
+ { \
221
+ kh_destroy_data_##name(mrb, h); \
222
+ mrb_free(mrb, h); \
223
+ } \
224
+ void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h) \
225
+ { \
226
+ (void)mrb; \
227
+ if (h && h->data) { \
228
+ kh__clear_flags_##name(h, h->n_buckets); \
229
+ h->size = 0; \
230
+ } \
231
+ } \
232
+ khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key) \
233
+ { \
234
+ if (kh__is_small_##name(h)) { \
235
+ return kh__get_small_##name(mrb, h, key); \
236
+ } \
237
+ /* Cache calculated pointers for performance */ \
238
+ khkey_t *keys = kh_keys_##name(h); \
239
+ uint8_t *ed_flags = kh_flags_##name(h); \
240
+ khint_t k = kh__key_idx_##name(mrb, key, h), step = 0; \
241
+ (void)mrb; \
242
+ while (!__ac_isempty(ed_flags, k)) { \
243
+ if (!__ac_isdel(ed_flags, k)) { \
244
+ if (__hash_equal(mrb, keys[k], key)) return k; \
245
+ } \
246
+ k = kh__next_probe_##name(k, &step, h); \
247
+ } \
248
+ return kh_end(h); \
249
+ } \
250
+ void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets) \
251
+ { \
252
+ if (new_n_buckets < KHASH_MIN_SIZE) \
253
+ new_n_buckets = KHASH_MIN_SIZE; \
254
+ khash_power2(new_n_buckets); \
255
+ kh__rebuild_##name(mrb, h, new_n_buckets); \
256
+ } \
257
+ khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
258
+ { \
259
+ if (kh__is_small_##name(h)) { \
260
+ return kh__put_small_##name(mrb, h, key, ret); \
261
+ } \
262
+ khint_t k, del_k, step = 0; \
263
+ if (h->size >= khash_upper_bound(h)) { \
264
+ kh_resize_##name(mrb, h, h->n_buckets*2); \
265
+ } \
266
+ /* Cache calculated pointers for performance */ \
267
+ khkey_t *keys = kh_keys_##name(h); \
268
+ uint8_t *ed_flags = kh_flags_##name(h); \
269
+ k = kh__key_idx_##name(mrb, key, h); \
270
+ del_k = kh_end(h); \
271
+ while (!__ac_isempty(ed_flags, k)) { \
272
+ if (!__ac_isdel(ed_flags, k)) { \
273
+ if (__hash_equal(mrb, keys[k], key)) { \
274
+ if (ret) *ret = 0; \
275
+ return k; \
276
+ } \
277
+ } \
278
+ else if (del_k == kh_end(h)) { \
279
+ del_k = k; \
280
+ } \
281
+ k = kh__next_probe_##name(k, &step, h); \
282
+ } \
283
+ if (del_k != kh_end(h)) { \
284
+ /* put at del */ \
285
+ kh__insert_key_##name(h, del_k, key); \
286
+ if (ret) *ret = 2; \
287
+ return del_k; \
288
+ } \
289
+ else { \
290
+ /* put at empty */ \
291
+ kh__insert_key_##name(h, k, key); \
292
+ if (ret) *ret = 1; \
293
+ return k; \
294
+ } \
295
+ } \
296
+ void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x) \
297
+ { \
298
+ (void)mrb; \
299
+ if (kh__is_small_##name(h)) { \
300
+ /* Small table deletion: shift elements down */ \
301
+ mrb_assert(x < h->size); \
302
+ khkey_t *keys = kh_keys_##name(h); \
303
+ khval_t *vals = kh_vals_##name(h); \
304
+ for (khint_t i = x; i < h->size - 1; i++) { \
305
+ keys[i] = keys[i + 1]; \
306
+ if (kh_is_map) vals[i] = vals[i + 1]; \
307
+ } \
308
+ h->size--; \
309
+ } \
310
+ else { \
311
+ /* Regular hash table deletion */ \
312
+ mrb_assert(x != h->n_buckets && !__ac_iseither(kh_flags_##name(h), x)); \
313
+ kh__mark_deleted_##name(h, x); \
314
+ h->size--; \
315
+ } \
316
+ } \
317
+ kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h) \
318
+ { \
319
+ kh_##name##_t *h2 = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
320
+ kh_replace_##name(mrb, h2, h); \
321
+ return h2; \
322
+ } \
323
+ void kh_init_data_##name(mrb_state *mrb, kh_##name##_t *h, khint_t size) { \
324
+ if (size <= KHASH_SMALL_LIMIT) { \
325
+ /* Start as small table */ \
326
+ h->n_buckets = 0; /* Small table marker */ \
327
+ h->data = mrb_malloc(mrb, kh__kv_size_##name(KHASH_SMALL_LIMIT)); \
328
+ h->size = 0; \
329
+ } \
330
+ else { \
331
+ /* Start as regular hash table */ \
332
+ if (size < KHASH_MIN_SIZE) \
333
+ size = KHASH_MIN_SIZE; \
334
+ khash_power2(size); \
335
+ h->n_buckets = size; \
336
+ kh__alloc_##name(mrb, h); \
337
+ } \
338
+ } \
339
+ void kh_destroy_data_##name(mrb_state *mrb, kh_##name##_t *h) \
340
+ { \
341
+ if (h && h->data) { \
342
+ mrb_free(mrb, h->data); /* Free only the data allocation */ \
343
+ h->data = NULL; \
344
+ } \
345
+ } \
346
+ void kh_replace_##name(mrb_state *mrb, kh_##name##_t *dst, const kh_##name##_t *src) \
347
+ { \
348
+ if (!src || (src->n_buckets == 0 && src->size == 0)) { \
349
+ /* Empty source */ \
350
+ kh_destroy_data_##name(mrb, dst); \
351
+ dst->data = NULL; \
352
+ dst->n_buckets = 0; \
353
+ dst->size = 0; \
354
+ } \
355
+ else if (src->n_buckets == 0) { \
356
+ /* Small table case */ \
357
+ size_t data_size = kh__kv_size_##name(KHASH_SMALL_LIMIT); \
358
+ dst->data = mrb_realloc(mrb, dst->data, data_size); \
359
+ dst->size = src->size; \
360
+ dst->n_buckets = 0; \
361
+ /* Copy only the used portion of keys and values */ \
362
+ size_t copy_size = kh__kv_size_##name(src->size); \
363
+ memcpy(dst->data, src->data, copy_size); \
364
+ } \
365
+ else { \
366
+ /* Regular hash table case */ \
367
+ size_t data_size = kh__htable_size_##name(src->n_buckets); \
368
+ dst->data = mrb_realloc(mrb, dst->data, data_size); \
369
+ dst->size = src->size; \
370
+ dst->n_buckets = src->n_buckets; \
371
+ /* Copy the entire data block: [keys][vals][flags] */ \
372
+ memcpy(dst->data, src->data, data_size); \
373
+ } \
374
+ }
375
+
376
+
377
+ #define khash_t(name) kh_##name##_t
378
+
379
+ #define kh_init_size(name,mrb,size) kh_init_##name##_size(mrb,size)
380
+ #define kh_init(name,mrb) kh_init_##name(mrb)
381
+ #define kh_destroy(name, mrb, h) kh_destroy_##name(mrb, h)
382
+ #define kh_clear(name, mrb, h) kh_clear_##name(mrb, h)
383
+ #define kh_resize(name, mrb, h, s) kh_resize_##name(mrb, h, s)
384
+ #define kh_put(name, mrb, h, k) kh_put_##name(mrb, h, k, NULL)
385
+ #define kh_put2(name, mrb, h, k, r) kh_put_##name(mrb, h, k, r)
386
+ #define kh_get(name, mrb, h, k) kh_get_##name(mrb, h, k)
387
+ #define kh_del(name, mrb, h, k) kh_del_##name(mrb, h, k)
388
+ #define kh_copy(name, mrb, h) kh_copy_##name(mrb, h)
389
+ #define kh_init_data(name, mrb, h, size) kh_init_data_##name(mrb, h, size)
390
+ #define kh_destroy_data(name, mrb, h) kh_destroy_data_##name(mrb, h)
391
+ #define kh_replace(name, mrb, dst, src) kh_replace_##name(mrb, dst, src)
392
+
393
+ /* BREAKING CHANGE: Field access macros now require type name as first parameter
394
+ * The macros keep their familiar names but now need the hash type name.
395
+ *
396
+ * MIGRATION: Add type name as first parameter:
397
+ * kh_key(h, x) -> kh_key(typename, h, x)
398
+ * kh_val(h, x) -> kh_val(typename, h, x)
399
+ * kh_exist(h, x) -> kh_exist(typename, h, x)
400
+ * kh_value(h, x) -> kh_value(typename, h, x)
401
+ */
402
+
403
+ /* Type-aware access macros - same names, now with type parameter */
404
+ #define kh_exist(name, h, x) ((h)->n_buckets == 0 ? ((x) < (h)->size) : (!__ac_iseither(kh_flags_##name(h), (x))))
405
+ #define kh_key(name, h, x) (kh_keys_##name(h)[x])
406
+ #define kh_val(name, h, x) (kh_vals_##name(h)[x])
407
+ #define kh_value(name, h, x) (kh_vals_##name(h)[x])
408
+ #define kh_begin(h) (khint_t)(0)
409
+ #define kh_end(h) ((h)->n_buckets == 0 ? (h)->size : (h)->n_buckets)
410
+ #define kh_is_end(h, i) ((i) >= kh_end(h))
411
+ #define kh_size(h) ((h)->size)
412
+ #define kh_n_buckets(h) ((h)->n_buckets)
413
+
414
+ #define kh_int_hash_func(mrb,key) mrb_int_hash_func(mrb,key)
415
+ #define kh_int_hash_equal(mrb,a, b) (a == b)
416
+ #define kh_int64_hash_func(mrb,key) (khint_t)((key)>>33^(key)^(key)<<11)
417
+ #define kh_int64_hash_equal(mrb,a, b) (a == b)
418
+ static inline khint_t __ac_X31_hash_string(const char *s)
419
+ {
420
+ khint_t h = *s;
421
+ if (h) for (++s; *s; ++s) h = (h << 5) - h + *s;
422
+ return h;
423
+ }
424
+ #define kh_str_hash_func(mrb,key) __ac_X31_hash_string(key)
425
+ #define kh_str_hash_equal(mrb,a, b) (strcmp(a, b) == 0)
426
+
427
+ typedef const char *kh_cstr_t;
428
+
429
+ MRB_END_DECL
430
+
431
+ /**
432
+ * Macro for iterating over all elements in a khash.
433
+ *
434
+ * Usage:
435
+ * KHASH_FOREACH(typename, kh, k) {
436
+ * // k is the khiter_t iterator
437
+ * // Access the key with kh_key(typename, kh, k)
438
+ * // Access the value with kh_val(typename, kh, k) if applicable
439
+ * // Your code here
440
+ * }
441
+ *
442
+ * @param name The hash type name
443
+ * @param kh The khash to iterate over
444
+ * @param k The name to use for the khiter_t iterator variable
445
+ */
446
+ /* BREAKING CHANGE: KHASH_FOREACH now requires type name as first parameter
447
+ * OLD: KHASH_FOREACH(mrb, kh, k)
448
+ * NEW: KHASH_FOREACH(name, kh, k)
449
+ */
450
+ #define KHASH_FOREACH(name, kh, k) \
451
+ if (kh) \
452
+ for (khiter_t k = kh_begin(kh); !kh_is_end(kh, k); k++) \
453
+ if (kh_exist(name, kh, k))
454
+
455
+ #endif /* MRUBY_KHASH_H */
@@ -0,0 +1,19 @@
1
+ /*
2
+ ** mempool.h - memory pool
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ /* memory pool implementation */
8
+ typedef struct mempool mempool;
9
+ MRB_API struct mempool* mempool_open(void);
10
+ MRB_API void mempool_close(struct mempool*);
11
+ MRB_API void* mempool_alloc(struct mempool*, size_t);
12
+ MRB_API void* mempool_realloc(struct mempool*, void*, size_t oldlen, size_t newlen);
13
+
14
+ /* compatibility layer */
15
+ typedef struct mempool mrb_mempool;
16
+ #define mrb_mempool_open(m) mempool_open()
17
+ #define mrb_mempool_close(m) mempool_close(m)
18
+ #define mrb_mempool_alloc(m, size) mempool_alloc((m),(size))
19
+ #define mrb_mempool_realloc(m, ptr, oldlen, newlen) mempool_realloc((m),(ptr),(oldlen),(newlen))
@@ -30,16 +30,17 @@ MRB_BEGIN_DECL
30
30
  #endif
31
31
  #endif
32
32
 
33
- MRB_API mrb_value mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y);
34
- MRB_API mrb_value mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y);
33
+ /* utility functions */
34
+ MRB_API mrb_value mrb_num_add(mrb_state *mrb, mrb_value x, mrb_value y);
35
+ MRB_API mrb_value mrb_num_sub(mrb_state *mrb, mrb_value x, mrb_value y);
35
36
  MRB_API mrb_value mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y);
37
+ /* obsolete old names */
38
+ #define mrb_num_plus(mrb, x, y) mrb_num_add(mrb, x, y)
39
+ #define mrb_num_minus(mrb, x, y) mrb_num_sub(mrb, x, y)
36
40
 
37
41
  MRB_API mrb_value mrb_integer_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
38
42
  MRB_API char *mrb_int_to_cstr(char *buf, size_t len, mrb_int n, mrb_int base);
39
43
 
40
- /* internal function(s) */
41
- mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y);
42
-
43
44
  /* obsolete function(s); will be removed */
44
45
  #define mrb_fixnum_to_str(mrb, x, base) mrb_integer_to_str(mrb, x, base)
45
46
 
@@ -118,12 +119,12 @@ mrb_int_mul_overflow(mrb_int a, mrb_int b, mrb_int *c)
118
119
  *c = (mrb_int)n;
119
120
  return n > MRB_INT_MAX || n < MRB_INT_MIN;
120
121
  #else /* MRB_INT64 */
122
+ *c = a * b;
121
123
  if (a > 0 && b > 0 && a > MRB_INT_MAX / b) return TRUE;
122
124
  if (a < 0 && b > 0 && a < MRB_INT_MIN / b) return TRUE;
123
125
  if (a > 0 && b < 0 && b < MRB_INT_MIN / a) return TRUE;
124
126
  if (a < 0 && b < 0 && (a <= MRB_INT_MIN || b <= MRB_INT_MIN || -a > MRB_INT_MAX / -b))
125
127
  return TRUE;
126
- *c = a * b;
127
128
  return FALSE;
128
129
  #endif
129
130
  }
@@ -166,10 +167,6 @@ mrb_float mrb_div_float(mrb_float x, mrb_float y);
166
167
  mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt);
167
168
  int mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, char sign);
168
169
 
169
- /* obsolete functions; will be removed */
170
- #define mrb_flo_to_fixnum(mrb, val) mrb_float_to_integer(mrb, val)
171
- #define mrb_to_flo(mrb, x) mrb_as_float(mrb, x)
172
-
173
170
  #endif /* MRB_NO_FLOAT */
174
171
 
175
172
  MRB_END_DECL
@@ -0,0 +1,51 @@
1
+ /**
2
+ ** @file mruby/object.h - mruby object definition
3
+ **
4
+ ** See Copyright Notice in mruby.h
5
+ */
6
+
7
+ #ifndef MRUBY_OBJECT_H
8
+ #define MRUBY_OBJECT_H
9
+
10
+ #define MRB_OBJECT_HEADER \
11
+ struct RClass *c; \
12
+ enum mrb_vtype tt:8; \
13
+ unsigned int gc_color:3; \
14
+ unsigned int frozen:1; \
15
+ uint32_t flags:20
16
+
17
+ #define MRB_FLAG_TEST(obj, flag) ((obj)->flags & (flag))
18
+
19
+ struct RBasic {
20
+ MRB_OBJECT_HEADER;
21
+ };
22
+ #define mrb_basic_ptr(v) ((struct RBasic*)(mrb_ptr(v)))
23
+
24
+ #define MRB_OBJ_IS_FROZEN 1
25
+ #define mrb_frozen_p(o) ((o)->frozen)
26
+
27
+ /* Object shape flag -- when set, obj->iv is shaped, not iv_tbl* */
28
+ /* Bit 5: avoids conflict with MRB_INSTANCE_TT_MASK (bits 0-4);
29
+ but conflicts with MRB_HASH_AR_EA_N_USED on 32-bit, so the
30
+ predicate must also check tt to avoid false positives */
31
+ #define MRB_FL_OBJ_SHAPED (1 << 5)
32
+ #define MRB_OBJ_SHAPED_P(o) ((o)->tt == MRB_TT_OBJECT && ((o)->flags & MRB_FL_OBJ_SHAPED))
33
+
34
+ struct RObject {
35
+ MRB_OBJECT_HEADER;
36
+ struct iv_tbl *iv;
37
+ };
38
+ #define mrb_obj_ptr(v) ((struct RObject*)(mrb_ptr(v)))
39
+
40
+ #define mrb_special_const_p(x) mrb_immediate_p(x)
41
+
42
+ struct RFiber {
43
+ MRB_OBJECT_HEADER;
44
+ struct mrb_context *cxt;
45
+ };
46
+
47
+ #define mrb_static_assert_object_size(st) \
48
+ mrb_static_assert(sizeof(st) <= sizeof(void*) * 5, \
49
+ #st " size must be within 5 words")
50
+
51
+ #endif /* MRUBY_OBJECT_H */
@@ -9,20 +9,20 @@
9
9
 
10
10
  enum mrb_insn {
11
11
  #define OPCODE(x,_) OP_ ## x,
12
- #include "mruby/ops.h"
12
+ #include <mruby/ops.h>
13
13
  #undef OPCODE
14
14
  };
15
15
 
16
+ /* backward compatibility aliases */
17
+ #define OP_LOADT OP_LOADTRUE
18
+ #define OP_LOADF OP_LOADFALSE
19
+
16
20
  #define OP_L_STRICT 1
17
21
  #define OP_L_CAPTURE 2
18
22
  #define OP_L_METHOD OP_L_STRICT
19
23
  #define OP_L_LAMBDA (OP_L_STRICT|OP_L_CAPTURE)
20
24
  #define OP_L_BLOCK OP_L_CAPTURE
21
25
 
22
- #define OP_R_NORMAL 0
23
- #define OP_R_BREAK 1
24
- #define OP_R_RETURN 2
25
-
26
26
  #define PEEK_B(pc) (*(pc))
27
27
  #define PEEK_S(pc) ((pc)[0]<<8|(pc)[1])
28
28
  #define PEEK_W(pc) ((pc)[0]<<16|(pc)[1]<<8|(pc)[2])