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.
- checksums.yaml +4 -4
- data/LICENSE.md +7 -0
- data/README.md +141 -0
- data/USAGE.md +2435 -0
- data/assets/Rakefile +637 -0
- data/assets/build_support/CMakeLists.txt +94 -0
- data/assets/build_support/mruby/build_config.rb +34 -0
- data/assets/build_support/mruby/build_config_wasm.rb +30 -0
- data/assets/build_support/sdl_test.c +174 -0
- data/assets/deps.yaml +16 -0
- data/assets/platform/include/SDL3/SDL.h +91 -0
- data/assets/platform/include/SDL3/SDL_assert.h +705 -0
- data/assets/platform/include/SDL3/SDL_asyncio.h +550 -0
- data/assets/platform/include/SDL3/SDL_atomic.h +692 -0
- data/assets/platform/include/SDL3/SDL_audio.h +2370 -0
- data/assets/platform/include/SDL3/SDL_begin_code.h +553 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_bits.h +47 -27
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_blendmode.h +59 -55
- data/assets/platform/include/SDL3/SDL_camera.h +535 -0
- data/assets/platform/include/SDL3/SDL_clipboard.h +331 -0
- data/assets/{include/SDL2/close_code.h → platform/include/SDL3/SDL_close_code.h} +9 -8
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_copying.h +3 -1
- data/assets/platform/include/SDL3/SDL_cpuinfo.h +374 -0
- data/assets/platform/include/SDL3/SDL_dialog.h +343 -0
- data/assets/platform/include/SDL3/SDL_dlopennote.h +234 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_egl.h +11 -8
- data/assets/platform/include/SDL3/SDL_endian.h +645 -0
- data/assets/platform/include/SDL3/SDL_error.h +226 -0
- data/assets/platform/include/SDL3/SDL_events.h +1645 -0
- data/assets/platform/include/SDL3/SDL_filesystem.h +537 -0
- data/assets/platform/include/SDL3/SDL_gamepad.h +1656 -0
- data/assets/platform/include/SDL3/SDL_gpu.h +4608 -0
- data/assets/platform/include/SDL3/SDL_guid.h +106 -0
- data/assets/platform/include/SDL3/SDL_haptic.h +1461 -0
- data/assets/platform/include/SDL3/SDL_hidapi.h +571 -0
- data/assets/platform/include/SDL3/SDL_hints.h +5001 -0
- data/assets/platform/include/SDL3/SDL_init.h +507 -0
- data/assets/platform/include/SDL3/SDL_intrin.h +410 -0
- data/assets/platform/include/SDL3/SDL_iostream.h +1379 -0
- data/assets/platform/include/SDL3/SDL_joystick.h +1385 -0
- data/assets/platform/include/SDL3/SDL_keyboard.h +608 -0
- data/assets/platform/include/SDL3/SDL_keycode.h +347 -0
- data/assets/platform/include/SDL3/SDL_loadso.h +145 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_locale.h +40 -24
- data/assets/platform/include/SDL3/SDL_log.h +541 -0
- data/assets/platform/include/SDL3/SDL_main.h +704 -0
- data/assets/platform/include/SDL3/SDL_main_impl.h +151 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_messagebox.h +85 -48
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_metal.h +29 -29
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_misc.h +13 -12
- data/assets/platform/include/SDL3/SDL_mouse.h +813 -0
- data/assets/platform/include/SDL3/SDL_mutex.h +1117 -0
- data/assets/platform/include/SDL3/SDL_oldnames.h +1339 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl.h +1247 -278
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl_glext.h +5 -1
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles.h +6 -7
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2.h +10 -11
- data/assets/platform/include/SDL3/SDL_pen.h +198 -0
- data/assets/platform/include/SDL3/SDL_pixels.h +1441 -0
- data/assets/{include/SDL2/SDL_test_log.h → platform/include/SDL3/SDL_platform.h} +25 -26
- data/assets/platform/include/SDL3/SDL_platform_defines.h +497 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_power.h +40 -20
- data/assets/platform/include/SDL3/SDL_process.h +441 -0
- data/assets/platform/include/SDL3/SDL_properties.h +572 -0
- data/assets/platform/include/SDL3/SDL_rect.h +528 -0
- data/assets/platform/include/SDL3/SDL_render.h +3028 -0
- data/assets/platform/include/SDL3/SDL_revision.h +59 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_scancode.h +59 -68
- data/assets/platform/include/SDL3/SDL_sensor.h +321 -0
- data/assets/platform/include/SDL3/SDL_stdinc.h +6186 -0
- data/assets/platform/include/SDL3/SDL_storage.h +686 -0
- data/assets/platform/include/SDL3/SDL_surface.h +1769 -0
- data/assets/platform/include/SDL3/SDL_system.h +840 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test.h +16 -22
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_assert.h +27 -34
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_common.h +109 -52
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_compare.h +22 -14
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_crc32.h +27 -30
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_font.h +50 -49
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_fuzzer.h +64 -79
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_harness.h +47 -30
- data/assets/platform/include/SDL3/SDL_test_log.h +83 -0
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_md5.h +21 -28
- data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_memory.h +19 -16
- data/assets/platform/include/SDL3/SDL_thread.h +602 -0
- data/assets/platform/include/SDL3/SDL_time.h +249 -0
- data/assets/platform/include/SDL3/SDL_timer.h +454 -0
- data/assets/platform/include/SDL3/SDL_touch.h +184 -0
- data/assets/platform/include/SDL3/SDL_tray.h +544 -0
- data/assets/platform/include/SDL3/SDL_version.h +198 -0
- data/assets/platform/include/SDL3/SDL_video.h +3497 -0
- data/assets/platform/include/SDL3/SDL_vulkan.h +287 -0
- data/assets/platform/include/SDL3_image/SDL_image.h +3328 -0
- data/assets/platform/include/SDL3_mixer/SDL_mixer.h +3369 -0
- data/assets/platform/include/SDL3_ttf/SDL_textengine.h +181 -0
- data/assets/platform/include/SDL3_ttf/SDL_ttf.h +2833 -0
- data/assets/{include → platform/include}/mrbconf.h +42 -31
- data/assets/{include → platform/include}/mruby/array.h +3 -4
- data/assets/{include → platform/include}/mruby/boxing_nan.h +10 -0
- data/assets/platform/include/mruby/boxing_no.h +59 -0
- data/assets/{include → platform/include}/mruby/boxing_word.h +72 -26
- data/assets/platform/include/mruby/class.h +157 -0
- data/assets/{include → platform/include}/mruby/common.h +30 -1
- data/assets/{include → platform/include}/mruby/compile.h +52 -74
- data/assets/{include → platform/include}/mruby/data.h +2 -2
- data/assets/{include → platform/include}/mruby/debug.h +12 -5
- data/assets/{include → platform/include}/mruby/dump.h +7 -9
- data/assets/{include → platform/include}/mruby/endian.h +1 -1
- data/assets/platform/include/mruby/error.h +173 -0
- data/assets/platform/include/mruby/gc.h +79 -0
- data/assets/{include → platform/include}/mruby/hash.h +1 -7
- data/assets/platform/include/mruby/internal.h +282 -0
- data/assets/platform/include/mruby/irep.h +143 -0
- data/assets/{include → platform/include}/mruby/istruct.h +1 -1
- data/assets/platform/include/mruby/khash.h +455 -0
- data/assets/platform/include/mruby/mempool.h +19 -0
- data/assets/{include → platform/include}/mruby/numeric.h +7 -10
- data/assets/platform/include/mruby/object.h +51 -0
- data/assets/{include → platform/include}/mruby/opcode.h +5 -5
- data/assets/{include → platform/include}/mruby/ops.h +19 -6
- data/assets/platform/include/mruby/presym/id.h +1447 -0
- data/assets/{include → platform/include}/mruby/presym/scanning.h +10 -7
- data/assets/platform/include/mruby/presym/table.h +2893 -0
- data/assets/platform/include/mruby/presym.h +65 -0
- data/assets/platform/include/mruby/proc.h +184 -0
- data/assets/{include → platform/include}/mruby/range.h +0 -2
- data/assets/{include → platform/include}/mruby/string.h +33 -53
- data/assets/platform/include/mruby/throw.h +81 -0
- data/assets/{include → platform/include}/mruby/value.h +64 -29
- data/assets/{include → platform/include}/mruby/variable.h +6 -23
- data/assets/{include → platform/include}/mruby/version.h +7 -7
- data/assets/{include → platform/include}/mruby.h +238 -116
- data/assets/platform/macos-arm64/bin/mrbc +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_image.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/macos-arm64/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/macos-arm64/lib/libmruby.a +0 -0
- data/assets/platform/wasm/lib/libFLAC.a +0 -0
- data/assets/platform/wasm/lib/libSDL3.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_image.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/wasm/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/wasm/lib/libfreetype.a +0 -0
- data/assets/platform/wasm/lib/libharfbuzz.a +0 -0
- data/assets/platform/wasm/lib/libmruby.a +0 -0
- data/assets/platform/wasm/lib/libogg.a +0 -0
- data/assets/platform/wasm/lib/libplutosvg.a +0 -0
- data/assets/platform/wasm/lib/libplutovg.a +0 -0
- data/assets/platform/wasm/lib/libpng.a +0 -0
- data/assets/platform/wasm/lib/libpng16.a +0 -0
- data/assets/platform/wasm/lib/libvorbis.a +0 -0
- data/assets/platform/wasm/lib/libvorbisfile.a +0 -0
- data/assets/platform/wasm/lib/libzlibstatic.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/bin/mrbc.exe +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_image.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/windows-arm64-mingw-ucrt/lib/libmruby.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/bin/mrbc.exe +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_image.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
- data/assets/platform/windows-x86_64-mingw-ucrt/lib/libmruby.a +0 -0
- data/assets/resources/fonts/outfit/OFL.txt +93 -0
- data/assets/resources/fonts/outfit/outfit.ttf +0 -0
- data/assets/resources/fonts/roboto_mono/OFL.txt +91 -0
- data/assets/resources/fonts/roboto_mono/roboto_mono.ttf +0 -0
- data/assets/resources/icons/icon.icns +0 -0
- data/assets/resources/icons/icon.png +0 -0
- data/assets/resources/spritesheets/License.txt +28 -0
- data/assets/resources/spritesheets/spritesheet-backgrounds.png +0 -0
- data/assets/resources/spritesheets/spritesheet-backgrounds.xml +16 -0
- data/assets/resources/spritesheets/spritesheet-characters.png +0 -0
- data/assets/resources/spritesheets/spritesheet-characters.xml +47 -0
- data/assets/resources/spritesheets/spritesheet-enemies.png +0 -0
- data/assets/resources/spritesheets/spritesheet-enemies.xml +62 -0
- data/assets/resources/spritesheets/spritesheet-tiles.png +0 -0
- data/assets/resources/spritesheets/spritesheet-tiles.xml +316 -0
- data/assets/{wasm → resources/web}/template.html +1 -1
- data/assets/target.rb +131 -0
- data/bin/ruby2d +281 -82
- data/examples/astar.rb +269 -0
- data/examples/asteroids.rb +403 -0
- data/examples/bezier_editor.rb +96 -0
- data/examples/boids.rb +191 -0
- data/examples/bouncing_balls.rb +119 -0
- data/examples/breakout.rb +186 -0
- data/examples/constellations.rb +100 -0
- data/examples/dashboard.rb +133 -0
- data/examples/double_pendulum.rb +254 -0
- data/examples/falling_sand.rb +291 -0
- data/examples/fireworks.rb +110 -0
- data/examples/fluid_dynamics.rb +340 -0
- data/examples/fourier_epicycles.rb +142 -0
- data/examples/fractal_tree.rb +326 -0
- data/examples/game_of_life.rb +148 -0
- data/examples/gamepads.rb +333 -0
- data/examples/hill_driver.rb +613 -0
- data/examples/logo_animation.rb +251 -0
- data/examples/lorenz_attractor.rb +115 -0
- data/examples/mandelbrot.rb +207 -0
- data/examples/marching_squares.rb +200 -0
- data/examples/maze.rb +323 -0
- data/examples/nbody.rb +338 -0
- data/examples/outrun.rb +391 -0
- data/examples/pixel_paint.rb +313 -0
- data/examples/platformer.rb +335 -0
- data/examples/ray_casting_maze.rb +175 -0
- data/examples/shadow_casting.rb +151 -0
- data/examples/shape_recognizer.rb +908 -0
- data/examples/snake.rb +144 -0
- data/examples/sprite_sheets.rb +246 -0
- data/examples/swarm.rb +206 -0
- data/examples/tsp_annealing.rb +104 -0
- data/examples/ui_controls.rb +163 -0
- data/examples/wireframe_3d.rb +139 -0
- data/ext/ruby2d/audio.c +324 -0
- data/ext/ruby2d/canvas.c +1715 -494
- data/ext/ruby2d/ext.c +541 -0
- data/ext/ruby2d/extconf.rb +122 -145
- data/ext/ruby2d/font.c +566 -20
- data/ext/ruby2d/fps.c +92 -0
- data/ext/ruby2d/image.c +466 -41
- data/ext/ruby2d/ruby2d.c +374 -1890
- data/ext/ruby2d/ruby2d.h +840 -460
- data/ext/ruby2d/shapes.c +931 -101
- data/ext/ruby2d/text.c +586 -21
- data/ext/ruby2d/window.c +1693 -283
- data/lib/ruby2d/atlas_parser.rb +194 -0
- data/lib/ruby2d/audio.rb +73 -0
- data/lib/ruby2d/benchmark.rb +259 -0
- data/lib/ruby2d/bitmap_text.rb +155 -0
- data/lib/ruby2d/button.rb +402 -0
- data/lib/ruby2d/canvas.rb +703 -279
- data/lib/ruby2d/circle.rb +206 -29
- data/lib/ruby2d/cli/browser.rb +314 -0
- data/lib/ruby2d/cli/build.rb +471 -257
- data/lib/ruby2d/cli/colorize.rb +7 -5
- data/lib/ruby2d/cli/examples.rb +127 -0
- data/lib/ruby2d/cli/launch.rb +24 -39
- data/lib/ruby2d/cli/lib_files.rb +48 -0
- data/lib/ruby2d/cli/messages.rb +40 -0
- data/lib/ruby2d/cli/setup.rb +273 -0
- data/lib/ruby2d/cli/static_server.rb +160 -0
- data/lib/ruby2d/cli/usage.rb +255 -0
- data/lib/ruby2d/color.rb +191 -69
- data/lib/ruby2d/core.rb +37 -19
- data/lib/ruby2d/deps_help.rb +89 -0
- data/lib/ruby2d/dsl.rb +51 -12
- data/lib/ruby2d/ellipse.rb +228 -0
- data/lib/ruby2d/exceptions.rb +0 -2
- data/lib/ruby2d/font.rb +34 -74
- data/lib/ruby2d/gamepad.rb +323 -0
- data/lib/ruby2d/gem_paths.rb +19 -0
- data/lib/ruby2d/image.rb +155 -52
- data/lib/ruby2d/interactive.rb +103 -0
- data/lib/ruby2d/json_parser.rb +268 -0
- data/lib/ruby2d/line.rb +194 -85
- data/lib/ruby2d/mruby_compat.rb +12 -0
- data/lib/ruby2d/polygon.rb +297 -0
- data/lib/ruby2d/polyline.rb +368 -0
- data/lib/ruby2d/quad.rb +358 -94
- data/lib/ruby2d/rectangle.rb +77 -19
- data/lib/ruby2d/renderable.rb +411 -11
- data/lib/ruby2d/sprite.rb +471 -180
- data/lib/ruby2d/sprite_sheet.rb +64 -0
- data/lib/ruby2d/square.rb +29 -17
- data/lib/ruby2d/text.rb +196 -65
- data/lib/ruby2d/tileset.rb +139 -81
- data/lib/ruby2d/triangle.rb +324 -89
- data/lib/ruby2d/version.rb +1 -3
- data/lib/ruby2d/vertices.rb +62 -85
- data/lib/ruby2d/warnings.rb +29 -0
- data/lib/ruby2d/window/class_methods.rb +218 -0
- data/lib/ruby2d/window/gamepad_events.rb +141 -0
- data/lib/ruby2d/window/key_events.rb +74 -0
- data/lib/ruby2d/window/mouse_events.rb +171 -0
- data/lib/ruby2d/window/object_events.rb +168 -0
- data/lib/ruby2d/window.rb +632 -585
- data/lib/ruby2d.rb +14 -19
- metadata +275 -443
- data/assets/app.icns +0 -0
- data/assets/include/GL/glew.h +0 -26427
- data/assets/include/GLES2/gl2.h +0 -656
- data/assets/include/GLES2/gl2ext.h +0 -3949
- data/assets/include/GLES2/gl2ext_angle.h +0 -701
- data/assets/include/GLES2/gl2platform.h +0 -27
- data/assets/include/GLES3/gl3.h +0 -1192
- data/assets/include/GLES3/gl31.h +0 -1507
- data/assets/include/GLES3/gl32.h +0 -1808
- data/assets/include/GLES3/gl3platform.h +0 -27
- data/assets/include/KHR/khrplatform.h +0 -290
- data/assets/include/SDL2/SDL.h +0 -233
- data/assets/include/SDL2/SDL_assert.h +0 -326
- data/assets/include/SDL2/SDL_atomic.h +0 -415
- data/assets/include/SDL2/SDL_audio.h +0 -1500
- data/assets/include/SDL2/SDL_clipboard.h +0 -141
- data/assets/include/SDL2/SDL_config.h +0 -61
- data/assets/include/SDL2/SDL_config_android.h +0 -194
- data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
- data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
- data/assets/include/SDL2/SDL_config_macosx.h +0 -277
- data/assets/include/SDL2/SDL_config_minimal.h +0 -95
- data/assets/include/SDL2/SDL_config_ngage.h +0 -89
- data/assets/include/SDL2/SDL_config_os2.h +0 -207
- data/assets/include/SDL2/SDL_config_pandora.h +0 -141
- data/assets/include/SDL2/SDL_config_windows.h +0 -331
- data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
- data/assets/include/SDL2/SDL_config_winrt.h +0 -220
- data/assets/include/SDL2/SDL_config_xbox.h +0 -235
- data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
- data/assets/include/SDL2/SDL_endian.h +0 -348
- data/assets/include/SDL2/SDL_error.h +0 -163
- data/assets/include/SDL2/SDL_events.h +0 -1166
- data/assets/include/SDL2/SDL_filesystem.h +0 -149
- data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
- data/assets/include/SDL2/SDL_gesture.h +0 -117
- data/assets/include/SDL2/SDL_guid.h +0 -100
- data/assets/include/SDL2/SDL_haptic.h +0 -1341
- data/assets/include/SDL2/SDL_hidapi.h +0 -451
- data/assets/include/SDL2/SDL_hints.h +0 -2569
- data/assets/include/SDL2/SDL_image.h +0 -2173
- data/assets/include/SDL2/SDL_joystick.h +0 -1066
- data/assets/include/SDL2/SDL_keyboard.h +0 -353
- data/assets/include/SDL2/SDL_keycode.h +0 -358
- data/assets/include/SDL2/SDL_loadso.h +0 -115
- data/assets/include/SDL2/SDL_log.h +0 -404
- data/assets/include/SDL2/SDL_main.h +0 -275
- data/assets/include/SDL2/SDL_mixer.h +0 -2784
- data/assets/include/SDL2/SDL_mouse.h +0 -465
- data/assets/include/SDL2/SDL_mutex.h +0 -471
- data/assets/include/SDL2/SDL_name.h +0 -33
- data/assets/include/SDL2/SDL_pixels.h +0 -644
- data/assets/include/SDL2/SDL_platform.h +0 -261
- data/assets/include/SDL2/SDL_quit.h +0 -58
- data/assets/include/SDL2/SDL_rect.h +0 -376
- data/assets/include/SDL2/SDL_render.h +0 -1919
- data/assets/include/SDL2/SDL_revision.h +0 -6
- data/assets/include/SDL2/SDL_rwops.h +0 -841
- data/assets/include/SDL2/SDL_sensor.h +0 -322
- data/assets/include/SDL2/SDL_shape.h +0 -155
- data/assets/include/SDL2/SDL_stdinc.h +0 -830
- data/assets/include/SDL2/SDL_surface.h +0 -997
- data/assets/include/SDL2/SDL_system.h +0 -623
- data/assets/include/SDL2/SDL_syswm.h +0 -386
- data/assets/include/SDL2/SDL_test_images.h +0 -78
- data/assets/include/SDL2/SDL_test_random.h +0 -115
- data/assets/include/SDL2/SDL_thread.h +0 -464
- data/assets/include/SDL2/SDL_timer.h +0 -222
- data/assets/include/SDL2/SDL_touch.h +0 -150
- data/assets/include/SDL2/SDL_ttf.h +0 -2316
- data/assets/include/SDL2/SDL_types.h +0 -29
- data/assets/include/SDL2/SDL_version.h +0 -204
- data/assets/include/SDL2/SDL_video.h +0 -2150
- data/assets/include/SDL2/SDL_vulkan.h +0 -215
- data/assets/include/SDL2/begin_code.h +0 -187
- data/assets/include/mruby/boxing_no.h +0 -58
- data/assets/include/mruby/class.h +0 -108
- data/assets/include/mruby/error.h +0 -147
- data/assets/include/mruby/gc.h +0 -94
- data/assets/include/mruby/irep.h +0 -147
- data/assets/include/mruby/khash.h +0 -284
- data/assets/include/mruby/object.h +0 -43
- data/assets/include/mruby/presym/disable.h +0 -70
- data/assets/include/mruby/presym/enable.h +0 -37
- data/assets/include/mruby/presym.h +0 -40
- data/assets/include/mruby/proc.h +0 -211
- data/assets/include/mruby/throw.h +0 -66
- data/assets/macos/universal/bin/mrbc +0 -0
- data/assets/macos/universal/lib/libFLAC.a +0 -0
- data/assets/macos/universal/lib/libSDL2.a +0 -0
- data/assets/macos/universal/lib/libSDL2_image.a +0 -0
- data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
- data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/universal/lib/libavif.a +0 -0
- data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
- data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
- data/assets/macos/universal/lib/libfreetype.a +0 -0
- data/assets/macos/universal/lib/libgraphite2.a +0 -0
- data/assets/macos/universal/lib/libharfbuzz.a +0 -0
- data/assets/macos/universal/lib/libhwy.a +0 -0
- data/assets/macos/universal/lib/libjpeg.a +0 -0
- data/assets/macos/universal/lib/libjxl.a +0 -0
- data/assets/macos/universal/lib/libmodplug.a +0 -0
- data/assets/macos/universal/lib/libmpg123.a +0 -0
- data/assets/macos/universal/lib/libmruby.a +0 -0
- data/assets/macos/universal/lib/libogg.a +0 -0
- data/assets/macos/universal/lib/libpng.a +0 -0
- data/assets/macos/universal/lib/libtiff.a +0 -0
- data/assets/macos/universal/lib/libvorbis.a +0 -0
- data/assets/macos/universal/lib/libvorbisfile.a +0 -0
- data/assets/macos/universal/lib/libwebp.a +0 -0
- data/assets/macos/universal/lib/libzstd.a +0 -0
- data/assets/test_media/README.md +0 -3
- data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
- data/assets/test_media/bitstream_vera/vera.ttf +0 -0
- data/assets/test_media/boom.png +0 -0
- data/assets/test_media/coin.png +0 -0
- data/assets/test_media/colors.png +0 -0
- data/assets/test_media/controller.png +0 -0
- data/assets/test_media/dial.wav +0 -0
- data/assets/test_media/hero.png +0 -0
- data/assets/test_media/image.bmp +0 -0
- data/assets/test_media/image.jpg +0 -0
- data/assets/test_media/image.png +0 -0
- data/assets/test_media/music.flac +0 -0
- data/assets/test_media/music.mp3 +0 -0
- data/assets/test_media/music.ogg +0 -0
- data/assets/test_media/music.wav +0 -0
- data/assets/test_media/originals/boom.pxm +0 -0
- data/assets/test_media/originals/coin.pxm +0 -0
- data/assets/test_media/originals/controller.sketch +0 -0
- data/assets/test_media/originals/hero.pxm +0 -0
- data/assets/test_media/originals/image.pxm +0 -0
- data/assets/test_media/originals/music.caf +0 -0
- data/assets/test_media/originals/texture_atlas.pxm +0 -0
- data/assets/test_media/rondo_alla_turka.ogg +0 -0
- data/assets/test_media/sound.flac +0 -0
- data/assets/test_media/sound.mp3 +0 -0
- data/assets/test_media/sound.ogg +0 -0
- data/assets/test_media/sound.wav +0 -0
- data/assets/test_media/sprite_sheet.png +0 -0
- data/assets/test_media/texture_atlas.png +0 -0
- data/assets/wasm/libmruby.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
- data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
- data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
- data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
- data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
- data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
- data/assets/xcode/ios/Info.plist +0 -43
- data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
- data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
- data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
- data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
- data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
- data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
- data/assets/xcode/ios/main.c +0 -1
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
- data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
- data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
- data/assets/xcode/tvos/Info.plist +0 -30
- data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
- data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
- data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
- data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
- data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
- data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
- data/assets/xcode/tvos/main.c +0 -1
- data/ext/ruby2d/common.c +0 -185
- data/ext/ruby2d/controllers.c +0 -110
- data/ext/ruby2d/gl.c +0 -398
- data/ext/ruby2d/gl2.c +0 -86
- data/ext/ruby2d/gl3.c +0 -304
- data/ext/ruby2d/gles.c +0 -302
- data/ext/ruby2d/input.c +0 -48
- data/ext/ruby2d/music.c +0 -127
- data/ext/ruby2d/sound.c +0 -132
- data/lib/ruby2d/cli/console.rb +0 -65
- data/lib/ruby2d/cli/enable_console.rb +0 -7
- data/lib/ruby2d/cli/platform.rb +0 -17
- data/lib/ruby2d/music.rb +0 -77
- data/lib/ruby2d/pixel.rb +0 -18
- data/lib/ruby2d/pixmap.rb +0 -39
- data/lib/ruby2d/pixmap_atlas.rb +0 -56
- data/lib/ruby2d/sound.rb +0 -61
- data/lib/ruby2d/texture.rb +0 -38
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
- /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
- /data/assets/{include → platform/include}/mruby/re.h +0 -0
|
@@ -8,9 +8,10 @@
|
|
|
8
8
|
#define MRUBY_COMPILE_H
|
|
9
9
|
|
|
10
10
|
#include "common.h"
|
|
11
|
+
#include "mruby/mempool.h"
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
|
-
*
|
|
14
|
+
* mruby Compiler
|
|
14
15
|
*/
|
|
15
16
|
MRB_BEGIN_DECL
|
|
16
17
|
|
|
@@ -18,7 +19,7 @@ MRB_BEGIN_DECL
|
|
|
18
19
|
|
|
19
20
|
struct mrb_parser_state;
|
|
20
21
|
/* load context */
|
|
21
|
-
typedef struct
|
|
22
|
+
typedef struct mrb_ccontext {
|
|
22
23
|
mrb_sym *syms;
|
|
23
24
|
int slen;
|
|
24
25
|
char *filename;
|
|
@@ -32,22 +33,28 @@ typedef struct mrbc_context {
|
|
|
32
33
|
mrb_bool keep_lv:1;
|
|
33
34
|
mrb_bool no_optimize:1;
|
|
34
35
|
mrb_bool no_ext_ops:1;
|
|
36
|
+
mrb_bool no_return_value:1;
|
|
35
37
|
const struct RProc *upper;
|
|
36
38
|
|
|
37
39
|
size_t parser_nerr;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
MRB_API
|
|
41
|
-
MRB_API void
|
|
42
|
-
MRB_API const char *
|
|
43
|
-
MRB_API void
|
|
44
|
-
MRB_API void
|
|
40
|
+
} mrb_ccontext; /* compiler context */
|
|
41
|
+
|
|
42
|
+
MRB_API mrb_ccontext* mrb_ccontext_new(mrb_state *mrb);
|
|
43
|
+
MRB_API void mrb_ccontext_free(mrb_state *mrb, mrb_ccontext *cxt);
|
|
44
|
+
MRB_API const char *mrb_ccontext_filename(mrb_state *mrb, mrb_ccontext *c, const char *s);
|
|
45
|
+
MRB_API void mrb_ccontext_partial_hook(mrb_ccontext *c, int (*partial_hook)(struct mrb_parser_state*), void*data);
|
|
46
|
+
MRB_API void mrb_ccontext_cleanup_local_variables(mrb_ccontext *c);
|
|
47
|
+
|
|
48
|
+
/* compatibility macros */
|
|
49
|
+
#define mrbc_context mrb_ccontext
|
|
50
|
+
#define mrbc_context_new mrb_ccontext_new
|
|
51
|
+
#define mrbc_context_free mrb_ccontext_free
|
|
52
|
+
#define mrbc_filename mrb_ccontext_filename
|
|
53
|
+
#define mrbc_partial_hook mrb_ccontext_partial_hook
|
|
54
|
+
#define mrbc_cleanup_local_variables mrb_ccontext_cleanup_local_variables
|
|
45
55
|
|
|
46
56
|
/* AST node structure */
|
|
47
|
-
typedef struct mrb_ast_node
|
|
48
|
-
struct mrb_ast_node *car, *cdr;
|
|
49
|
-
uint16_t lineno, filename_index;
|
|
50
|
-
} mrb_ast_node;
|
|
57
|
+
typedef struct mrb_ast_node mrb_ast_node;
|
|
51
58
|
|
|
52
59
|
/* lexer states */
|
|
53
60
|
enum mrb_lex_state_enum {
|
|
@@ -72,68 +79,32 @@ struct mrb_parser_message {
|
|
|
72
79
|
char* message;
|
|
73
80
|
};
|
|
74
81
|
|
|
75
|
-
#define STR_FUNC_PARSING 0x01
|
|
76
|
-
#define STR_FUNC_EXPAND 0x02
|
|
77
|
-
#define STR_FUNC_REGEXP 0x04
|
|
78
|
-
#define STR_FUNC_WORD 0x08
|
|
79
|
-
#define STR_FUNC_SYMBOL 0x10
|
|
80
|
-
#define STR_FUNC_ARRAY 0x20
|
|
81
|
-
#define STR_FUNC_HEREDOC 0x40
|
|
82
|
-
#define STR_FUNC_XQUOTE 0x80
|
|
83
|
-
|
|
84
|
-
enum mrb_string_type {
|
|
85
|
-
str_not_parsing = (0),
|
|
86
|
-
str_squote = (STR_FUNC_PARSING),
|
|
87
|
-
str_dquote = (STR_FUNC_PARSING|STR_FUNC_EXPAND),
|
|
88
|
-
str_regexp = (STR_FUNC_PARSING|STR_FUNC_REGEXP|STR_FUNC_EXPAND),
|
|
89
|
-
str_sword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY),
|
|
90
|
-
str_dword = (STR_FUNC_PARSING|STR_FUNC_WORD|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
|
|
91
|
-
str_ssym = (STR_FUNC_PARSING|STR_FUNC_SYMBOL),
|
|
92
|
-
str_ssymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY),
|
|
93
|
-
str_dsymbols = (STR_FUNC_PARSING|STR_FUNC_SYMBOL|STR_FUNC_ARRAY|STR_FUNC_EXPAND),
|
|
94
|
-
str_heredoc = (STR_FUNC_PARSING|STR_FUNC_HEREDOC),
|
|
95
|
-
str_xquote = (STR_FUNC_PARSING|STR_FUNC_XQUOTE|STR_FUNC_EXPAND),
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/* heredoc structure */
|
|
99
|
-
struct mrb_parser_heredoc_info {
|
|
100
|
-
mrb_bool allow_indent:1;
|
|
101
|
-
mrb_bool remove_indent:1;
|
|
102
|
-
size_t indent;
|
|
103
|
-
mrb_ast_node *indented;
|
|
104
|
-
mrb_bool line_head:1;
|
|
105
|
-
enum mrb_string_type type;
|
|
106
|
-
const char *term;
|
|
107
|
-
int term_len;
|
|
108
|
-
mrb_ast_node *doc;
|
|
109
|
-
};
|
|
110
|
-
|
|
111
82
|
#define MRB_PARSER_TOKBUF_MAX (UINT16_MAX-1)
|
|
112
83
|
#define MRB_PARSER_TOKBUF_SIZE 256
|
|
113
84
|
|
|
114
85
|
/* parser structure */
|
|
115
86
|
struct mrb_parser_state {
|
|
116
87
|
mrb_state *mrb;
|
|
117
|
-
|
|
88
|
+
mempool *pool;
|
|
118
89
|
mrb_ast_node *cells;
|
|
119
90
|
const char *s, *send;
|
|
120
91
|
#ifndef MRB_NO_STDIO
|
|
121
92
|
/* If both f and s are non-null, it will be taken preferentially from s until s < send. */
|
|
122
93
|
FILE *f;
|
|
123
94
|
#endif
|
|
124
|
-
|
|
95
|
+
mrb_ccontext *cxt;
|
|
125
96
|
mrb_sym filename_sym;
|
|
126
97
|
uint16_t lineno;
|
|
127
98
|
int column;
|
|
128
99
|
|
|
129
100
|
enum mrb_lex_state_enum lstate;
|
|
130
|
-
|
|
101
|
+
struct parser_lex_strterm *lex_strterm;
|
|
131
102
|
|
|
132
103
|
unsigned int cond_stack;
|
|
133
104
|
unsigned int cmdarg_stack;
|
|
134
105
|
int paren_nest;
|
|
135
106
|
int lpar_beg;
|
|
136
|
-
int in_def, in_single;
|
|
107
|
+
int in_def, in_single, in_kwarg;
|
|
137
108
|
mrb_bool cmd_start:1;
|
|
138
109
|
mrb_ast_node *locals;
|
|
139
110
|
|
|
@@ -143,10 +114,8 @@ struct mrb_parser_state {
|
|
|
143
114
|
int tidx;
|
|
144
115
|
int tsiz;
|
|
145
116
|
|
|
146
|
-
mrb_ast_node *all_heredocs; /* list of mrb_parser_heredoc_info* */
|
|
147
117
|
mrb_ast_node *heredocs_from_nextline;
|
|
148
118
|
mrb_ast_node *parsing_heredoc;
|
|
149
|
-
mrb_ast_node *lex_strterm_before_heredoc;
|
|
150
119
|
|
|
151
120
|
void *ylval;
|
|
152
121
|
|
|
@@ -157,6 +126,7 @@ struct mrb_parser_state {
|
|
|
157
126
|
mrb_bool no_optimize:1;
|
|
158
127
|
mrb_bool capture_errors:1;
|
|
159
128
|
mrb_bool no_ext_ops:1;
|
|
129
|
+
mrb_bool no_return_value:1;
|
|
160
130
|
const struct RProc *upper;
|
|
161
131
|
struct mrb_parser_message error_buffer[10];
|
|
162
132
|
struct mrb_parser_message warn_buffer[10];
|
|
@@ -165,43 +135,51 @@ struct mrb_parser_state {
|
|
|
165
135
|
uint16_t filename_table_length;
|
|
166
136
|
uint16_t current_filename_index;
|
|
167
137
|
|
|
138
|
+
/* Variable-sized node management */
|
|
168
139
|
mrb_ast_node *nvars;
|
|
169
140
|
};
|
|
170
141
|
|
|
171
142
|
MRB_API struct mrb_parser_state* mrb_parser_new(mrb_state*);
|
|
172
143
|
MRB_API void mrb_parser_free(struct mrb_parser_state*);
|
|
173
|
-
MRB_API void mrb_parser_parse(struct mrb_parser_state*,
|
|
144
|
+
MRB_API void mrb_parser_parse(struct mrb_parser_state*,mrb_ccontext*);
|
|
174
145
|
|
|
175
146
|
MRB_API void mrb_parser_set_filename(struct mrb_parser_state*, char const*);
|
|
176
147
|
MRB_API mrb_sym mrb_parser_get_filename(struct mrb_parser_state*, uint16_t idx);
|
|
177
148
|
|
|
178
149
|
/* utility functions */
|
|
179
150
|
#ifndef MRB_NO_STDIO
|
|
180
|
-
MRB_API struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,
|
|
151
|
+
MRB_API struct mrb_parser_state* mrb_parse_file(mrb_state*,FILE*,mrb_ccontext*);
|
|
181
152
|
#endif
|
|
182
|
-
MRB_API struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,
|
|
183
|
-
MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t,
|
|
153
|
+
MRB_API struct mrb_parser_state* mrb_parse_string(mrb_state*,const char*,mrb_ccontext*);
|
|
154
|
+
MRB_API struct mrb_parser_state* mrb_parse_nstring(mrb_state*,const char*,size_t,mrb_ccontext*);
|
|
184
155
|
MRB_API struct RProc* mrb_generate_code(mrb_state*, struct mrb_parser_state*);
|
|
185
|
-
MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p,
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
*
|
|
195
|
-
|
|
156
|
+
MRB_API mrb_value mrb_load_exec(mrb_state *mrb, struct mrb_parser_state *p, mrb_ccontext *c);
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* program load functions
|
|
160
|
+
*
|
|
161
|
+
* Please note! Currently due to interactions with the GC calling these functions will
|
|
162
|
+
* leak one RProc object per function call.
|
|
163
|
+
* To prevent this save the current memory arena before calling and restore the arena
|
|
164
|
+
* right after, like so
|
|
165
|
+
*
|
|
166
|
+
* int ai = mrb_gc_arena_save(mrb);
|
|
167
|
+
* mrb_value status = mrb_load_string(mrb, buffer);
|
|
168
|
+
* mrb_gc_arena_restore(mrb, ai);
|
|
169
|
+
*
|
|
170
|
+
* Also, when called from a C function defined as a method, the current stack is destroyed.
|
|
171
|
+
* If processing continues after this function, the objects obtained from the arguments
|
|
172
|
+
* must be protected as needed before this function.
|
|
173
|
+
*/
|
|
196
174
|
#ifndef MRB_NO_STDIO
|
|
197
175
|
MRB_API mrb_value mrb_load_file(mrb_state*,FILE*);
|
|
198
|
-
MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*,
|
|
199
|
-
MRB_API mrb_value mrb_load_detect_file_cxt(mrb_state *mrb, FILE *fp,
|
|
176
|
+
MRB_API mrb_value mrb_load_file_cxt(mrb_state*,FILE*, mrb_ccontext *cxt);
|
|
177
|
+
MRB_API mrb_value mrb_load_detect_file_cxt(mrb_state *mrb, FILE *fp, mrb_ccontext *c);
|
|
200
178
|
#endif
|
|
201
179
|
MRB_API mrb_value mrb_load_string(mrb_state *mrb, const char *s);
|
|
202
180
|
MRB_API mrb_value mrb_load_nstring(mrb_state *mrb, const char *s, size_t len);
|
|
203
|
-
MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s,
|
|
204
|
-
MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len,
|
|
181
|
+
MRB_API mrb_value mrb_load_string_cxt(mrb_state *mrb, const char *s, mrb_ccontext *cxt);
|
|
182
|
+
MRB_API mrb_value mrb_load_nstring_cxt(mrb_state *mrb, const char *s, size_t len, mrb_ccontext *cxt);
|
|
205
183
|
|
|
206
184
|
/** @} */
|
|
207
185
|
MRB_END_DECL
|
|
@@ -41,12 +41,12 @@ MRB_API struct RData *mrb_data_object_alloc(mrb_state *mrb, struct RClass* klass
|
|
|
41
41
|
|
|
42
42
|
#define Data_Make_Struct(mrb,klass,strct,type,sval,data_obj) do { \
|
|
43
43
|
(data_obj) = Data_Wrap_Struct(mrb,klass,type,NULL);\
|
|
44
|
-
(sval) = (strct
|
|
44
|
+
(sval) = (strct*)mrb_malloc(mrb, sizeof(strct)); \
|
|
45
45
|
{ static const strct zero = { 0 }; *(sval) = zero; };\
|
|
46
46
|
(data_obj)->data = (sval);\
|
|
47
47
|
} while (0)
|
|
48
48
|
|
|
49
|
-
#define RDATA(obj) ((struct RData
|
|
49
|
+
#define RDATA(obj) ((struct RData*)(mrb_ptr(obj)))
|
|
50
50
|
#define DATA_PTR(d) (RDATA(d)->data)
|
|
51
51
|
#define DATA_TYPE(d) (RDATA(d)->type)
|
|
52
52
|
MRB_API void mrb_data_check_type(mrb_state *mrb, mrb_value, const mrb_data_type*);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#include "common.h"
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
*
|
|
13
|
+
* mruby Debugging.
|
|
14
14
|
*/
|
|
15
15
|
MRB_BEGIN_DECL
|
|
16
16
|
|
|
@@ -31,10 +31,11 @@ typedef struct mrb_irep_debug_info_file {
|
|
|
31
31
|
uint32_t line_entry_count;
|
|
32
32
|
mrb_debug_line_type line_type;
|
|
33
33
|
union {
|
|
34
|
+
const char *s;
|
|
34
35
|
void *ptr;
|
|
35
|
-
uint16_t *ary;
|
|
36
|
-
mrb_irep_debug_info_line *flat_map;
|
|
37
|
-
uint8_t *packed_map;
|
|
36
|
+
const uint16_t *ary;
|
|
37
|
+
const mrb_irep_debug_info_line *flat_map;
|
|
38
|
+
const uint8_t *packed_map;
|
|
38
39
|
} lines;
|
|
39
40
|
} mrb_irep_debug_info_file;
|
|
40
41
|
|
|
@@ -45,7 +46,7 @@ typedef struct mrb_irep_debug_info {
|
|
|
45
46
|
} mrb_irep_debug_info;
|
|
46
47
|
|
|
47
48
|
/*
|
|
48
|
-
* get
|
|
49
|
+
* get filename from irep's debug info and program counter
|
|
49
50
|
* @return returns NULL if not found
|
|
50
51
|
*/
|
|
51
52
|
MRB_API const char *mrb_debug_get_filename(mrb_state *mrb, const mrb_irep *irep, uint32_t pc);
|
|
@@ -56,6 +57,12 @@ MRB_API const char *mrb_debug_get_filename(mrb_state *mrb, const mrb_irep *irep,
|
|
|
56
57
|
*/
|
|
57
58
|
MRB_API int32_t mrb_debug_get_line(mrb_state *mrb, const mrb_irep *irep, uint32_t pc);
|
|
58
59
|
|
|
60
|
+
/*
|
|
61
|
+
* get line and filename from irep's debug info and program counter
|
|
62
|
+
* @return returns FALSE if not found
|
|
63
|
+
*/
|
|
64
|
+
MRB_API mrb_bool mrb_debug_get_position(mrb_state *mrb, const mrb_irep *irep, uint32_t pc, int32_t *lp, const char **fp);
|
|
65
|
+
|
|
59
66
|
MRB_API mrb_irep_debug_info *mrb_debug_info_alloc(mrb_state *mrb, mrb_irep *irep);
|
|
60
67
|
MRB_API mrb_irep_debug_info_file *mrb_debug_info_append_file(
|
|
61
68
|
mrb_state *mrb, mrb_irep_debug_info *info,
|
|
@@ -19,17 +19,15 @@ MRB_BEGIN_DECL
|
|
|
19
19
|
/* flags for mrb_dump_irep{,_binary,_cfunc,_cstruct} */
|
|
20
20
|
#define MRB_DUMP_DEBUG_INFO 1
|
|
21
21
|
#define MRB_DUMP_STATIC 2
|
|
22
|
-
#define
|
|
22
|
+
#define MRB_DUMP_NO_LVAR 4
|
|
23
23
|
|
|
24
|
-
int mrb_dump_irep(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size);
|
|
25
24
|
#ifndef MRB_NO_STDIO
|
|
26
|
-
int mrb_dump_irep_binary(mrb_state*, const mrb_irep*, uint8_t, FILE*);
|
|
27
|
-
int mrb_dump_irep_cfunc(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
|
|
28
|
-
int mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep*, uint8_t flags, FILE *f, const char *initname);
|
|
29
|
-
mrb_irep *mrb_read_irep_file(mrb_state*, FILE*);
|
|
30
25
|
MRB_API mrb_value mrb_load_irep_file(mrb_state*,FILE*);
|
|
31
|
-
MRB_API mrb_value mrb_load_irep_file_cxt(mrb_state*, FILE*,
|
|
26
|
+
MRB_API mrb_value mrb_load_irep_file_cxt(mrb_state*, FILE*, mrb_ccontext*);
|
|
27
|
+
mrb_irep *mrb_read_irep_file(mrb_state*, FILE*);
|
|
28
|
+
int mrb_dump_irep_binary(mrb_state*, const mrb_irep*, uint8_t, FILE*);
|
|
32
29
|
#endif
|
|
30
|
+
/* avoid mrb_read_irep(); use mrb_read_irep_buf() instead (may cause buffer overflow) */
|
|
33
31
|
MRB_API mrb_irep *mrb_read_irep(mrb_state*, const uint8_t*);
|
|
34
32
|
MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t);
|
|
35
33
|
|
|
@@ -54,13 +52,13 @@ MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t);
|
|
|
54
52
|
/* Binary Format Version Major:Minor */
|
|
55
53
|
/* Major: Incompatible to prior versions */
|
|
56
54
|
/* Minor: Upper-compatible to prior versions */
|
|
57
|
-
#define RITE_BINARY_MAJOR_VER "
|
|
55
|
+
#define RITE_BINARY_MAJOR_VER "04"
|
|
58
56
|
#define RITE_BINARY_MINOR_VER "00"
|
|
59
57
|
#define RITE_BINARY_FORMAT_VER RITE_BINARY_MAJOR_VER RITE_BINARY_MINOR_VER
|
|
60
58
|
#define RITE_COMPILER_NAME "MATZ"
|
|
61
59
|
#define RITE_COMPILER_VERSION "0000"
|
|
62
60
|
|
|
63
|
-
#define RITE_VM_VER "
|
|
61
|
+
#define RITE_VM_VER "0400"
|
|
64
62
|
|
|
65
63
|
#define RITE_BINARY_EOF "END\0"
|
|
66
64
|
#define RITE_SECTION_IREP_IDENT "IREP"
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
** @file mruby/error.h - Exception class
|
|
3
|
+
**
|
|
4
|
+
** See Copyright Notice in mruby.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef MRUBY_ERROR_H
|
|
8
|
+
#define MRUBY_ERROR_H
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
#include <string.h>
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* mruby error handling.
|
|
15
|
+
*/
|
|
16
|
+
MRB_BEGIN_DECL
|
|
17
|
+
|
|
18
|
+
struct RException {
|
|
19
|
+
MRB_OBJECT_HEADER;
|
|
20
|
+
struct iv_tbl *iv;
|
|
21
|
+
struct RBasic *mesg; // NULL or probably RString
|
|
22
|
+
struct RBasic *backtrace; // NULL, RArray or RData
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/* error that should terminate execution */
|
|
26
|
+
#define MRB_EXC_EXIT 65536
|
|
27
|
+
#define MRB_EXC_EXIT_P(e) ((e)->flags & MRB_EXC_EXIT)
|
|
28
|
+
/* retrieve status value from exc; need <mruby/variable.h> and <mruby/presym.h> */
|
|
29
|
+
#define MRB_EXC_EXIT_STATUS(mrb,e) ((int)mrb_as_int((mrb),mrb_obj_iv_get((mrb),(e),MRB_SYM(status))))
|
|
30
|
+
/* exit with SystemExit status */
|
|
31
|
+
#define MRB_EXC_CHECK_EXIT(mrb,e) do {if (MRB_EXC_EXIT_P(e)) exit(MRB_EXC_EXIT_STATUS((mrb),(e)));} while (0)
|
|
32
|
+
|
|
33
|
+
#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
|
|
34
|
+
|
|
35
|
+
MRB_API mrb_noreturn void mrb_sys_fail(mrb_state *mrb, const char *mesg);
|
|
36
|
+
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
|
|
37
|
+
#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
|
|
38
|
+
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
|
|
39
|
+
|
|
40
|
+
#if defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING) || defined(MRB_64BIT)
|
|
41
|
+
#undef MRB_USE_RBREAK_VALUE_UNION
|
|
42
|
+
#else
|
|
43
|
+
#define MRB_USE_RBREAK_VALUE_UNION 1
|
|
44
|
+
#endif
|
|
45
|
+
|
|
46
|
+
/*
|
|
47
|
+
* flags:
|
|
48
|
+
* 0..7: enum mrb_vtype (only when defined MRB_USE_RBREAK_VALUE_UNION)
|
|
49
|
+
* 8..10: RBREAK_TAGs in src/vm.c (otherwise, set to 0)
|
|
50
|
+
*/
|
|
51
|
+
struct RBreak {
|
|
52
|
+
MRB_OBJECT_HEADER;
|
|
53
|
+
uintptr_t ci_break_index; // The top-level ci index to break. One before the return destination.
|
|
54
|
+
#ifndef MRB_USE_RBREAK_VALUE_UNION
|
|
55
|
+
mrb_value val;
|
|
56
|
+
#else
|
|
57
|
+
/* Store value as uint32_t words instead of union mrb_value_union
|
|
58
|
+
to avoid 8-byte alignment of int64_t/double on 32-bit platforms
|
|
59
|
+
(e.g., ARM, MIPS, PowerPC) which would inflate struct size beyond
|
|
60
|
+
the 5-word RVALUE limit due to padding. */
|
|
61
|
+
uint32_t value[sizeof(union mrb_value_union) / sizeof(uint32_t)];
|
|
62
|
+
#endif
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
#ifndef MRB_USE_RBREAK_VALUE_UNION
|
|
66
|
+
#define mrb_break_value_get(brk) ((brk)->val)
|
|
67
|
+
#define mrb_break_value_set(brk, v) ((brk)->val = v)
|
|
68
|
+
#else
|
|
69
|
+
#define RBREAK_VALUE_TT_MASK ((1 << 8) - 1)
|
|
70
|
+
static inline mrb_value
|
|
71
|
+
mrb_break_value_get(struct RBreak *brk)
|
|
72
|
+
{
|
|
73
|
+
mrb_value val;
|
|
74
|
+
memcpy(&val.value, brk->value, sizeof(val.value));
|
|
75
|
+
val.tt = (enum mrb_vtype)(brk->flags & RBREAK_VALUE_TT_MASK);
|
|
76
|
+
return val;
|
|
77
|
+
}
|
|
78
|
+
static inline void
|
|
79
|
+
mrb_break_value_set(struct RBreak *brk, mrb_value val)
|
|
80
|
+
{
|
|
81
|
+
memcpy(brk->value, &val.value, sizeof(val.value));
|
|
82
|
+
brk->flags &= ~RBREAK_VALUE_TT_MASK;
|
|
83
|
+
brk->flags |= val.tt;
|
|
84
|
+
}
|
|
85
|
+
#endif /* MRB_USE_RBREAK_VALUE_UNION */
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Error check
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
/* clear error status in the mrb_state structure */
|
|
92
|
+
MRB_API void mrb_clear_error(mrb_state *mrb);
|
|
93
|
+
/* returns TRUE if error in the previous call; internally calls mrb_clear_error() */
|
|
94
|
+
MRB_API mrb_bool mrb_check_error(mrb_state *mrb);
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Protect
|
|
98
|
+
*
|
|
99
|
+
*/
|
|
100
|
+
typedef mrb_value mrb_protect_error_func(mrb_state *mrb, void *userdata);
|
|
101
|
+
MRB_API mrb_value mrb_protect_error(mrb_state *mrb, mrb_protect_error_func *body, void *userdata, mrb_bool *error);
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Protect (takes mrb_value for body argument)
|
|
105
|
+
*
|
|
106
|
+
* Implemented in the mruby-error mrbgem
|
|
107
|
+
*/
|
|
108
|
+
MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state);
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Ensure
|
|
112
|
+
*
|
|
113
|
+
* Implemented in the mruby-error mrbgem
|
|
114
|
+
*/
|
|
115
|
+
MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
116
|
+
mrb_func_t ensure, mrb_value e_data);
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Rescue
|
|
120
|
+
*
|
|
121
|
+
* Implemented in the mruby-error mrbgem
|
|
122
|
+
*/
|
|
123
|
+
MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
124
|
+
mrb_func_t rescue, mrb_value r_data);
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Rescue exception
|
|
128
|
+
*
|
|
129
|
+
* Implemented in the mruby-error mrbgem
|
|
130
|
+
*/
|
|
131
|
+
MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
132
|
+
mrb_func_t rescue, mrb_value r_data,
|
|
133
|
+
mrb_int len, struct RClass **classes);
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Calls `func` via `mrb_protect_error()` and then always executes the user block exactly once.
|
|
137
|
+
* Even if a global jump (similar to a Ruby exception) occurs within `func`, the block will be executed,
|
|
138
|
+
* and after the block's completion, the global jump will be re-thrown.
|
|
139
|
+
*
|
|
140
|
+
* By checking `mrb->exc != NULL` within the block, you can determine if a global jump occurred in `func`.
|
|
141
|
+
*
|
|
142
|
+
* If you want to suppress the global jump and continue processing, use `mrb_clear_error(mrb); break;`.
|
|
143
|
+
*
|
|
144
|
+
* - `mrb`: The mruby state reference
|
|
145
|
+
* - `result_var`: Pre-defined mrb_value type variable (to receive `func`'s return value)
|
|
146
|
+
* - `func`: Function to call (compatible with `mrb_protect_error_func`)
|
|
147
|
+
* - `data`: User data to pass to `func`
|
|
148
|
+
*
|
|
149
|
+
* Example:
|
|
150
|
+
*
|
|
151
|
+
* mrb_value result;
|
|
152
|
+
* MRB_ENSURE(mrb, result, body_func, userdata) {
|
|
153
|
+
* // This block is always executed (equivalent to Ruby's ensure)
|
|
154
|
+
*
|
|
155
|
+
* if (mrb->exc) {
|
|
156
|
+
* // Post-processing when an exception occurs
|
|
157
|
+
* }
|
|
158
|
+
*
|
|
159
|
+
* // To ignore the global jump, use `mrb_clear_error(mrb); break;` here
|
|
160
|
+
* }
|
|
161
|
+
*/
|
|
162
|
+
#define MRB_ENSURE(mrb, result_var, func, data) \
|
|
163
|
+
for (mrb_bool MRB_UNIQNAME(_break_) = FALSE; \
|
|
164
|
+
!MRB_UNIQNAME(_break_) && \
|
|
165
|
+
(((result_var) = mrb_protect_error(mrb, func, data, &MRB_UNIQNAME(_break_))), \
|
|
166
|
+
((mrb)->exc = (MRB_UNIQNAME(_break_) ? mrb_obj_ptr((result_var)) : NULL)), \
|
|
167
|
+
TRUE); \
|
|
168
|
+
(void)(MRB_UNIQNAME(_break_) && (mrb)->jmp && (mrb_exc_raise(mrb, result_var), TRUE)), \
|
|
169
|
+
MRB_UNIQNAME(_break_) = TRUE)
|
|
170
|
+
|
|
171
|
+
MRB_END_DECL
|
|
172
|
+
|
|
173
|
+
#endif /* MRUBY_ERROR_H */
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
** @file mruby/gc.h - garbage collector for mruby
|
|
3
|
+
**
|
|
4
|
+
** See Copyright Notice in mruby.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef MRUBY_GC_H
|
|
8
|
+
#define MRUBY_GC_H
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Uncommon memory management stuffs.
|
|
14
|
+
*/
|
|
15
|
+
MRB_BEGIN_DECL
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
struct mrb_state;
|
|
19
|
+
|
|
20
|
+
#define MRB_EACH_OBJ_OK 0
|
|
21
|
+
#define MRB_EACH_OBJ_BREAK 1
|
|
22
|
+
typedef int (mrb_each_object_callback)(struct mrb_state *mrb, struct RBasic *obj, void *data);
|
|
23
|
+
void mrb_objspace_each_objects(struct mrb_state *mrb, mrb_each_object_callback *callback, void *data);
|
|
24
|
+
size_t mrb_objspace_page_slot_size(void);
|
|
25
|
+
MRB_API void mrb_free_context(struct mrb_state *mrb, struct mrb_context *c);
|
|
26
|
+
|
|
27
|
+
#ifndef MRB_GC_ARENA_SIZE
|
|
28
|
+
#define MRB_GC_ARENA_SIZE 100
|
|
29
|
+
#endif
|
|
30
|
+
|
|
31
|
+
#ifndef MRB_GRAY_STACK_SIZE
|
|
32
|
+
#define MRB_GRAY_STACK_SIZE 1024
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
typedef enum {
|
|
36
|
+
MRB_GC_STATE_ROOT = 0,
|
|
37
|
+
MRB_GC_STATE_MARK,
|
|
38
|
+
MRB_GC_STATE_SWEEP
|
|
39
|
+
} mrb_gc_state;
|
|
40
|
+
|
|
41
|
+
typedef struct mrb_gc {
|
|
42
|
+
struct mrb_heap_page *heaps; /* all heaps pages */
|
|
43
|
+
struct mrb_heap_page *free_heaps;/* heaps for allocation */
|
|
44
|
+
struct mrb_heap_page *sweeps; /* page where sweep starts */
|
|
45
|
+
struct mrb_heap_region *regions; /* contiguous heap regions */
|
|
46
|
+
struct RBasic *gray_stack[MRB_GRAY_STACK_SIZE]; /* stack of gray objects */
|
|
47
|
+
size_t gray_stack_top; /* top index of gray stack */
|
|
48
|
+
mrb_bool gray_overflow:1; /* gray stack overflowed; needs heap rescan */
|
|
49
|
+
size_t live; /* count of live objects */
|
|
50
|
+
size_t live_after_mark; /* old generation objects */
|
|
51
|
+
size_t threshold; /* threshold to start GC */
|
|
52
|
+
size_t oldgen_threshold; /* threshold to kick major GC */
|
|
53
|
+
mrb_gc_state state; /* current state of gc */
|
|
54
|
+
int interval_ratio;
|
|
55
|
+
int step_ratio;
|
|
56
|
+
int current_white_part :2; /* make white object by white_part */
|
|
57
|
+
mrb_bool iterating :1; /* currently iterating over objects */
|
|
58
|
+
mrb_bool disabled :1; /* GC disabled */
|
|
59
|
+
mrb_bool generational :1; /* generational GC mode */
|
|
60
|
+
mrb_bool full :1; /* major GC mode */
|
|
61
|
+
mrb_bool out_of_memory :1; /* out-of-memory error occurred */
|
|
62
|
+
|
|
63
|
+
#ifdef MRB_GC_FIXED_ARENA
|
|
64
|
+
struct RBasic *arena[MRB_GC_ARENA_SIZE]; /* GC protection array */
|
|
65
|
+
#else
|
|
66
|
+
struct RBasic **arena; /* GC protection array */
|
|
67
|
+
int arena_capa; /* size of protection array */
|
|
68
|
+
#endif
|
|
69
|
+
int arena_idx;
|
|
70
|
+
} mrb_gc;
|
|
71
|
+
|
|
72
|
+
MRB_API mrb_bool mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object);
|
|
73
|
+
MRB_API int mrb_gc_add_region(struct mrb_state *mrb, void *start, size_t size);
|
|
74
|
+
|
|
75
|
+
#define MRB_GC_RED 7
|
|
76
|
+
|
|
77
|
+
MRB_END_DECL
|
|
78
|
+
|
|
79
|
+
#endif /* MRUBY_GC_H */
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
MRB_BEGIN_DECL
|
|
16
16
|
|
|
17
|
-
/* offset of `iv` must
|
|
17
|
+
/* offset of `iv` must match struct RObject */
|
|
18
18
|
struct RHash {
|
|
19
19
|
MRB_OBJECT_HEADER;
|
|
20
20
|
#ifdef MRB_64BIT
|
|
@@ -35,7 +35,6 @@ struct RHash {
|
|
|
35
35
|
#define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v)))
|
|
36
36
|
#define mrb_hash_value(p) mrb_obj_value((void*)(p))
|
|
37
37
|
|
|
38
|
-
size_t mrb_hash_memsize(mrb_value obj);
|
|
39
38
|
MRB_API mrb_value mrb_hash_new_capa(mrb_state *mrb, mrb_int capa);
|
|
40
39
|
|
|
41
40
|
/*
|
|
@@ -226,11 +225,6 @@ MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2);
|
|
|
226
225
|
#define MRB_RHASH_DEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_DEFAULT)
|
|
227
226
|
#define MRB_RHASH_PROCDEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_PROC_DEFAULT)
|
|
228
227
|
|
|
229
|
-
/* GC functions */
|
|
230
|
-
void mrb_gc_mark_hash(mrb_state*, struct RHash*);
|
|
231
|
-
size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
|
|
232
|
-
void mrb_gc_free_hash(mrb_state*, struct RHash*);
|
|
233
|
-
|
|
234
228
|
/* return non zero to break the loop */
|
|
235
229
|
typedef int (mrb_hash_foreach_func)(mrb_state *mrb, mrb_value key, mrb_value val, void *data);
|
|
236
230
|
MRB_API void mrb_hash_foreach(mrb_state *mrb, struct RHash *hash, mrb_hash_foreach_func *func, void *p);
|