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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
** mruby - An embeddable Ruby implementation
|
|
3
3
|
**
|
|
4
|
-
** Copyright (c) mruby developers 2010-
|
|
4
|
+
** Copyright (c) mruby developers 2010-
|
|
5
5
|
**
|
|
6
6
|
** Permission is hereby granted, free of charge, to any person obtaining
|
|
7
7
|
** a copy of this software and associated documentation files (the
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
#endif
|
|
140
140
|
|
|
141
141
|
/**
|
|
142
|
-
*
|
|
142
|
+
* mruby C API entry point
|
|
143
143
|
*/
|
|
144
144
|
MRB_BEGIN_DECL
|
|
145
145
|
|
|
@@ -154,19 +154,9 @@ typedef uint8_t mrb_code;
|
|
|
154
154
|
*/
|
|
155
155
|
typedef uint32_t mrb_aspec;
|
|
156
156
|
|
|
157
|
-
struct mrb_irep;
|
|
158
|
-
struct mrb_state;
|
|
157
|
+
typedef struct mrb_irep mrb_irep;
|
|
159
158
|
|
|
160
|
-
|
|
161
|
-
* Function pointer type of custom allocator used in @see mrb_open_allocf.
|
|
162
|
-
*
|
|
163
|
-
* The function pointing it must behave similarly as realloc except:
|
|
164
|
-
* - If ptr is NULL it must allocate new space.
|
|
165
|
-
* - If s is NULL, ptr must be freed.
|
|
166
|
-
*
|
|
167
|
-
* See @see mrb_default_allocf for the default implementation.
|
|
168
|
-
*/
|
|
169
|
-
typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
|
|
159
|
+
struct mrb_state;
|
|
170
160
|
|
|
171
161
|
#ifndef MRB_FIXED_STATE_ATEXIT_STACK_SIZE
|
|
172
162
|
#define MRB_FIXED_STATE_ATEXIT_STACK_SIZE 5
|
|
@@ -176,13 +166,17 @@ typedef struct {
|
|
|
176
166
|
uint8_t n:4; /* (15=*) c=n|nk<<4 */
|
|
177
167
|
uint8_t nk:4; /* (15=*) */
|
|
178
168
|
uint8_t cci; /* called from C function */
|
|
169
|
+
uint8_t vis; /* 5(ZERO):1(separate module):2(method visibility) */
|
|
170
|
+
/* under 3-bit flags are copied to env, and after that, env takes precedence */
|
|
179
171
|
mrb_sym mid;
|
|
180
172
|
const struct RProc *proc;
|
|
173
|
+
struct RProc *blk;
|
|
181
174
|
mrb_value *stack;
|
|
182
175
|
const mrb_code *pc; /* current address on iseq of this proc */
|
|
183
176
|
union {
|
|
184
177
|
struct REnv *env;
|
|
185
178
|
struct RClass *target_class;
|
|
179
|
+
const void *keep_context; /* if NULL, it means that the fiber has switched; for internal use */
|
|
186
180
|
} u;
|
|
187
181
|
} mrb_callinfo;
|
|
188
182
|
|
|
@@ -195,6 +189,10 @@ enum mrb_fiber_state {
|
|
|
195
189
|
MRB_FIBER_TERMINATED,
|
|
196
190
|
};
|
|
197
191
|
|
|
192
|
+
/* Task context status aliases */
|
|
193
|
+
#define MRB_TASK_CREATED MRB_FIBER_CREATED
|
|
194
|
+
#define MRB_TASK_STOPPED MRB_FIBER_TERMINATED
|
|
195
|
+
|
|
198
196
|
struct mrb_context {
|
|
199
197
|
struct mrb_context *prev;
|
|
200
198
|
|
|
@@ -228,17 +226,14 @@ mrb_static_assert_powerof2(MRB_METHOD_CACHE_SIZE);
|
|
|
228
226
|
*/
|
|
229
227
|
typedef mrb_value (*mrb_func_t)(struct mrb_state *mrb, mrb_value self);
|
|
230
228
|
|
|
231
|
-
#ifndef MRB_USE_METHOD_T_STRUCT
|
|
232
|
-
typedef uintptr_t mrb_method_t;
|
|
233
|
-
#else
|
|
234
229
|
typedef struct {
|
|
235
|
-
|
|
230
|
+
uint32_t flags; /* method flags (no symbol packed) */
|
|
231
|
+
|
|
236
232
|
union {
|
|
237
|
-
struct RProc *proc;
|
|
233
|
+
const struct RProc *proc;
|
|
238
234
|
mrb_func_t func;
|
|
239
|
-
};
|
|
235
|
+
} as;
|
|
240
236
|
} mrb_method_t;
|
|
241
|
-
#endif
|
|
242
237
|
|
|
243
238
|
#ifndef MRB_NO_METHOD_CACHE
|
|
244
239
|
struct mrb_cache_entry {
|
|
@@ -252,12 +247,22 @@ struct mrb_jmpbuf;
|
|
|
252
247
|
|
|
253
248
|
typedef void (*mrb_atexit_func)(struct mrb_state*);
|
|
254
249
|
|
|
250
|
+
#ifdef MRB_USE_TASK_SCHEDULER
|
|
251
|
+
struct mrb_task;
|
|
252
|
+
|
|
253
|
+
typedef struct mrb_task_state {
|
|
254
|
+
struct mrb_task *queues[4]; /* Task queues (dormant, ready, waiting, suspended) */
|
|
255
|
+
volatile uint32_t tick; /* Current tick count */
|
|
256
|
+
volatile uint32_t wakeup_tick; /* Next wakeup tick */
|
|
257
|
+
volatile mrb_bool switching; /* Context switch pending flag */
|
|
258
|
+
struct mrb_task *main_task; /* Main task wrapper for root context */
|
|
259
|
+
uint8_t scheduler_lock; /* Lock counter for synchronous execution */
|
|
260
|
+
} mrb_task_state;
|
|
261
|
+
#endif
|
|
262
|
+
|
|
255
263
|
typedef struct mrb_state {
|
|
256
264
|
struct mrb_jmpbuf *jmp;
|
|
257
265
|
|
|
258
|
-
mrb_allocf allocf; /* memory allocation function */
|
|
259
|
-
void *allocf_ud; /* auxiliary data of allocf */
|
|
260
|
-
|
|
261
266
|
struct mrb_context *c;
|
|
262
267
|
struct mrb_context *root_c;
|
|
263
268
|
struct iv_tbl *globals; /* global variable table */
|
|
@@ -286,18 +291,19 @@ typedef struct mrb_state {
|
|
|
286
291
|
|
|
287
292
|
mrb_gc gc;
|
|
288
293
|
|
|
294
|
+
mrb_bool bootstrapping;
|
|
295
|
+
|
|
289
296
|
#ifndef MRB_NO_METHOD_CACHE
|
|
290
297
|
struct mrb_cache_entry cache[MRB_METHOD_CACHE_SIZE];
|
|
291
298
|
#endif
|
|
292
299
|
|
|
293
300
|
mrb_sym symidx;
|
|
294
301
|
const char **symtbl;
|
|
295
|
-
uint8_t *symlink;
|
|
296
|
-
uint8_t *symflags;
|
|
297
|
-
mrb_sym symhash[256];
|
|
298
302
|
size_t symcapa;
|
|
303
|
+
struct mrb_sym_hash_table *symhash;
|
|
304
|
+
void *sym_pool;
|
|
299
305
|
#ifndef MRB_USE_ALL_SYMBOLS
|
|
300
|
-
char symbuf[8];
|
|
306
|
+
char symbuf[8]; /* buffer for small symbol names */
|
|
301
307
|
#endif
|
|
302
308
|
|
|
303
309
|
#ifdef MRB_USE_DEBUG_HOOK
|
|
@@ -312,11 +318,15 @@ typedef struct mrb_state {
|
|
|
312
318
|
struct RClass *eException_class;
|
|
313
319
|
struct RClass *eStandardError_class;
|
|
314
320
|
struct RObject *nomem_err; /* pre-allocated NoMemoryError */
|
|
315
|
-
struct RObject *stack_err; /* pre-allocated
|
|
321
|
+
struct RObject *stack_err; /* pre-allocated SystemStackError */
|
|
316
322
|
#ifdef MRB_GC_FIXED_ARENA
|
|
317
323
|
struct RObject *arena_err; /* pre-allocated arena overflow error */
|
|
318
324
|
#endif
|
|
319
325
|
|
|
326
|
+
struct mrb_mt_rom_list *rom_mt; /* heap-allocated ROM wrappers (freed at close) */
|
|
327
|
+
|
|
328
|
+
struct mrb_iv_shape *root_shape; /* root of IV shape tree */
|
|
329
|
+
|
|
320
330
|
void *ud; /* auxiliary data */
|
|
321
331
|
|
|
322
332
|
#ifdef MRB_FIXED_STATE_ATEXIT_STACK
|
|
@@ -325,6 +335,10 @@ typedef struct mrb_state {
|
|
|
325
335
|
mrb_atexit_func *atexit_stack;
|
|
326
336
|
#endif
|
|
327
337
|
uint16_t atexit_stack_len;
|
|
338
|
+
|
|
339
|
+
#ifdef MRB_USE_TASK_SCHEDULER
|
|
340
|
+
mrb_task_state task; /* Task scheduler state */
|
|
341
|
+
#endif
|
|
328
342
|
} mrb_state;
|
|
329
343
|
|
|
330
344
|
/**
|
|
@@ -361,7 +375,18 @@ MRB_API struct RClass *mrb_define_class_id(mrb_state *mrb, mrb_sym name, struct
|
|
|
361
375
|
MRB_API struct RClass *mrb_define_module(mrb_state *mrb, const char *name);
|
|
362
376
|
MRB_API struct RClass *mrb_define_module_id(mrb_state *mrb, mrb_sym name);
|
|
363
377
|
|
|
378
|
+
/**
|
|
379
|
+
* Returns the singleton class of an object.
|
|
380
|
+
*
|
|
381
|
+
* Raises a `TypeError` exception for immediate values.
|
|
382
|
+
*/
|
|
364
383
|
MRB_API mrb_value mrb_singleton_class(mrb_state *mrb, mrb_value val);
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Returns the singleton class of an object.
|
|
387
|
+
*
|
|
388
|
+
* Returns `NULL` for immediate values,
|
|
389
|
+
*/
|
|
365
390
|
MRB_API struct RClass *mrb_singleton_class_ptr(mrb_state *mrb, mrb_value val);
|
|
366
391
|
|
|
367
392
|
/**
|
|
@@ -391,7 +416,7 @@ MRB_API void mrb_include_module(mrb_state *mrb, struct RClass *cla, struct RClas
|
|
|
391
416
|
MRB_API void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClass *prepended);
|
|
392
417
|
|
|
393
418
|
/**
|
|
394
|
-
* Defines a global function in
|
|
419
|
+
* Defines a global function in Ruby.
|
|
395
420
|
*
|
|
396
421
|
* If you're creating a gem it may look something like this
|
|
397
422
|
*
|
|
@@ -408,14 +433,17 @@ MRB_API void mrb_prepend_module(mrb_state *mrb, struct RClass *cla, struct RClas
|
|
|
408
433
|
* mrb_define_method(mrb, mrb->kernel_module, "example_method", example_method, MRB_ARGS_NONE());
|
|
409
434
|
* }
|
|
410
435
|
*
|
|
411
|
-
* @param mrb The
|
|
436
|
+
* @param mrb The mruby state reference.
|
|
412
437
|
* @param cla The class pointer where the method will be defined.
|
|
413
438
|
* @param name The name of the method being defined.
|
|
414
439
|
* @param func The function pointer to the method definition.
|
|
415
440
|
* @param aspec The method parameters declaration.
|
|
416
441
|
*/
|
|
442
|
+
|
|
417
443
|
MRB_API void mrb_define_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
|
|
418
444
|
MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
|
|
445
|
+
MRB_API void mrb_define_private_method(mrb_state *mrb, struct RClass *cla, const char *name, mrb_func_t func, mrb_aspec aspec);
|
|
446
|
+
MRB_API void mrb_define_private_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid, mrb_func_t func, mrb_aspec aspec);
|
|
419
447
|
|
|
420
448
|
/**
|
|
421
449
|
* Defines a class method.
|
|
@@ -436,7 +464,7 @@ MRB_API void mrb_define_method_id(mrb_state *mrb, struct RClass *c, mrb_sym mid,
|
|
|
436
464
|
* foo = mrb_define_class(mrb, "Foo", mrb->object_class);
|
|
437
465
|
* mrb_define_class_method(mrb, foo, "bar", bar_method, MRB_ARGS_NONE());
|
|
438
466
|
* }
|
|
439
|
-
* @param mrb The
|
|
467
|
+
* @param mrb The mruby state reference.
|
|
440
468
|
* @param cla The class where the class method will be defined.
|
|
441
469
|
* @param name The name of the class method being defined.
|
|
442
470
|
* @param fun The function pointer to the class method definition.
|
|
@@ -472,7 +500,7 @@ MRB_API void mrb_define_singleton_method_id(mrb_state *mrb, struct RObject *cla,
|
|
|
472
500
|
* foo = mrb_define_module(mrb, "Foo");
|
|
473
501
|
* mrb_define_module_function(mrb, foo, "bar", bar_method, MRB_ARGS_NONE());
|
|
474
502
|
* }
|
|
475
|
-
* @param mrb The
|
|
503
|
+
* @param mrb The mruby state reference.
|
|
476
504
|
* @param cla The module where the module function will be defined.
|
|
477
505
|
* @param name The name of the module function being defined.
|
|
478
506
|
* @param fun The function pointer to the module function definition.
|
|
@@ -502,7 +530,7 @@ MRB_API void mrb_define_module_function_id(mrb_state *mrb, struct RClass *cla, m
|
|
|
502
530
|
* mrb_value
|
|
503
531
|
* mrb_example_gem_final(mrb_state* mrb){
|
|
504
532
|
* }
|
|
505
|
-
* @param mrb The
|
|
533
|
+
* @param mrb The mruby state reference.
|
|
506
534
|
* @param cla A class or module the constant is defined in.
|
|
507
535
|
* @param name The name of the constant being defined.
|
|
508
536
|
* @param val The value for the constant.
|
|
@@ -686,9 +714,9 @@ MRB_API struct RClass * mrb_module_new(mrb_state *mrb);
|
|
|
686
714
|
* example_class = mrb_define_class(mrb, "ExampleClass", mrb->object_class);
|
|
687
715
|
* cd = mrb_class_defined(mrb, "ExampleClass");
|
|
688
716
|
*
|
|
689
|
-
* // If mrb_class_defined returns
|
|
690
|
-
* // If mrb_class_defined returns
|
|
691
|
-
* if (cd
|
|
717
|
+
* // If mrb_class_defined returns TRUE then puts "True"
|
|
718
|
+
* // If mrb_class_defined returns FALSE then puts "False"
|
|
719
|
+
* if (cd) {
|
|
692
720
|
* puts("True");
|
|
693
721
|
* }
|
|
694
722
|
* else {
|
|
@@ -735,9 +763,9 @@ MRB_API struct RClass* mrb_exc_get_id(mrb_state *mrb, mrb_sym name);
|
|
|
735
763
|
* example_inner = mrb_define_class_under(mrb, example_outer, "ExampleInner", mrb->object_class);
|
|
736
764
|
* cd = mrb_class_defined_under(mrb, example_outer, "ExampleInner");
|
|
737
765
|
*
|
|
738
|
-
* // If mrb_class_defined_under returns
|
|
739
|
-
* // If mrb_class_defined_under returns
|
|
740
|
-
* if (cd
|
|
766
|
+
* // If mrb_class_defined_under returns TRUE then puts "True"
|
|
767
|
+
* // If mrb_class_defined_under returns FALSE then puts "False"
|
|
768
|
+
* if (cd) {
|
|
741
769
|
* puts("True");
|
|
742
770
|
* }
|
|
743
771
|
* else {
|
|
@@ -786,6 +814,8 @@ MRB_API struct RClass * mrb_module_get_under_id(mrb_state *mrb, struct RClass *o
|
|
|
786
814
|
MRB_API void mrb_notimplement(mrb_state*);
|
|
787
815
|
/* a function to be replacement of unimplemented method */
|
|
788
816
|
MRB_API mrb_value mrb_notimplement_m(mrb_state*, mrb_value);
|
|
817
|
+
/* just return it self */
|
|
818
|
+
MRB_API mrb_value mrb_obj_itself(mrb_state*, mrb_value);
|
|
789
819
|
|
|
790
820
|
/**
|
|
791
821
|
* Duplicate an object.
|
|
@@ -821,14 +851,14 @@ MRB_API mrb_value mrb_obj_dup(mrb_state *mrb, mrb_value obj);
|
|
|
821
851
|
* example_class = mrb_define_class(mrb, "ExampleClass", mrb->object_class);
|
|
822
852
|
* mrb_define_method(mrb, example_class, "example_method", exampleMethod, MRB_ARGS_NONE());
|
|
823
853
|
* mid = mrb_intern_str(mrb, mrb_str_new_lit(mrb, "example_method" ));
|
|
824
|
-
* obj_resp = mrb_obj_respond_to(mrb, example_class, mid); // =>
|
|
854
|
+
* obj_resp = mrb_obj_respond_to(mrb, example_class, mid); // => TRUE (true in Ruby world)
|
|
825
855
|
*
|
|
826
|
-
* // If mrb_obj_respond_to returns
|
|
827
|
-
* // If mrb_obj_respond_to returns
|
|
828
|
-
* if (obj_resp
|
|
856
|
+
* // If mrb_obj_respond_to returns TRUE then puts "True"
|
|
857
|
+
* // If mrb_obj_respond_to returns FALSE then puts "False"
|
|
858
|
+
* if (obj_resp) {
|
|
829
859
|
* puts("True");
|
|
830
860
|
* }
|
|
831
|
-
* else
|
|
861
|
+
* else {
|
|
832
862
|
* puts("False");
|
|
833
863
|
* }
|
|
834
864
|
* }
|
|
@@ -896,6 +926,11 @@ MRB_API struct RClass* mrb_define_module_under_id(mrb_state *mrb, struct RClass
|
|
|
896
926
|
*/
|
|
897
927
|
#define MRB_ARGS_BLOCK() ((mrb_aspec)1)
|
|
898
928
|
|
|
929
|
+
/**
|
|
930
|
+
* Function does not accept a block (&nil)
|
|
931
|
+
*/
|
|
932
|
+
#define MRB_ARGS_NOBLOCK() ((mrb_aspec)(1 << 23))
|
|
933
|
+
|
|
899
934
|
/**
|
|
900
935
|
* Function accepts any number of arguments
|
|
901
936
|
*/
|
|
@@ -930,7 +965,7 @@ MRB_API struct RClass* mrb_define_module_under_id(mrb_state *mrb, struct RClass
|
|
|
930
965
|
* | `I` | inline struct | void *, struct RClass | `I!` gives `NULL` for `nil` |
|
|
931
966
|
* | `&` | block | {mrb_value} | &! raises exception if no block given. |
|
|
932
967
|
* | `*` | rest arguments | const {mrb_value} *, {mrb_int} | Receive the rest of arguments as an array; `*!` avoid copy of the stack. |
|
|
933
|
-
* |
|
|
968
|
+
* | `\|` | optional | | After this spec following specs would be optional. |
|
|
934
969
|
* | `?` | optional given | {mrb_bool} | `TRUE` if preceding argument is given. Used to check optional argument is given. |
|
|
935
970
|
* | `:` | keyword args | {mrb_kwargs} const | Get keyword arguments. @see mrb_kwargs |
|
|
936
971
|
*
|
|
@@ -948,14 +983,14 @@ typedef const char *mrb_args_format;
|
|
|
948
983
|
/**
|
|
949
984
|
* Get keyword arguments by `mrb_get_args()` with `:` specifier.
|
|
950
985
|
*
|
|
951
|
-
* `mrb_kwargs::num` indicates that the number of keyword values.
|
|
986
|
+
* `mrb_kwargs::num` indicates that the total number of keyword values.
|
|
952
987
|
*
|
|
953
|
-
* `mrb_kwargs::
|
|
954
|
-
* Note that `undef` is assigned if there is no keyword argument corresponding to `mrb_kwargs::optional`.
|
|
988
|
+
* `mrb_kwargs::required` indicates that the specified number of keywords starting from the beginning of the `mrb_sym` array are required.
|
|
955
989
|
*
|
|
956
|
-
* `mrb_kwargs::table` accepts a
|
|
990
|
+
* `mrb_kwargs::table` accepts a `mrb_sym` array of C.
|
|
957
991
|
*
|
|
958
|
-
* `mrb_kwargs::
|
|
992
|
+
* `mrb_kwargs::values` is an object array of C, and the keyword argument corresponding to the `mrb_sym` array is assigned.
|
|
993
|
+
* Note that `undef` is assigned if there is no keyword argument corresponding over `mrb_kwargs::required` to `mrb_kwargs::num`.
|
|
959
994
|
*
|
|
960
995
|
* `mrb_kwargs::rest` is the remaining keyword argument that can be accepted as `**rest` in Ruby.
|
|
961
996
|
* If `NULL` is specified, `ArgumentError` is raised when there is an undefined keyword.
|
|
@@ -964,11 +999,11 @@ typedef const char *mrb_args_format;
|
|
|
964
999
|
*
|
|
965
1000
|
* // def method(a: 1, b: 2)
|
|
966
1001
|
*
|
|
967
|
-
*
|
|
968
|
-
*
|
|
969
|
-
*
|
|
1002
|
+
* mrb_int kw_num = 2;
|
|
1003
|
+
* mrb_int kw_required = 0;
|
|
1004
|
+
* mrb_sym kw_names[] = { mrb_intern_lit(mrb, "a"), mrb_intern_lit(mrb, "b") };
|
|
970
1005
|
* mrb_value kw_values[kw_num];
|
|
971
|
-
*
|
|
1006
|
+
* mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, NULL };
|
|
972
1007
|
*
|
|
973
1008
|
* mrb_get_args(mrb, ":", &kwargs);
|
|
974
1009
|
* if (mrb_undef_p(kw_values[0])) { kw_values[0] = mrb_fixnum_value(1); }
|
|
@@ -979,10 +1014,12 @@ typedef const char *mrb_args_format;
|
|
|
979
1014
|
*
|
|
980
1015
|
* mrb_value str, kw_rest;
|
|
981
1016
|
* uint32_t kw_num = 3;
|
|
982
|
-
* const mrb_sym kw_names[kw_num] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
|
|
983
1017
|
* uint32_t kw_required = 1;
|
|
1018
|
+
* // `MRB_SYM()` is available via `mruby.h` (which includes `mruby/presym.h`).
|
|
1019
|
+
* // If the usage of `MRB_SYM()` is not desired, replace it with `mrb_intern_lit()`.
|
|
1020
|
+
* mrb_sym kw_names[] = { MRB_SYM(x), MRB_SYM(y), MRB_SYM(z) };
|
|
984
1021
|
* mrb_value kw_values[kw_num];
|
|
985
|
-
*
|
|
1022
|
+
* mrb_kwargs kwargs = { kw_num, kw_required, kw_names, kw_values, &kw_rest };
|
|
986
1023
|
*
|
|
987
1024
|
* mrb_get_args(mrb, "S:", &str, &kwargs);
|
|
988
1025
|
* // or: mrb_get_args(mrb, ":S", &kwargs, &str);
|
|
@@ -993,8 +1030,8 @@ typedef struct mrb_kwargs mrb_kwargs;
|
|
|
993
1030
|
|
|
994
1031
|
struct mrb_kwargs
|
|
995
1032
|
{
|
|
996
|
-
|
|
997
|
-
|
|
1033
|
+
mrb_int num; /* number of keyword arguments */
|
|
1034
|
+
mrb_int required; /* number of required keyword arguments */
|
|
998
1035
|
const mrb_sym *table; /* C array of symbols for keyword names */
|
|
999
1036
|
mrb_value *values; /* keyword argument values */
|
|
1000
1037
|
mrb_value *rest; /* keyword rest (dict) */
|
|
@@ -1003,7 +1040,7 @@ struct mrb_kwargs
|
|
|
1003
1040
|
/**
|
|
1004
1041
|
* Retrieve arguments from mrb_state.
|
|
1005
1042
|
*
|
|
1006
|
-
* @param mrb The current
|
|
1043
|
+
* @param mrb The current mruby state.
|
|
1007
1044
|
* @param format is a list of format specifiers
|
|
1008
1045
|
* @param ... The passing variadic arguments must be a pointer of retrieving type.
|
|
1009
1046
|
* @return the number of arguments retrieved.
|
|
@@ -1012,6 +1049,13 @@ struct mrb_kwargs
|
|
|
1012
1049
|
*/
|
|
1013
1050
|
MRB_API mrb_int mrb_get_args(mrb_state *mrb, mrb_args_format format, ...);
|
|
1014
1051
|
|
|
1052
|
+
/**
|
|
1053
|
+
* Array version of mrb_get_args()
|
|
1054
|
+
*
|
|
1055
|
+
* @param ptr Array of void*, in the same order as the varargs version.
|
|
1056
|
+
*/
|
|
1057
|
+
MRB_API mrb_int mrb_get_args_a(mrb_state *mrb, mrb_args_format format, void** ptr);
|
|
1058
|
+
|
|
1015
1059
|
MRB_INLINE mrb_sym
|
|
1016
1060
|
mrb_get_mid(mrb_state *mrb) /* get method symbol */
|
|
1017
1061
|
{
|
|
@@ -1054,13 +1098,13 @@ MRB_API mrb_bool mrb_block_given_p(mrb_state *mrb);
|
|
|
1054
1098
|
#define mrb_strlen_lit(lit) (sizeof(lit "") - 1)
|
|
1055
1099
|
|
|
1056
1100
|
/**
|
|
1057
|
-
* Call existing
|
|
1101
|
+
* Call existing Ruby functions.
|
|
1058
1102
|
*
|
|
1059
1103
|
* Example:
|
|
1060
1104
|
*
|
|
1061
1105
|
* #include <stdio.h>
|
|
1062
1106
|
* #include <mruby.h>
|
|
1063
|
-
* #include
|
|
1107
|
+
* #include <mruby/compile.h>
|
|
1064
1108
|
*
|
|
1065
1109
|
* int
|
|
1066
1110
|
* main()
|
|
@@ -1087,11 +1131,11 @@ MRB_API mrb_bool mrb_block_given_p(mrb_state *mrb);
|
|
|
1087
1131
|
MRB_API mrb_value mrb_funcall(mrb_state *mrb, mrb_value val, const char *name, mrb_int argc, ...);
|
|
1088
1132
|
MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb_int argc, ...);
|
|
1089
1133
|
/**
|
|
1090
|
-
* Call existing
|
|
1134
|
+
* Call existing Ruby functions. This is basically the type safe version of mrb_funcall.
|
|
1091
1135
|
*
|
|
1092
1136
|
* #include <stdio.h>
|
|
1093
1137
|
* #include <mruby.h>
|
|
1094
|
-
* #include
|
|
1138
|
+
* #include <mruby/compile.h>
|
|
1095
1139
|
* int
|
|
1096
1140
|
* main()
|
|
1097
1141
|
* {
|
|
@@ -1102,7 +1146,7 @@ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb
|
|
|
1102
1146
|
*
|
|
1103
1147
|
* FILE *fp = fopen("test.rb","r");
|
|
1104
1148
|
* mrb_value obj = mrb_load_file(mrb,fp);
|
|
1105
|
-
* mrb_funcall_argv(mrb, obj, MRB_SYM(method_name), 1, &obj); // Calling
|
|
1149
|
+
* mrb_funcall_argv(mrb, obj, MRB_SYM(method_name), 1, &obj); // Calling Ruby function from test.rb.
|
|
1106
1150
|
* fclose(fp);
|
|
1107
1151
|
* mrb_close(mrb);
|
|
1108
1152
|
* }
|
|
@@ -1116,12 +1160,13 @@ MRB_API mrb_value mrb_funcall_id(mrb_state *mrb, mrb_value val, mrb_sym mid, mrb
|
|
|
1116
1160
|
*/
|
|
1117
1161
|
MRB_API mrb_value mrb_funcall_argv(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv);
|
|
1118
1162
|
/**
|
|
1119
|
-
* Call existing
|
|
1163
|
+
* Call existing Ruby functions with a block.
|
|
1120
1164
|
*/
|
|
1121
1165
|
MRB_API mrb_value mrb_funcall_with_block(mrb_state *mrb, mrb_value val, mrb_sym name, mrb_int argc, const mrb_value *argv, mrb_value block);
|
|
1122
1166
|
/**
|
|
1123
|
-
* Create a symbol from C string. But usually it's better to
|
|
1124
|
-
* MRB_OPSYM, MRB_CVSYM, MRB_IVSYM,
|
|
1167
|
+
* Create a symbol from C string. But usually it's better to
|
|
1168
|
+
* use MRB_SYM, MRB_OPSYM, MRB_CVSYM, MRB_IVSYM, MRB_GVSYM,
|
|
1169
|
+
* MRB_SYM_B, MRB_SYM_Q, MRB_SYM_E macros.
|
|
1125
1170
|
*
|
|
1126
1171
|
* Example:
|
|
1127
1172
|
*
|
|
@@ -1178,13 +1223,13 @@ MRB_API void mrb_free(mrb_state*, void*);
|
|
|
1178
1223
|
*/
|
|
1179
1224
|
#define MRB_OBJ_ALLOC(mrb, tt, klass) ((MRB_VTYPE_TYPEOF(tt)*)mrb_obj_alloc(mrb, tt, klass))
|
|
1180
1225
|
|
|
1181
|
-
MRB_API mrb_value mrb_str_new(mrb_state *mrb, const char *p,
|
|
1226
|
+
MRB_API mrb_value mrb_str_new(mrb_state *mrb, const char *p, mrb_int len);
|
|
1182
1227
|
|
|
1183
1228
|
/**
|
|
1184
1229
|
* Turns a C string into a Ruby string value.
|
|
1185
1230
|
*/
|
|
1186
1231
|
MRB_API mrb_value mrb_str_new_cstr(mrb_state*, const char*);
|
|
1187
|
-
MRB_API mrb_value mrb_str_new_static(mrb_state *mrb, const char *p,
|
|
1232
|
+
MRB_API mrb_value mrb_str_new_static(mrb_state *mrb, const char *p, mrb_int len);
|
|
1188
1233
|
#define mrb_str_new_lit(mrb, lit) mrb_str_new_static(mrb, (lit), mrb_strlen_lit(lit))
|
|
1189
1234
|
|
|
1190
1235
|
MRB_API mrb_value mrb_obj_freeze(mrb_state*, mrb_value);
|
|
@@ -1214,49 +1259,95 @@ MRB_API char* mrb_locale_from_utf8(const char *p, int len);
|
|
|
1214
1259
|
MRB_API mrb_state* mrb_open(void);
|
|
1215
1260
|
|
|
1216
1261
|
/**
|
|
1217
|
-
* Create new mrb_state with
|
|
1262
|
+
* Create new mrb_state with just the mruby core
|
|
1218
1263
|
*
|
|
1219
1264
|
* @param f
|
|
1220
1265
|
* Reference to the allocation function.
|
|
1266
|
+
* Use mrb_basic_alloc_func for the default
|
|
1221
1267
|
* @param ud
|
|
1222
1268
|
* User data will be passed to custom allocator f.
|
|
1223
1269
|
* If user data isn't required just pass NULL.
|
|
1224
1270
|
* @return
|
|
1225
1271
|
* Pointer to the newly created mrb_state.
|
|
1226
1272
|
*/
|
|
1227
|
-
MRB_API mrb_state*
|
|
1273
|
+
MRB_API mrb_state* mrb_open_core(void);
|
|
1228
1274
|
|
|
1229
1275
|
/**
|
|
1230
|
-
*
|
|
1276
|
+
* Closes and frees a mrb_state.
|
|
1231
1277
|
*
|
|
1232
|
-
* @param
|
|
1233
|
-
*
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1278
|
+
* @param mrb
|
|
1279
|
+
* Pointer to the mrb_state to be closed.
|
|
1280
|
+
*/
|
|
1281
|
+
MRB_API void mrb_close(mrb_state *mrb);
|
|
1282
|
+
#ifndef MRB_NO_METHOD_CACHE
|
|
1283
|
+
MRB_API void mrb_method_cache_clear(mrb_state *mrb);
|
|
1284
|
+
#else
|
|
1285
|
+
#define mrb_method_cache_clear(mrb) ((void)0)
|
|
1286
|
+
#endif
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Check if mrb_open() failed
|
|
1290
|
+
*
|
|
1291
|
+
* @param mrb
|
|
1292
|
+
* Pointer returned from mrb_open() or mrb_open_core().
|
|
1238
1293
|
* @return
|
|
1239
|
-
*
|
|
1294
|
+
* Non-zero if initialization failed, 0 if succeeded.
|
|
1295
|
+
* @note
|
|
1296
|
+
* mrb_open() may return non-NULL even on failure (with mrb->exc set).
|
|
1297
|
+
* Use this macro to check for failure:
|
|
1298
|
+
* @code
|
|
1299
|
+
* mrb_state *mrb = mrb_open();
|
|
1300
|
+
* if (MRB_OPEN_FAILURE(mrb)) {
|
|
1301
|
+
* if (mrb) {
|
|
1302
|
+
* // Inspect mrb->exc for error details
|
|
1303
|
+
* mrb_close(mrb);
|
|
1304
|
+
* }
|
|
1305
|
+
* return EXIT_FAILURE;
|
|
1306
|
+
* }
|
|
1307
|
+
* @endcode
|
|
1240
1308
|
*/
|
|
1241
|
-
|
|
1309
|
+
#define MRB_OPEN_FAILURE(mrb) (!(mrb) || (mrb)->exc)
|
|
1242
1310
|
|
|
1243
1311
|
/**
|
|
1244
|
-
*
|
|
1312
|
+
* Check if mrb_open() succeeded
|
|
1245
1313
|
*
|
|
1246
1314
|
* @param mrb
|
|
1247
|
-
* Pointer
|
|
1315
|
+
* Pointer returned from mrb_open() or mrb_open_core().
|
|
1316
|
+
* @return
|
|
1317
|
+
* Non-zero if initialization succeeded, 0 if failed.
|
|
1248
1318
|
*/
|
|
1249
|
-
|
|
1319
|
+
#define MRB_OPEN_SUCCESS(mrb) (!MRB_OPEN_FAILURE(mrb))
|
|
1250
1320
|
|
|
1251
1321
|
/**
|
|
1252
|
-
* The
|
|
1322
|
+
* The memory allocation function. You can redefine this function for your own allocator.
|
|
1253
1323
|
*
|
|
1254
|
-
* @see mrb_allocf
|
|
1255
1324
|
*/
|
|
1256
|
-
MRB_API void*
|
|
1325
|
+
MRB_API void* mrb_basic_alloc_func(void*, size_t);
|
|
1257
1326
|
|
|
1258
1327
|
MRB_API mrb_value mrb_top_self(mrb_state *mrb);
|
|
1328
|
+
|
|
1329
|
+
/**
|
|
1330
|
+
* Enter the mruby VM and execute the proc.
|
|
1331
|
+
*
|
|
1332
|
+
* @param mrb
|
|
1333
|
+
* The current mruby state.
|
|
1334
|
+
* @param proc
|
|
1335
|
+
* An object containing `irep`.
|
|
1336
|
+
* If supplied an object containing anything other than `irep`, it will probably crash.
|
|
1337
|
+
* @param self
|
|
1338
|
+
* `self` on the execution context of `proc`.
|
|
1339
|
+
* @param stack_keep
|
|
1340
|
+
* Specifies the number of values to hold from the stack top.
|
|
1341
|
+
* Values on the stack outside this range will be initialized to `nil`.
|
|
1342
|
+
*
|
|
1343
|
+
* @note
|
|
1344
|
+
* When called from a C function defined as a method, the current stack is destroyed.
|
|
1345
|
+
* If you want to use arguments obtained by `mrb_get_args()` or other methods after `mrb_top_run()`,
|
|
1346
|
+
* you must protect them by `mrb_gc_protect()` or other ways before this function.
|
|
1347
|
+
* Or consider using `mrb_yield()` family functions.
|
|
1348
|
+
*/
|
|
1259
1349
|
MRB_API mrb_value mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
|
|
1350
|
+
|
|
1260
1351
|
MRB_API mrb_value mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, mrb_int stack_keep);
|
|
1261
1352
|
MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *iseq);
|
|
1262
1353
|
/* compatibility macros */
|
|
@@ -1282,26 +1373,36 @@ MRB_API mrb_bool mrb_eql(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
|
|
|
1282
1373
|
/* mrb_cmp(mrb, obj1, obj2): 1:0:-1; -2 for error */
|
|
1283
1374
|
MRB_API mrb_int mrb_cmp(mrb_state *mrb, mrb_value obj1, mrb_value obj2);
|
|
1284
1375
|
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
return mrb->gc.arena_idx;
|
|
1289
|
-
}
|
|
1376
|
+
/* recursion detection */
|
|
1377
|
+
MRB_API mrb_bool mrb_recursive_method_p(mrb_state *mrb, mrb_sym mid, mrb_value obj1, mrb_value obj2);
|
|
1378
|
+
MRB_API mrb_bool mrb_recursive_func_p(mrb_state *mrb, mrb_sym mid, mrb_value obj1, mrb_value obj2);
|
|
1290
1379
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1380
|
+
#define MRB_RECURSIVE_P(mrb, mid, obj1, obj2) \
|
|
1381
|
+
mrb_recursive_method_p(mrb, mid, obj1, obj2)
|
|
1382
|
+
|
|
1383
|
+
#define MRB_RECURSIVE_UNARY_P(mrb, mid, obj) \
|
|
1384
|
+
mrb_recursive_method_p(mrb, mid, obj, mrb_nil_value())
|
|
1385
|
+
|
|
1386
|
+
#define MRB_RECURSIVE_BINARY_P(mrb, mid, obj1, obj2) \
|
|
1387
|
+
mrb_recursive_method_p(mrb, mid, obj1, obj2)
|
|
1388
|
+
|
|
1389
|
+
#define MRB_RECURSIVE_FUNC_P(mrb, mid, obj) \
|
|
1390
|
+
mrb_recursive_func_p(mrb, mid, obj, mrb_nil_value())
|
|
1391
|
+
|
|
1392
|
+
#define MRB_RECURSIVE_BINARY_FUNC_P(mrb, mid, obj1, obj2) \
|
|
1393
|
+
mrb_recursive_func_p(mrb, mid, obj1, obj2)
|
|
1394
|
+
|
|
1395
|
+
#define mrb_gc_arena_save(mrb) ((mrb)->gc.arena_idx)
|
|
1396
|
+
#define mrb_gc_arena_restore(mrb, idx) ((mrb)->gc.arena_idx = (idx))
|
|
1296
1397
|
|
|
1297
1398
|
MRB_API void mrb_garbage_collect(mrb_state*);
|
|
1298
1399
|
MRB_API void mrb_full_gc(mrb_state*);
|
|
1299
|
-
MRB_API void mrb_incremental_gc(mrb_state
|
|
1400
|
+
MRB_API void mrb_incremental_gc(mrb_state*);
|
|
1300
1401
|
MRB_API void mrb_gc_mark(mrb_state*,struct RBasic*);
|
|
1301
1402
|
#define mrb_gc_mark_value(mrb,val) do {\
|
|
1302
1403
|
if (!mrb_immediate_p(val)) mrb_gc_mark((mrb), mrb_basic_ptr(val)); \
|
|
1303
1404
|
} while (0)
|
|
1304
|
-
MRB_API void mrb_field_write_barrier(mrb_state
|
|
1405
|
+
MRB_API void mrb_field_write_barrier(mrb_state*, struct RBasic*, struct RBasic*);
|
|
1305
1406
|
#define mrb_field_write_barrier_value(mrb, obj, val) do{\
|
|
1306
1407
|
if (!mrb_immediate_p(val)) mrb_field_write_barrier((mrb), (obj), mrb_basic_ptr(val)); \
|
|
1307
1408
|
} while (0)
|
|
@@ -1336,7 +1437,7 @@ MRB_API mrb_value mrb_obj_clone(mrb_state *mrb, mrb_value self);
|
|
|
1336
1437
|
#define TOLOWER(c) (ISUPPER(c) ? ((c) | 0x20) : (c))
|
|
1337
1438
|
#endif
|
|
1338
1439
|
|
|
1339
|
-
MRB_API mrb_value mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr,
|
|
1440
|
+
MRB_API mrb_value mrb_exc_new(mrb_state *mrb, struct RClass *c, const char *ptr, mrb_int len);
|
|
1340
1441
|
MRB_API mrb_noreturn void mrb_exc_raise(mrb_state *mrb, mrb_value exc);
|
|
1341
1442
|
|
|
1342
1443
|
MRB_API mrb_noreturn void mrb_raise(mrb_state *mrb, struct RClass *c, const char *msg);
|
|
@@ -1345,7 +1446,7 @@ MRB_API mrb_noreturn void mrb_name_error(mrb_state *mrb, mrb_sym id, const char
|
|
|
1345
1446
|
MRB_API mrb_noreturn void mrb_frozen_error(mrb_state *mrb, void *frozen_obj);
|
|
1346
1447
|
MRB_API mrb_noreturn void mrb_argnum_error(mrb_state *mrb, mrb_int argc, int min, int max);
|
|
1347
1448
|
MRB_API void mrb_warn(mrb_state *mrb, const char *fmt, ...);
|
|
1348
|
-
MRB_API mrb_noreturn void mrb_bug(mrb_state *mrb, const char *
|
|
1449
|
+
MRB_API mrb_noreturn void mrb_bug(mrb_state *mrb, const char *mesg);
|
|
1349
1450
|
MRB_API void mrb_print_backtrace(mrb_state *mrb);
|
|
1350
1451
|
MRB_API void mrb_print_error(mrb_state *mrb);
|
|
1351
1452
|
/* function for `raisef` formatting */
|
|
@@ -1357,6 +1458,8 @@ MRB_API mrb_value mrb_vformat(mrb_state *mrb, const char *format, va_list ap);
|
|
|
1357
1458
|
+ exception objects obtained from those macros are local to mrb
|
|
1358
1459
|
*/
|
|
1359
1460
|
#define MRB_ERROR_SYM(sym) mrb_intern_lit(mrb, #sym)
|
|
1461
|
+
#define E_EXCEPTION mrb->eException_class
|
|
1462
|
+
#define E_STANDARD_ERROR mrb->eStandardError_class
|
|
1360
1463
|
#define E_RUNTIME_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RuntimeError))
|
|
1361
1464
|
#define E_TYPE_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(TypeError))
|
|
1362
1465
|
#define E_ZERODIV_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(ZeroDivisionError))
|
|
@@ -1404,6 +1507,9 @@ MRB_API mrb_value mrb_check_string_type(mrb_state *mrb, mrb_value str);
|
|
|
1404
1507
|
#define mrb_to_str(mrb, str) mrb_ensure_string_type(mrb,str)
|
|
1405
1508
|
/* obsolete: use mrb_obj_as_string() instead */
|
|
1406
1509
|
#define mrb_str_to_str(mrb, str) mrb_obj_as_string(mrb, str)
|
|
1510
|
+
/* check if val is an integer (including Bigint) */
|
|
1511
|
+
MRB_API mrb_value mrb_ensure_integer_type(mrb_state *mrb, mrb_value val);
|
|
1512
|
+
/* check if val fit in mrb_int */
|
|
1407
1513
|
MRB_API mrb_value mrb_ensure_int_type(mrb_state *mrb, mrb_value val);
|
|
1408
1514
|
#define mrb_as_int(mrb, val) mrb_integer(mrb_ensure_int_type(mrb, val))
|
|
1409
1515
|
/* obsolete: use mrb_ensure_int_type() instead */
|
|
@@ -1412,12 +1518,8 @@ MRB_API mrb_value mrb_ensure_int_type(mrb_state *mrb, mrb_value val);
|
|
|
1412
1518
|
|
|
1413
1519
|
/* string type checking (contrary to the name, it doesn't convert) */
|
|
1414
1520
|
MRB_API void mrb_check_type(mrb_state *mrb, mrb_value x, enum mrb_vtype t);
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
{
|
|
1418
|
-
if (mrb_frozen_p((struct RBasic*)o)) mrb_frozen_error(mrb, o);
|
|
1419
|
-
}
|
|
1420
|
-
|
|
1521
|
+
MRB_API void mrb_check_frozen(mrb_state *mrb, void *);
|
|
1522
|
+
MRB_API void mrb_check_frozen_value(mrb_state *mrb, mrb_value v);
|
|
1421
1523
|
MRB_API void mrb_define_alias(mrb_state *mrb, struct RClass *c, const char *a, const char *b);
|
|
1422
1524
|
MRB_API void mrb_define_alias_id(mrb_state *mrb, struct RClass *c, mrb_sym a, mrb_sym b);
|
|
1423
1525
|
MRB_API const char *mrb_class_name(mrb_state *mrb, struct RClass* klass);
|
|
@@ -1426,16 +1528,25 @@ MRB_API void mrb_define_global_const(mrb_state *mrb, const char *name, mrb_value
|
|
|
1426
1528
|
MRB_API mrb_value mrb_attr_get(mrb_state *mrb, mrb_value obj, mrb_sym id);
|
|
1427
1529
|
|
|
1428
1530
|
MRB_API mrb_bool mrb_respond_to(mrb_state *mrb, mrb_value obj, mrb_sym mid);
|
|
1429
|
-
MRB_API mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, struct RClass* c);
|
|
1531
|
+
MRB_API mrb_bool mrb_obj_is_instance_of(mrb_state *mrb, mrb_value obj, const struct RClass* c);
|
|
1430
1532
|
MRB_API mrb_bool mrb_func_basic_p(mrb_state *mrb, mrb_value obj, mrb_sym mid, mrb_func_t func);
|
|
1431
1533
|
|
|
1432
1534
|
/* obsolete function(s); will be removed */
|
|
1433
1535
|
#define mrb_int(mrb, val) mrb_as_int(mrb, val)
|
|
1434
1536
|
|
|
1537
|
+
/**
|
|
1538
|
+
* Create a new Fiber from proc object
|
|
1539
|
+
*
|
|
1540
|
+
* Implemented in mruby-fiber
|
|
1541
|
+
*/
|
|
1542
|
+
MRB_API mrb_value mrb_fiber_new(mrb_state *mrb, const struct RProc *proc);
|
|
1543
|
+
|
|
1435
1544
|
/**
|
|
1436
1545
|
* Resume a Fiber
|
|
1437
1546
|
*
|
|
1438
1547
|
* Implemented in mruby-fiber
|
|
1548
|
+
*
|
|
1549
|
+
* Switches to the specified fiber and executes. Like the `Fiber#resume` method.
|
|
1439
1550
|
*/
|
|
1440
1551
|
MRB_API mrb_value mrb_fiber_resume(mrb_state *mrb, mrb_value fib, mrb_int argc, const mrb_value *argv);
|
|
1441
1552
|
|
|
@@ -1443,6 +1554,15 @@ MRB_API mrb_value mrb_fiber_resume(mrb_state *mrb, mrb_value fib, mrb_int argc,
|
|
|
1443
1554
|
* Yield a Fiber
|
|
1444
1555
|
*
|
|
1445
1556
|
* Implemented in mruby-fiber
|
|
1557
|
+
*
|
|
1558
|
+
* Passes control to the caller fiber of the running fiber. Like the `Fiber.yield` method.
|
|
1559
|
+
*
|
|
1560
|
+
* @note This function is only available from inside a function defined as a method by,
|
|
1561
|
+
* for example, `mrb_define_method()`.
|
|
1562
|
+
* Also, the work following `mrb_fiber_yield()` cannot be performed,
|
|
1563
|
+
* and the return value of `mrb_fiber_yield()` must be returned as is.
|
|
1564
|
+
*
|
|
1565
|
+
* return mrb_fiber_yield(mrb, argc, argv);
|
|
1446
1566
|
*/
|
|
1447
1567
|
MRB_API mrb_value mrb_fiber_yield(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
|
|
1448
1568
|
|
|
@@ -1461,15 +1581,9 @@ MRB_API mrb_value mrb_fiber_alive_p(mrb_state *mrb, mrb_value fib);
|
|
|
1461
1581
|
#define E_FIBER_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(FiberError))
|
|
1462
1582
|
MRB_API void mrb_stack_extend(mrb_state*, mrb_int);
|
|
1463
1583
|
|
|
1464
|
-
/* memory pool implementation */
|
|
1465
|
-
typedef struct mrb_pool mrb_pool;
|
|
1466
|
-
MRB_API struct mrb_pool* mrb_pool_open(mrb_state*);
|
|
1467
|
-
MRB_API void mrb_pool_close(struct mrb_pool*);
|
|
1468
|
-
MRB_API void* mrb_pool_alloc(struct mrb_pool*, size_t);
|
|
1469
|
-
MRB_API void* mrb_pool_realloc(struct mrb_pool*, void*, size_t oldlen, size_t newlen);
|
|
1470
|
-
MRB_API mrb_bool mrb_pool_can_realloc(struct mrb_pool*, void*, size_t);
|
|
1471
1584
|
/* temporary memory allocation, only effective while GC arena is kept */
|
|
1472
|
-
MRB_API void*
|
|
1585
|
+
MRB_API void* mrb_temp_alloc(mrb_state *mrb, size_t);
|
|
1586
|
+
#define mrb_alloca(mrb, size) mrb_temp_alloc(mrb, size) /* for compatibility */
|
|
1473
1587
|
|
|
1474
1588
|
MRB_API void mrb_state_atexit(mrb_state *mrb, mrb_atexit_func func);
|
|
1475
1589
|
|
|
@@ -1480,6 +1594,8 @@ MRB_API mrb_value mrb_format(mrb_state *mrb, const char *format, ...);
|
|
|
1480
1594
|
|
|
1481
1595
|
#ifdef MRB_PRESYM_SCANNING
|
|
1482
1596
|
# include <mruby/presym/scanning.h>
|
|
1597
|
+
#else
|
|
1598
|
+
# include <mruby/presym.h>
|
|
1483
1599
|
#endif
|
|
1484
1600
|
|
|
1485
1601
|
#if 0
|
|
@@ -1509,6 +1625,12 @@ mrbmemset(void *s, int c, size_t n)
|
|
|
1509
1625
|
#define memset(a,b,c) mrbmemset(a,b,c)
|
|
1510
1626
|
#endif
|
|
1511
1627
|
|
|
1628
|
+
#define mrb_int_hash_func(mrb,key) (uint32_t)((key)^((key)<<2)^((key)>>2))
|
|
1629
|
+
|
|
1630
|
+
#define MRB_UNIQNAME(name) MRB_UNIQNAME_1(name, __LINE__)
|
|
1631
|
+
#define MRB_UNIQNAME_1(name, line) MRB_UNIQNAME_2(name, line)
|
|
1632
|
+
#define MRB_UNIQNAME_2(name, line) name##line
|
|
1633
|
+
|
|
1512
1634
|
MRB_END_DECL
|
|
1513
1635
|
|
|
1514
1636
|
#endif /* MRUBY_H */
|