ruby2d 0.12.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -428
- data/assets/app.icns +0 -0
- 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
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#endif
|
|
19
19
|
|
|
20
20
|
#if defined(MRB_32BIT) && defined(MRB_64BIT)
|
|
21
|
-
#error Cannot build for 32 and 64
|
|
21
|
+
#error Cannot build for 32 and 64-bit architecture at the same time
|
|
22
22
|
#endif
|
|
23
23
|
|
|
24
24
|
/* configuration options: */
|
|
@@ -42,21 +42,6 @@
|
|
|
42
42
|
#error Cannot define MRB_USE_FLOAT32 and MRB_NO_FLOAT at the same time
|
|
43
43
|
#endif
|
|
44
44
|
|
|
45
|
-
/* add -DMRB_NO_METHOD_CACHE to disable method cache to save memory */
|
|
46
|
-
//#define MRB_NO_METHOD_CACHE
|
|
47
|
-
/* size of the method cache (need to be the power of 2) */
|
|
48
|
-
//#define MRB_METHOD_CACHE_SIZE (1<<8)
|
|
49
|
-
|
|
50
|
-
/* add -DMRB_USE_METHOD_T_STRUCT on machines that use higher bits of function pointers */
|
|
51
|
-
/* no MRB_USE_METHOD_T_STRUCT requires highest 2 bits of function pointers to be zero */
|
|
52
|
-
#ifndef MRB_USE_METHOD_T_STRUCT
|
|
53
|
-
// can't use highest 2 bits of function pointers at least on 32bit
|
|
54
|
-
// Windows and 32bit Linux.
|
|
55
|
-
# ifdef MRB_32BIT
|
|
56
|
-
# define MRB_USE_METHOD_T_STRUCT
|
|
57
|
-
# endif
|
|
58
|
-
#endif
|
|
59
|
-
|
|
60
45
|
/* define on big endian machines; used by MRB_NAN_BOXING, etc. */
|
|
61
46
|
#ifndef MRB_ENDIAN_BIG
|
|
62
47
|
# if (defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN) || \
|
|
@@ -79,34 +64,57 @@
|
|
|
79
64
|
# define MRB_WORD_BOXING
|
|
80
65
|
#endif
|
|
81
66
|
|
|
82
|
-
/* if defined mruby
|
|
83
|
-
|
|
67
|
+
/* if defined mruby does not inline float values in word boxing;
|
|
68
|
+
all floats are heap-allocated as RFloat objects */
|
|
69
|
+
//#define MRB_WORDBOX_NO_INLINE_FLOAT
|
|
70
|
+
|
|
71
|
+
/* obsolete configuration */
|
|
72
|
+
#if defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
|
|
73
|
+
# define MRB_WORDBOX_NO_INLINE_FLOAT
|
|
74
|
+
#endif
|
|
84
75
|
|
|
85
|
-
/* add -DMRB_INT32 to use
|
|
76
|
+
/* add -DMRB_INT32 to use 32-bit integer for mrb_int; conflict with MRB_INT64;
|
|
86
77
|
Default for 32-bit CPU mode. */
|
|
87
78
|
//#define MRB_INT32
|
|
88
79
|
|
|
89
|
-
/* add -DMRB_INT64 to use
|
|
80
|
+
/* add -DMRB_INT64 to use 64-bit integer for mrb_int; conflict with MRB_INT32;
|
|
90
81
|
Default for 64-bit CPU mode (unless using MRB_NAN_BOXING). */
|
|
91
82
|
//#define MRB_INT64
|
|
92
83
|
|
|
93
84
|
/* if no specific integer type is chosen */
|
|
94
85
|
#if !defined(MRB_INT32) && !defined(MRB_INT64)
|
|
95
86
|
# if defined(MRB_64BIT) && !defined(MRB_NAN_BOXING)
|
|
96
|
-
/* Use
|
|
87
|
+
/* Use 64-bit integers on 64-bit architecture (without MRB_NAN_BOXING) */
|
|
97
88
|
# define MRB_INT64
|
|
98
89
|
# else
|
|
99
|
-
/* Otherwise use
|
|
90
|
+
/* Otherwise use 32-bit integers */
|
|
100
91
|
# define MRB_INT32
|
|
101
92
|
# endif
|
|
102
93
|
#endif
|
|
103
94
|
|
|
95
|
+
/* MRB_INT64 on 32-bit with word/NaN boxing causes alignment issues
|
|
96
|
+
for heap-allocated RInteger (int64_t needs 8-byte alignment but
|
|
97
|
+
GC heap slots may not guarantee it); use MRB_NO_BOXING instead */
|
|
98
|
+
#if defined(MRB_INT64) && defined(MRB_32BIT) && !defined(MRB_NO_BOXING)
|
|
99
|
+
#error "MRB_INT64 on 32-bit requires MRB_NO_BOXING"
|
|
100
|
+
#endif
|
|
101
|
+
|
|
104
102
|
/* call malloc_trim(0) from mrb_full_gc() */
|
|
105
103
|
//#define MRB_USE_MALLOC_TRIM
|
|
106
104
|
|
|
107
105
|
/* string class to handle UTF-8 encoding */
|
|
108
106
|
//#define MRB_UTF8_STRING
|
|
109
107
|
|
|
108
|
+
/* maximum length of strings */
|
|
109
|
+
/* the default value is 1MB */
|
|
110
|
+
/* set this value to zero to skip the check */
|
|
111
|
+
//#define MRB_STR_LENGTH_MAX 1048576
|
|
112
|
+
|
|
113
|
+
/* maximum length of arrays */
|
|
114
|
+
/* the default value is 2**17 entries */
|
|
115
|
+
/* set this value to zero to skip the check */
|
|
116
|
+
//#define MRB_ARY_LENGTH_MAX 131072
|
|
117
|
+
|
|
110
118
|
/* argv max size in mrb_funcall */
|
|
111
119
|
//#define MRB_FUNCALL_ARGC_MAX 16
|
|
112
120
|
|
|
@@ -130,8 +138,8 @@
|
|
|
130
138
|
/* turn off generational GC by default */
|
|
131
139
|
//#define MRB_GC_TURN_OFF_GENERATIONAL
|
|
132
140
|
|
|
133
|
-
/*
|
|
134
|
-
//#define
|
|
141
|
+
/* initial size of khash table bucket */
|
|
142
|
+
//#define KHASH_INITIAL_SIZE 32
|
|
135
143
|
|
|
136
144
|
/* allocated memory address alignment */
|
|
137
145
|
//#define POOL_ALIGNMENT 4
|
|
@@ -158,15 +166,18 @@
|
|
|
158
166
|
//#define MRB_USE_DEBUG_HOOK /* hooks for debugger */
|
|
159
167
|
//#define MRB_USE_ALL_SYMBOLS /* Symbol.all_symbols */
|
|
160
168
|
|
|
161
|
-
/*
|
|
162
|
-
|
|
163
|
-
#
|
|
169
|
+
/* Symbol table configuration */
|
|
170
|
+
/* Threshold for switching from linear search to hash table */
|
|
171
|
+
#ifndef MRB_SYMBOL_LINEAR_THRESHOLD
|
|
172
|
+
#define MRB_SYMBOL_LINEAR_THRESHOLD 256
|
|
164
173
|
#endif
|
|
174
|
+
|
|
175
|
+
/* obsolete configurations */
|
|
165
176
|
#if defined(DISABLE_STDIO) || defined(MRB_DISABLE_STDIO)
|
|
166
177
|
# define MRB_NO_STDIO
|
|
167
178
|
#endif
|
|
168
|
-
#
|
|
169
|
-
# define
|
|
179
|
+
#if defined(MRB_DISABLE_DIRECT_THREADING) || defined(MRB_NO_DIRECT_THREADING)
|
|
180
|
+
# define MRB_USE_VM_SWITCH_DISPATCH
|
|
170
181
|
#endif
|
|
171
182
|
#if defined(ENABLE_DEBUG) || defined(MRB_ENABLE_DEBUG_HOOK)
|
|
172
183
|
# define MRB_USE_DEBUG_HOOK
|
|
@@ -197,8 +208,8 @@
|
|
|
197
208
|
# define MRB_NO_METHOD_CACHE
|
|
198
209
|
# endif
|
|
199
210
|
|
|
200
|
-
# ifndef
|
|
201
|
-
# define
|
|
211
|
+
# ifndef KHASH_INITIAL_SIZE
|
|
212
|
+
# define KHASH_INITIAL_SIZE 16
|
|
202
213
|
# endif
|
|
203
214
|
|
|
204
215
|
# ifndef MRB_HEAP_PAGE_SIZE
|
|
@@ -20,7 +20,7 @@ typedef struct mrb_shared_array {
|
|
|
20
20
|
mrb_value *ptr;
|
|
21
21
|
} mrb_shared_array;
|
|
22
22
|
|
|
23
|
-
#if defined(MRB_32BIT) && defined(MRB_NO_BOXING) && !defined(MRB_USE_FLOAT32) && !defined(MRB_ARY_NO_EMBED)
|
|
23
|
+
#if defined(MRB_32BIT) && defined(MRB_NO_BOXING) && (!defined(MRB_USE_FLOAT32) || defined(MRB_INT64)) && !defined(MRB_ARY_NO_EMBED)
|
|
24
24
|
# define MRB_ARY_NO_EMBED
|
|
25
25
|
#endif
|
|
26
26
|
|
|
@@ -85,8 +85,9 @@ struct RArray {
|
|
|
85
85
|
#define ARY_SET_SHARED_FLAG(a) ((a)->flags |= MRB_ARY_SHARED)
|
|
86
86
|
#define ARY_UNSET_SHARED_FLAG(a) ((a)->flags &= ~MRB_ARY_SHARED)
|
|
87
87
|
|
|
88
|
-
void mrb_ary_decref(mrb_state*, mrb_shared_array*);
|
|
89
88
|
MRB_API void mrb_ary_modify(mrb_state*, struct RArray*);
|
|
89
|
+
MRB_API mrb_value mrb_ary_dup(mrb_state*, mrb_value ary);
|
|
90
|
+
MRB_API mrb_value mrb_ary_make_shared_copy(mrb_state*, mrb_value ary);
|
|
90
91
|
MRB_API mrb_value mrb_ary_new_capa(mrb_state*, mrb_int);
|
|
91
92
|
|
|
92
93
|
/*
|
|
@@ -296,8 +297,6 @@ MRB_API mrb_value mrb_ary_join(mrb_state *mrb, mrb_value ary, mrb_value sep);
|
|
|
296
297
|
*/
|
|
297
298
|
MRB_API mrb_value mrb_ary_resize(mrb_state *mrb, mrb_value ary, mrb_int new_len);
|
|
298
299
|
|
|
299
|
-
/* helper functions */
|
|
300
|
-
mrb_value mrb_ary_subseq(mrb_state *mrb, mrb_value ary, mrb_int beg, mrb_int len);
|
|
301
300
|
|
|
302
301
|
MRB_END_DECL
|
|
303
302
|
|
|
@@ -98,6 +98,16 @@ mrb_type(mrb_value o)
|
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
MRB_INLINE enum mrb_vtype
|
|
102
|
+
mrb_unboxed_type(mrb_value o)
|
|
103
|
+
{
|
|
104
|
+
if (!mrb_float_p(o) && mrb_nb_tt(o) == MRB_NANBOX_TT_OBJECT && o.u != 0) {
|
|
105
|
+
return ((struct RBasic*)(uintptr_t)o.u)->tt;
|
|
106
|
+
} else {
|
|
107
|
+
return MRB_TT_FALSE;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
101
111
|
#define NANBOX_SET_MISC_VALUE(r,t,i) NANBOX_SET_VALUE(r, MRB_NANBOX_TT_MISC, ((uint64_t)(t)<<32) | (i))
|
|
102
112
|
|
|
103
113
|
#define mrb_float(o) mrb_nan_boxing_value_float(o)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
** @file mruby/boxing_no.h - unboxed mrb_value definition
|
|
3
|
+
**
|
|
4
|
+
** See Copyright Notice in mruby.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef MRUBY_BOXING_NO_H
|
|
8
|
+
#define MRUBY_BOXING_NO_H
|
|
9
|
+
|
|
10
|
+
#define MRB_FIXNUM_SHIFT 0
|
|
11
|
+
#define MRB_SYMBOL_SHIFT 0
|
|
12
|
+
#define MRB_FIXNUM_MIN MRB_INT_MIN
|
|
13
|
+
#define MRB_FIXNUM_MAX MRB_INT_MAX
|
|
14
|
+
|
|
15
|
+
union mrb_value_union {
|
|
16
|
+
#ifndef MRB_NO_FLOAT
|
|
17
|
+
mrb_float f;
|
|
18
|
+
#endif
|
|
19
|
+
void *p;
|
|
20
|
+
mrb_int i;
|
|
21
|
+
mrb_sym sym;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
typedef struct mrb_value {
|
|
25
|
+
union mrb_value_union value;
|
|
26
|
+
enum mrb_vtype tt;
|
|
27
|
+
} mrb_value;
|
|
28
|
+
|
|
29
|
+
#define mrb_ptr(o) (o).value.p
|
|
30
|
+
#define mrb_cptr(o) mrb_ptr(o)
|
|
31
|
+
#ifndef MRB_NO_FLOAT
|
|
32
|
+
#define mrb_float(o) (o).value.f
|
|
33
|
+
#endif
|
|
34
|
+
#define mrb_fixnum(o) (o).value.i
|
|
35
|
+
#define mrb_integer(o) mrb_fixnum(o)
|
|
36
|
+
#define mrb_symbol(o) (o).value.sym
|
|
37
|
+
#define mrb_type(o) (o).tt
|
|
38
|
+
#define mrb_unboxed_type(o) (o).tt
|
|
39
|
+
|
|
40
|
+
#define BOXNO_SET_VALUE(o, ttt, attr, v) do {\
|
|
41
|
+
(o).tt = ttt;\
|
|
42
|
+
(o).attr = v;\
|
|
43
|
+
} while (0)
|
|
44
|
+
|
|
45
|
+
#define SET_NIL_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
|
|
46
|
+
#define SET_FALSE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_FALSE, value.i, 1)
|
|
47
|
+
#define SET_TRUE_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_TRUE, value.i, 1)
|
|
48
|
+
#define SET_BOOL_VALUE(r,b) BOXNO_SET_VALUE(r, b ? MRB_TT_TRUE : MRB_TT_FALSE, value.i, 1)
|
|
49
|
+
#define SET_INT_VALUE(mrb,r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
|
|
50
|
+
#define SET_FIXNUM_VALUE(r,n) BOXNO_SET_VALUE(r, MRB_TT_INTEGER, value.i, (n))
|
|
51
|
+
#ifndef MRB_NO_FLOAT
|
|
52
|
+
#define SET_FLOAT_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_FLOAT, value.f, (v))
|
|
53
|
+
#endif
|
|
54
|
+
#define SET_SYM_VALUE(r,v) BOXNO_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
|
|
55
|
+
#define SET_OBJ_VALUE(r,v) BOXNO_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
|
|
56
|
+
#define SET_CPTR_VALUE(mrb,r,v) BOXNO_SET_VALUE(r, MRB_TT_CPTR, value.p, v)
|
|
57
|
+
#define SET_UNDEF_VALUE(r) BOXNO_SET_VALUE(r, MRB_TT_UNDEF, value.i, 0)
|
|
58
|
+
|
|
59
|
+
#endif /* MRUBY_BOXING_NO_H */
|
|
@@ -7,15 +7,44 @@
|
|
|
7
7
|
#ifndef MRUBY_BOXING_WORD_H
|
|
8
8
|
#define MRUBY_BOXING_WORD_H
|
|
9
9
|
|
|
10
|
-
#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(
|
|
11
|
-
# define
|
|
10
|
+
#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_INLINE_FLOAT)
|
|
11
|
+
# define MRB_WORDBOX_NO_INLINE_FLOAT
|
|
12
12
|
#endif
|
|
13
13
|
|
|
14
|
-
#
|
|
14
|
+
#ifndef MRB_NO_FLOAT
|
|
15
15
|
struct RFloat {
|
|
16
16
|
MRB_OBJECT_HEADER;
|
|
17
|
+
#ifdef MRB_WORDBOX_NO_INLINE_FLOAT
|
|
18
|
+
/* avoid 8-byte alignment on 32-bit; use memcpy-based accessors */
|
|
19
|
+
char f[sizeof(mrb_float)];
|
|
20
|
+
#else
|
|
17
21
|
mrb_float f;
|
|
22
|
+
#endif
|
|
18
23
|
};
|
|
24
|
+
|
|
25
|
+
#include <string.h>
|
|
26
|
+
|
|
27
|
+
static inline mrb_float
|
|
28
|
+
mrb_rfloat_value(const struct RFloat *p)
|
|
29
|
+
{
|
|
30
|
+
#ifdef MRB_WORDBOX_NO_INLINE_FLOAT
|
|
31
|
+
mrb_float f;
|
|
32
|
+
memcpy(&f, p->f, sizeof(mrb_float));
|
|
33
|
+
return f;
|
|
34
|
+
#else
|
|
35
|
+
return p->f;
|
|
36
|
+
#endif
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static inline void
|
|
40
|
+
mrb_rfloat_set(struct RFloat *p, mrb_float f)
|
|
41
|
+
{
|
|
42
|
+
#ifdef MRB_WORDBOX_NO_INLINE_FLOAT
|
|
43
|
+
memcpy(p->f, &f, sizeof(mrb_float));
|
|
44
|
+
#else
|
|
45
|
+
p->f = f;
|
|
46
|
+
#endif
|
|
47
|
+
}
|
|
19
48
|
#endif
|
|
20
49
|
|
|
21
50
|
struct RInteger {
|
|
@@ -50,8 +79,9 @@ enum mrb_special_consts {
|
|
|
50
79
|
#define WORDBOX_FIXNUM_FLAG (1 << (WORDBOX_FIXNUM_BIT_POS - 1))
|
|
51
80
|
#define WORDBOX_FIXNUM_MASK ((1 << WORDBOX_FIXNUM_BIT_POS) - 1)
|
|
52
81
|
|
|
53
|
-
#if defined(
|
|
82
|
+
#if defined(MRB_WORDBOX_NO_INLINE_FLOAT) || defined(MRB_NO_FLOAT)
|
|
54
83
|
/* floats are allocated in heaps */
|
|
84
|
+
#define WORDBOX_IMMEDIATE_MASK 0x03
|
|
55
85
|
#define WORDBOX_SYMBOL_BIT_POS 2
|
|
56
86
|
#define WORDBOX_SYMBOL_SHIFT WORDBOX_SYMBOL_BIT_POS
|
|
57
87
|
#define WORDBOX_SYMBOL_FLAG (1 << (WORDBOX_SYMBOL_BIT_POS - 1))
|
|
@@ -68,7 +98,9 @@ enum mrb_special_consts {
|
|
|
68
98
|
#define WORDBOX_SYMBOL_MASK 0x1f
|
|
69
99
|
#endif
|
|
70
100
|
|
|
101
|
+
#ifndef WORDBOX_IMMEDIATE_MASK
|
|
71
102
|
#define WORDBOX_IMMEDIATE_MASK 0x07
|
|
103
|
+
#endif
|
|
72
104
|
|
|
73
105
|
#define WORDBOX_SET_SHIFT_VALUE(o,n,v) \
|
|
74
106
|
((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
|
|
@@ -80,34 +112,29 @@ enum mrb_special_consts {
|
|
|
80
112
|
/*
|
|
81
113
|
* mrb_value representation:
|
|
82
114
|
*
|
|
83
|
-
*
|
|
115
|
+
* 64-bit word with inline float (rotation encoding, lossless):
|
|
84
116
|
* nil : ...0000 0000 (all bits are 0)
|
|
85
117
|
* false : ...0000 0100 (mrb_fixnum(v) != 0)
|
|
86
118
|
* true : ...0000 1100
|
|
87
119
|
* undef : ...0001 0100
|
|
88
120
|
* symbol: ...0001 1100 (use only upper 32-bit as symbol value with MRB_64BIT)
|
|
89
121
|
* fixnum: ...IIII III1
|
|
90
|
-
* float : ...FFFF FF10 (
|
|
122
|
+
* float : ...FFFF FF10 (rotl64(float64-ADDEND, 3); exponent [-255,+256])
|
|
91
123
|
* object: ...PPPP P000
|
|
124
|
+
* (floats outside inline range are heap-allocated as RFloat)
|
|
92
125
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* true : ...0000 1100
|
|
97
|
-
* undef : ...0001 0100
|
|
98
|
-
* symbol: ...SSS1 0100 (symbol occupies 20bits)
|
|
99
|
-
* fixnum: ...IIII III1
|
|
100
|
-
* float : ...FFFF FF10 (22 bit significands; require MRB_64BIT)
|
|
101
|
-
* object: ...PPPP P000
|
|
126
|
+
* 64-bit word with inline float32 (MRB_USE_FLOAT32):
|
|
127
|
+
* float : ...FFFF FF10 (float32 shifted left by 2)
|
|
128
|
+
* (other values same as above)
|
|
102
129
|
*
|
|
103
|
-
*
|
|
130
|
+
* word boxing without inline float (MRB_WORDBOX_NO_INLINE_FLOAT):
|
|
104
131
|
* nil : ...0000 0000 (all bits are 0)
|
|
105
132
|
* false : ...0000 0100 (mrb_fixnum(v) != 0)
|
|
106
133
|
* true : ...0000 1100
|
|
107
134
|
* undef : ...0001 0100
|
|
108
135
|
* fixnum: ...IIII III1
|
|
109
136
|
* symbol: ...SSSS SS10
|
|
110
|
-
* object: ...PPPP
|
|
137
|
+
* object: ...PPPP PP00 (any bits are 1)
|
|
111
138
|
*/
|
|
112
139
|
typedef struct mrb_value {
|
|
113
140
|
uintptr_t w;
|
|
@@ -117,10 +144,9 @@ union mrb_value_ {
|
|
|
117
144
|
void *p;
|
|
118
145
|
struct RBasic *bp;
|
|
119
146
|
#ifndef MRB_NO_FLOAT
|
|
120
|
-
#ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
|
|
121
|
-
mrb_float f;
|
|
122
|
-
#else
|
|
123
147
|
struct RFloat *fp;
|
|
148
|
+
#if !defined(MRB_WORDBOX_NO_INLINE_FLOAT) && defined(MRB_USE_FLOAT32)
|
|
149
|
+
mrb_float f;
|
|
124
150
|
#endif
|
|
125
151
|
#endif
|
|
126
152
|
struct RInteger *ip;
|
|
@@ -145,16 +171,20 @@ MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float);
|
|
|
145
171
|
#endif
|
|
146
172
|
MRB_API mrb_value mrb_boxing_int_value(struct mrb_state*, mrb_int);
|
|
147
173
|
|
|
174
|
+
#if WORDBOX_IMMEDIATE_MASK == 0x3
|
|
175
|
+
#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w <= MRB_Qundef)
|
|
176
|
+
#else
|
|
148
177
|
#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
|
|
178
|
+
#endif
|
|
149
179
|
|
|
150
180
|
#define mrb_ptr(o) mrb_val_union(o).p
|
|
151
181
|
#define mrb_cptr(o) mrb_val_union(o).vp->p
|
|
152
182
|
#ifndef MRB_NO_FLOAT
|
|
153
|
-
#ifndef
|
|
183
|
+
#ifndef MRB_WORDBOX_NO_INLINE_FLOAT
|
|
154
184
|
MRB_API mrb_float mrb_word_boxing_value_float(mrb_value v);
|
|
155
185
|
#define mrb_float(o) mrb_word_boxing_value_float(o)
|
|
156
186
|
#else
|
|
157
|
-
#define mrb_float(o) mrb_val_union(o).fp
|
|
187
|
+
#define mrb_float(o) mrb_rfloat_value(mrb_val_union(o).fp)
|
|
158
188
|
#endif
|
|
159
189
|
#endif
|
|
160
190
|
#define mrb_fixnum(o) (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
|
|
@@ -175,11 +205,16 @@ mrb_integer_func(mrb_value o) {
|
|
|
175
205
|
#define mrb_false_p(o) ((o).w == MRB_Qfalse)
|
|
176
206
|
#define mrb_true_p(o) ((o).w == MRB_Qtrue)
|
|
177
207
|
#ifndef MRB_NO_FLOAT
|
|
178
|
-
#
|
|
208
|
+
#ifdef MRB_WORDBOX_NO_INLINE_FLOAT
|
|
209
|
+
#define mrb_float_p(o) WORDBOX_OBJ_TYPE_P(o, FLOAT)
|
|
210
|
+
#elif defined(MRB_USE_FLOAT32) && defined(MRB_64BIT)
|
|
179
211
|
#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
|
|
180
212
|
#else
|
|
181
|
-
|
|
213
|
+
/* rotation encoding: most floats inline, edge cases on heap */
|
|
214
|
+
#define mrb_float_p(o) (WORDBOX_SHIFT_VALUE_P(o, FLOAT) || WORDBOX_OBJ_TYPE_P(o, FLOAT))
|
|
182
215
|
#endif
|
|
216
|
+
#else
|
|
217
|
+
#define mrb_float_p(o) FALSE
|
|
183
218
|
#endif
|
|
184
219
|
#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
|
|
185
220
|
#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
|
|
@@ -222,10 +257,21 @@ mrb_type(mrb_value o)
|
|
|
222
257
|
mrb_fixnum_p(o) ? MRB_TT_INTEGER :
|
|
223
258
|
mrb_symbol_p(o) ? MRB_TT_SYMBOL :
|
|
224
259
|
mrb_undef_p(o) ? MRB_TT_UNDEF :
|
|
225
|
-
#ifndef MRB_NO_FLOAT
|
|
226
260
|
mrb_float_p(o) ? MRB_TT_FLOAT :
|
|
227
|
-
#endif
|
|
228
261
|
mrb_val_union(o).bp->tt;
|
|
229
262
|
}
|
|
230
263
|
|
|
264
|
+
MRB_INLINE enum mrb_vtype
|
|
265
|
+
mrb_unboxed_type(mrb_value o)
|
|
266
|
+
{
|
|
267
|
+
if (mrb_nil_p(o)) {
|
|
268
|
+
return MRB_TT_FALSE;
|
|
269
|
+
} else if ((o.w & WORDBOX_IMMEDIATE_MASK) == 0) {
|
|
270
|
+
return mrb_val_union(o).bp->tt;
|
|
271
|
+
} else {
|
|
272
|
+
return MRB_TT_FALSE;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
231
277
|
#endif /* MRUBY_BOXING_WORD_H */
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
** @file mruby/class.h - Class class
|
|
3
|
+
**
|
|
4
|
+
** See Copyright Notice in mruby.h
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
#ifndef MRUBY_CLASS_H
|
|
8
|
+
#define MRUBY_CLASS_H
|
|
9
|
+
|
|
10
|
+
#include "common.h"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Class class
|
|
14
|
+
*/
|
|
15
|
+
MRB_BEGIN_DECL
|
|
16
|
+
|
|
17
|
+
struct RClass {
|
|
18
|
+
MRB_OBJECT_HEADER;
|
|
19
|
+
struct iv_tbl *iv;
|
|
20
|
+
struct mrb_mt_tbl *mt;
|
|
21
|
+
struct RClass *super;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
#define mrb_class_ptr(v) ((struct RClass*)(mrb_ptr(v)))
|
|
25
|
+
|
|
26
|
+
MRB_INLINE struct RClass*
|
|
27
|
+
mrb_class(mrb_state *mrb, mrb_value v)
|
|
28
|
+
{
|
|
29
|
+
if (!mrb_immediate_p(v)) {
|
|
30
|
+
return mrb_obj_ptr(v)->c;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
switch (mrb_type(v)) {
|
|
34
|
+
case MRB_TT_FALSE:
|
|
35
|
+
if (mrb_fixnum(v))
|
|
36
|
+
return mrb->false_class;
|
|
37
|
+
return mrb->nil_class;
|
|
38
|
+
case MRB_TT_TRUE:
|
|
39
|
+
return mrb->true_class;
|
|
40
|
+
case MRB_TT_SYMBOL:
|
|
41
|
+
return mrb->symbol_class;
|
|
42
|
+
case MRB_TT_INTEGER:
|
|
43
|
+
return mrb->integer_class;
|
|
44
|
+
#ifndef MRB_NO_FLOAT
|
|
45
|
+
case MRB_TT_FLOAT:
|
|
46
|
+
return mrb->float_class;
|
|
47
|
+
#endif
|
|
48
|
+
case MRB_TT_CPTR:
|
|
49
|
+
return mrb->object_class;
|
|
50
|
+
default:
|
|
51
|
+
return NULL;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* flags:
|
|
56
|
+
20: frozen
|
|
57
|
+
19: is_prepended
|
|
58
|
+
18: is_origin
|
|
59
|
+
17: is_inherited (used by method cache)
|
|
60
|
+
7-16: unused
|
|
61
|
+
6: prohibit Class#allocate
|
|
62
|
+
0-5: instance type
|
|
63
|
+
*/
|
|
64
|
+
#define MRB_FL_CLASS_IS_PREPENDED (1 << 19)
|
|
65
|
+
#define MRB_FL_CLASS_IS_ORIGIN (1 << 18)
|
|
66
|
+
#define MRB_CLASS_ORIGIN(c) do {\
|
|
67
|
+
if ((c)->flags & MRB_FL_CLASS_IS_PREPENDED) {\
|
|
68
|
+
(c) = (c)->super;\
|
|
69
|
+
while (!((c)->flags & MRB_FL_CLASS_IS_ORIGIN)) {\
|
|
70
|
+
(c) = (c)->super;\
|
|
71
|
+
}\
|
|
72
|
+
}\
|
|
73
|
+
} while (0)
|
|
74
|
+
#define MRB_FL_CLASS_IS_INHERITED (1 << 17)
|
|
75
|
+
#define MRB_INSTANCE_TT_MASK (0x1F)
|
|
76
|
+
#define MRB_SET_INSTANCE_TT(c, tt) ((c)->flags = (((c)->flags & ~MRB_INSTANCE_TT_MASK) | (char)(tt)))
|
|
77
|
+
#define MRB_INSTANCE_TT(c) (enum mrb_vtype)((c)->flags & MRB_INSTANCE_TT_MASK)
|
|
78
|
+
#define MRB_FL_UNDEF_ALLOCATE (1 << 6)
|
|
79
|
+
#define MRB_UNDEF_ALLOCATOR(c) (mrb_assert((c)->tt == MRB_TT_CLASS), (c)->flags |= MRB_FL_UNDEF_ALLOCATE)
|
|
80
|
+
#define MRB_UNDEF_ALLOCATOR_P(c) ((c)->flags & MRB_FL_UNDEF_ALLOCATE)
|
|
81
|
+
#define MRB_DEFINE_ALLOCATOR(c) ((c)->flags &= ~MRB_FL_UNDEF_ALLOCATE)
|
|
82
|
+
|
|
83
|
+
MRB_API void mrb_define_method_raw(mrb_state*, struct RClass*, mrb_sym, mrb_method_t);
|
|
84
|
+
MRB_API void mrb_alias_method(mrb_state*, struct RClass *c, mrb_sym a, mrb_sym b);
|
|
85
|
+
MRB_API void mrb_remove_method(mrb_state *mrb, struct RClass *c, mrb_sym sym);
|
|
86
|
+
|
|
87
|
+
MRB_API mrb_method_t mrb_method_search_vm(mrb_state*, struct RClass**, mrb_sym);
|
|
88
|
+
MRB_API mrb_method_t mrb_method_search(mrb_state*, struct RClass*, mrb_sym);
|
|
89
|
+
|
|
90
|
+
MRB_API struct RClass* mrb_class_real(struct RClass* cl);
|
|
91
|
+
MRB_API struct RClass* mrb_class_outer(mrb_state *mrb, struct RClass *c);
|
|
92
|
+
|
|
93
|
+
#ifndef MRB_NO_METHOD_CACHE
|
|
94
|
+
void mrb_mc_clear_by_class(mrb_state *mrb, struct RClass* c);
|
|
95
|
+
#else
|
|
96
|
+
#define mrb_mc_clear_by_class(mrb,c)
|
|
97
|
+
#endif
|
|
98
|
+
|
|
99
|
+
/* return non zero to break the loop */
|
|
100
|
+
typedef int (mrb_mt_foreach_func)(mrb_state*,mrb_sym,mrb_method_t,void*);
|
|
101
|
+
MRB_API void mrb_mt_foreach(mrb_state*, struct RClass*, mrb_mt_foreach_func*, void*);
|
|
102
|
+
|
|
103
|
+
/* ROM method table types for static method registration */
|
|
104
|
+
union mrb_mt_ptr {
|
|
105
|
+
const struct RProc *proc;
|
|
106
|
+
mrb_func_t func;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/* entry combining function pointer, symbol key, and flags */
|
|
110
|
+
typedef struct mrb_mt_entry {
|
|
111
|
+
union mrb_mt_ptr val;
|
|
112
|
+
mrb_sym key; /* pure symbol ID (no flags packed) */
|
|
113
|
+
uint32_t flags; /* method flags + aspec */
|
|
114
|
+
} mrb_mt_entry;
|
|
115
|
+
|
|
116
|
+
typedef struct mrb_mt_tbl {
|
|
117
|
+
int size;
|
|
118
|
+
int alloc; /* bit 30: MRB_MT_READONLY_BIT, bit 29: MRB_MT_FROZEN_BIT */
|
|
119
|
+
mrb_mt_entry *ptr;
|
|
120
|
+
struct mrb_mt_tbl *next;
|
|
121
|
+
} mrb_mt_tbl;
|
|
122
|
+
|
|
123
|
+
#define MRB_MT_READONLY_BIT (1 << 30)
|
|
124
|
+
#define MRB_MT_FROZEN_BIT (1 << 29)
|
|
125
|
+
#define MRB_MT_FUNC (1 << 24) /* MRB_METHOD_FUNC_FL */
|
|
126
|
+
#define MRB_MT_PUBLIC 0
|
|
127
|
+
#define MRB_MT_PRIVATE (1 << 25) /* MRB_METHOD_PRIVATE_FL */
|
|
128
|
+
|
|
129
|
+
/* ROM table entry: 3rd param is MRB_ARGS_*() optionally OR'd with MRB_MT_PRIVATE. */
|
|
130
|
+
#define MRB_MT_ENTRY(fn, sym, flags) \
|
|
131
|
+
{ { .func = (fn) }, (sym), (flags) | MRB_MT_FUNC }
|
|
132
|
+
#define MRB_MT_ASPEC(flags) ((mrb_aspec)((flags) & 0xffffff))
|
|
133
|
+
|
|
134
|
+
/* "removed" tombstone: MRB_MT_FUNC flag set with NULL function pointer.
|
|
135
|
+
This combination never occurs naturally (C functions are never NULL).
|
|
136
|
+
Unlike undef (proc=NULL without MRB_MT_FUNC), a removed marker makes
|
|
137
|
+
mt_get() return 0 ("not found"), blocking ROM chain walk while
|
|
138
|
+
allowing superclass lookup. */
|
|
139
|
+
#define MRB_MT_REMOVED_P(e) (((e).flags&MRB_MT_FUNC) && (e).val.func==NULL)
|
|
140
|
+
|
|
141
|
+
/* Singly-linked list node for tracking heap-allocated ROM wrappers. */
|
|
142
|
+
struct mrb_mt_rom_list {
|
|
143
|
+
mrb_mt_tbl *tbl;
|
|
144
|
+
struct mrb_mt_rom_list *next;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/* Allocate a per-state ROM layer wrapping the const entries array,
|
|
148
|
+
and push it onto the class's method table chain. */
|
|
149
|
+
void mrb_mt_init_rom(mrb_state *mrb, struct RClass *c,
|
|
150
|
+
const mrb_mt_entry *entries, int size);
|
|
151
|
+
#define MRB_MT_INIT_ROM(mrb, cls, entries) \
|
|
152
|
+
mrb_mt_init_rom(mrb, cls, entries, \
|
|
153
|
+
(int)(sizeof(entries)/sizeof(entries[0])))
|
|
154
|
+
|
|
155
|
+
MRB_END_DECL
|
|
156
|
+
|
|
157
|
+
#endif /* MRUBY_CLASS_H */
|
|
@@ -59,6 +59,35 @@ MRB_BEGIN_DECL
|
|
|
59
59
|
# define mrb_deprecated
|
|
60
60
|
#endif
|
|
61
61
|
|
|
62
|
+
/** Branch prediction hints for optimization. */
|
|
63
|
+
#if defined(__GNUC__) || defined(__clang__)
|
|
64
|
+
# define mrb_likely(x) __builtin_expect(!!(x), 1)
|
|
65
|
+
# define mrb_unlikely(x) __builtin_expect(!!(x), 0)
|
|
66
|
+
#else
|
|
67
|
+
# define mrb_likely(x) (x)
|
|
68
|
+
# define mrb_unlikely(x) (x)
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
/** Declare a type or object as an alignment requirement. */
|
|
72
|
+
#ifndef mrb_alignas
|
|
73
|
+
# if defined(__cplusplus) && __cplusplus >= 201103L
|
|
74
|
+
# // https://en.cppreference.com/w/cpp/language/alignas
|
|
75
|
+
# define mrb_alignas(n) alignas(n)
|
|
76
|
+
# elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
|
77
|
+
# // https://en.cppreference.com/w/c/language/_Alignas
|
|
78
|
+
# define mrb_alignas(n) _Alignas(n)
|
|
79
|
+
# elif defined(_MSC_VER) || defined(__INTEL_COMPILER)
|
|
80
|
+
# // https://learn.microsoft.com/en-us/cpp/cpp/align-cpp?view=msvc-170
|
|
81
|
+
# define mrb_alignas(n) __declspec(align(n))
|
|
82
|
+
# elif defined(__GNUC__) || defined(__clang__)
|
|
83
|
+
# // https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-aligned-type-attribute
|
|
84
|
+
# define mrb_alignas(n) __attribute__((aligned(n)))
|
|
85
|
+
# else
|
|
86
|
+
# // `mrb_alignas` defined as dummy. If necessary, send issues to https://github.com/mruby/mruby .
|
|
87
|
+
# define mrb_alignas(n)
|
|
88
|
+
# endif
|
|
89
|
+
#endif
|
|
90
|
+
|
|
62
91
|
/** Declare a function as always inlined. */
|
|
63
92
|
#if defined _MSC_VER && _MSC_VER < 1900
|
|
64
93
|
# ifndef __cplusplus
|
|
@@ -67,7 +96,7 @@ MRB_BEGIN_DECL
|
|
|
67
96
|
#endif
|
|
68
97
|
#define MRB_INLINE static inline
|
|
69
98
|
|
|
70
|
-
/** Declare a public
|
|
99
|
+
/** Declare a public mruby API function. */
|
|
71
100
|
#ifndef MRB_API
|
|
72
101
|
#if defined(MRB_BUILD_AS_DLL)
|
|
73
102
|
#if defined(MRB_CORE) || defined(MRB_LIB)
|