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
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
** @file mruby/error.h - Exception class
|
|
3
|
-
**
|
|
4
|
-
** See Copyright Notice in mruby.h
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
#ifndef MRUBY_ERROR_H
|
|
8
|
-
#define MRUBY_ERROR_H
|
|
9
|
-
|
|
10
|
-
#include "common.h"
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* MRuby error handling.
|
|
14
|
-
*/
|
|
15
|
-
MRB_BEGIN_DECL
|
|
16
|
-
|
|
17
|
-
struct RException {
|
|
18
|
-
MRB_OBJECT_HEADER;
|
|
19
|
-
struct iv_tbl *iv;
|
|
20
|
-
struct RString *mesg;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
|
|
24
|
-
#define MRB_EXC_MESG_STRING_FLAG 0x100
|
|
25
|
-
|
|
26
|
-
MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
|
|
27
|
-
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
|
|
28
|
-
#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
|
|
29
|
-
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_lit(mrb, c, lit)
|
|
30
|
-
MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
|
|
31
|
-
mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
|
|
32
|
-
mrb_value mrb_get_backtrace(mrb_state *mrb);
|
|
33
|
-
|
|
34
|
-
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
|
|
35
|
-
|
|
36
|
-
/* declaration for `fail` method */
|
|
37
|
-
MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value);
|
|
38
|
-
|
|
39
|
-
#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT32) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING)
|
|
40
|
-
struct RBreak {
|
|
41
|
-
MRB_OBJECT_HEADER;
|
|
42
|
-
const struct RProc *proc;
|
|
43
|
-
mrb_value val;
|
|
44
|
-
};
|
|
45
|
-
#define mrb_break_value_get(brk) ((brk)->val)
|
|
46
|
-
#define mrb_break_value_set(brk, v) ((brk)->val = v)
|
|
47
|
-
#else
|
|
48
|
-
struct RBreak {
|
|
49
|
-
MRB_OBJECT_HEADER;
|
|
50
|
-
const struct RProc *proc;
|
|
51
|
-
union mrb_value_union value;
|
|
52
|
-
};
|
|
53
|
-
#define RBREAK_VALUE_TT_MASK ((1 << 8) - 1)
|
|
54
|
-
static inline mrb_value
|
|
55
|
-
mrb_break_value_get(struct RBreak *brk)
|
|
56
|
-
{
|
|
57
|
-
mrb_value val;
|
|
58
|
-
val.value = brk->value;
|
|
59
|
-
val.tt = (enum mrb_vtype)(brk->flags & RBREAK_VALUE_TT_MASK);
|
|
60
|
-
return val;
|
|
61
|
-
}
|
|
62
|
-
static inline void
|
|
63
|
-
mrb_break_value_set(struct RBreak *brk, mrb_value val)
|
|
64
|
-
{
|
|
65
|
-
brk->value = val.value;
|
|
66
|
-
brk->flags &= ~RBREAK_VALUE_TT_MASK;
|
|
67
|
-
brk->flags |= val.tt;
|
|
68
|
-
}
|
|
69
|
-
#endif /* MRB_64BIT || MRB_USE_FLOAT32 || MRB_NAN_BOXING || MRB_WORD_BOXING */
|
|
70
|
-
#define mrb_break_proc_get(brk) ((brk)->proc)
|
|
71
|
-
#define mrb_break_proc_set(brk, p) ((brk)->proc = p)
|
|
72
|
-
|
|
73
|
-
#define RBREAK_TAG_FOREACH(f) \
|
|
74
|
-
f(RBREAK_TAG_BREAK, 0) \
|
|
75
|
-
f(RBREAK_TAG_BREAK_UPPER, 1) \
|
|
76
|
-
f(RBREAK_TAG_BREAK_INTARGET, 2) \
|
|
77
|
-
f(RBREAK_TAG_RETURN_BLOCK, 3) \
|
|
78
|
-
f(RBREAK_TAG_RETURN, 4) \
|
|
79
|
-
f(RBREAK_TAG_RETURN_TOPLEVEL, 5) \
|
|
80
|
-
f(RBREAK_TAG_JUMP, 6) \
|
|
81
|
-
f(RBREAK_TAG_STOP, 7)
|
|
82
|
-
|
|
83
|
-
#define RBREAK_TAG_DEFINE(tag, i) tag = i,
|
|
84
|
-
enum {
|
|
85
|
-
RBREAK_TAG_FOREACH(RBREAK_TAG_DEFINE)
|
|
86
|
-
};
|
|
87
|
-
#undef RBREAK_TAG_DEFINE
|
|
88
|
-
|
|
89
|
-
#define RBREAK_TAG_BIT 3
|
|
90
|
-
#define RBREAK_TAG_BIT_OFF 8
|
|
91
|
-
#define RBREAK_TAG_MASK (~(~UINT32_C(0) << RBREAK_TAG_BIT))
|
|
92
|
-
|
|
93
|
-
static inline uint32_t
|
|
94
|
-
mrb_break_tag_get(struct RBreak *brk)
|
|
95
|
-
{
|
|
96
|
-
return (brk->flags >> RBREAK_TAG_BIT_OFF) & RBREAK_TAG_MASK;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
static inline void
|
|
100
|
-
mrb_break_tag_set(struct RBreak *brk, uint32_t tag)
|
|
101
|
-
{
|
|
102
|
-
brk->flags &= ~(RBREAK_TAG_MASK << RBREAK_TAG_BIT_OFF);
|
|
103
|
-
brk->flags |= (tag & RBREAK_TAG_MASK) << RBREAK_TAG_BIT_OFF;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Protect
|
|
108
|
-
*
|
|
109
|
-
*/
|
|
110
|
-
typedef mrb_value mrb_protect_error_func(mrb_state *mrb, void *userdata);
|
|
111
|
-
MRB_API mrb_value mrb_protect_error(mrb_state *mrb, mrb_protect_error_func *body, void *userdata, mrb_bool *error);
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Protect (takes mrb_value for body argument)
|
|
115
|
-
*
|
|
116
|
-
* Implemented in the mruby-error mrbgem
|
|
117
|
-
*/
|
|
118
|
-
MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state);
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Ensure
|
|
122
|
-
*
|
|
123
|
-
* Implemented in the mruby-error mrbgem
|
|
124
|
-
*/
|
|
125
|
-
MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
126
|
-
mrb_func_t ensure, mrb_value e_data);
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Rescue
|
|
130
|
-
*
|
|
131
|
-
* Implemented in the mruby-error mrbgem
|
|
132
|
-
*/
|
|
133
|
-
MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
134
|
-
mrb_func_t rescue, mrb_value r_data);
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Rescue exception
|
|
138
|
-
*
|
|
139
|
-
* Implemented in the mruby-error mrbgem
|
|
140
|
-
*/
|
|
141
|
-
MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
|
142
|
-
mrb_func_t rescue, mrb_value r_data,
|
|
143
|
-
mrb_int len, struct RClass **classes);
|
|
144
|
-
|
|
145
|
-
MRB_END_DECL
|
|
146
|
-
|
|
147
|
-
#endif /* MRUBY_ERROR_H */
|
data/assets/include/mruby/gc.h
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
** @file mruby/gc.h - garbage collector for mruby
|
|
3
|
-
**
|
|
4
|
-
** See Copyright Notice in mruby.h
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
#ifndef MRUBY_GC_H
|
|
8
|
-
#define MRUBY_GC_H
|
|
9
|
-
|
|
10
|
-
#include "common.h"
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Uncommon memory management stuffs.
|
|
14
|
-
*/
|
|
15
|
-
MRB_BEGIN_DECL
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
struct mrb_state;
|
|
19
|
-
|
|
20
|
-
#define MRB_EACH_OBJ_OK 0
|
|
21
|
-
#define MRB_EACH_OBJ_BREAK 1
|
|
22
|
-
typedef int (mrb_each_object_callback)(struct mrb_state *mrb, struct RBasic *obj, void *data);
|
|
23
|
-
void mrb_objspace_each_objects(struct mrb_state *mrb, mrb_each_object_callback *callback, void *data);
|
|
24
|
-
size_t mrb_objspace_page_slot_size(void);
|
|
25
|
-
MRB_API void mrb_free_context(struct mrb_state *mrb, struct mrb_context *c);
|
|
26
|
-
|
|
27
|
-
#ifndef MRB_GC_ARENA_SIZE
|
|
28
|
-
#define MRB_GC_ARENA_SIZE 100
|
|
29
|
-
#endif
|
|
30
|
-
|
|
31
|
-
typedef enum {
|
|
32
|
-
MRB_GC_STATE_ROOT = 0,
|
|
33
|
-
MRB_GC_STATE_MARK,
|
|
34
|
-
MRB_GC_STATE_SWEEP
|
|
35
|
-
} mrb_gc_state;
|
|
36
|
-
|
|
37
|
-
/* Disable MSVC warning "C4200: nonstandard extension used: zero-sized array
|
|
38
|
-
* in struct/union" when in C++ mode */
|
|
39
|
-
#ifdef _MSC_VER
|
|
40
|
-
#pragma warning(push)
|
|
41
|
-
#pragma warning(disable : 4200)
|
|
42
|
-
#endif
|
|
43
|
-
|
|
44
|
-
typedef struct mrb_heap_page {
|
|
45
|
-
struct RBasic *freelist;
|
|
46
|
-
struct mrb_heap_page *prev;
|
|
47
|
-
struct mrb_heap_page *next;
|
|
48
|
-
struct mrb_heap_page *free_next;
|
|
49
|
-
struct mrb_heap_page *free_prev;
|
|
50
|
-
mrb_bool old:1;
|
|
51
|
-
void *objects[];
|
|
52
|
-
} mrb_heap_page;
|
|
53
|
-
|
|
54
|
-
#ifdef _MSC_VER
|
|
55
|
-
#pragma warning(pop)
|
|
56
|
-
#endif
|
|
57
|
-
|
|
58
|
-
typedef struct mrb_gc {
|
|
59
|
-
mrb_heap_page *heaps; /* heaps for GC */
|
|
60
|
-
mrb_heap_page *sweeps;
|
|
61
|
-
mrb_heap_page *free_heaps;
|
|
62
|
-
size_t live; /* count of live objects */
|
|
63
|
-
#ifdef MRB_GC_FIXED_ARENA
|
|
64
|
-
struct RBasic *arena[MRB_GC_ARENA_SIZE]; /* GC protection array */
|
|
65
|
-
#else
|
|
66
|
-
struct RBasic **arena; /* GC protection array */
|
|
67
|
-
int arena_capa;
|
|
68
|
-
#endif
|
|
69
|
-
int arena_idx;
|
|
70
|
-
|
|
71
|
-
mrb_gc_state state; /* state of gc */
|
|
72
|
-
int current_white_part; /* make white object by white_part */
|
|
73
|
-
struct RBasic *gray_list; /* list of gray objects to be traversed incrementally */
|
|
74
|
-
struct RBasic *atomic_gray_list; /* list of objects to be traversed atomically */
|
|
75
|
-
size_t live_after_mark;
|
|
76
|
-
size_t threshold;
|
|
77
|
-
int interval_ratio;
|
|
78
|
-
int step_ratio;
|
|
79
|
-
mrb_bool iterating :1;
|
|
80
|
-
mrb_bool disabled :1;
|
|
81
|
-
mrb_bool full :1;
|
|
82
|
-
mrb_bool generational :1;
|
|
83
|
-
mrb_bool out_of_memory :1;
|
|
84
|
-
size_t majorgc_old_threshold;
|
|
85
|
-
} mrb_gc;
|
|
86
|
-
|
|
87
|
-
MRB_API mrb_bool
|
|
88
|
-
mrb_object_dead_p(struct mrb_state *mrb, struct RBasic *object);
|
|
89
|
-
|
|
90
|
-
#define MRB_GC_RED 7
|
|
91
|
-
|
|
92
|
-
MRB_END_DECL
|
|
93
|
-
|
|
94
|
-
#endif /* MRUBY_GC_H */
|
data/assets/include/mruby/irep.h
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
** @file mruby/irep.h - mrb_irep structure
|
|
3
|
-
**
|
|
4
|
-
** See Copyright Notice in mruby.h
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
#ifndef MRUBY_IREP_H
|
|
8
|
-
#define MRUBY_IREP_H
|
|
9
|
-
|
|
10
|
-
#include "common.h"
|
|
11
|
-
#include <mruby/compile.h>
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Compiled mruby scripts.
|
|
15
|
-
*/
|
|
16
|
-
MRB_BEGIN_DECL
|
|
17
|
-
|
|
18
|
-
enum irep_pool_type {
|
|
19
|
-
IREP_TT_STR = 0, /* string (need free) */
|
|
20
|
-
IREP_TT_SSTR = 2, /* string (static) */
|
|
21
|
-
IREP_TT_INT32 = 1, /* 32bit integer */
|
|
22
|
-
IREP_TT_INT64 = 3, /* 64bit integer */
|
|
23
|
-
IREP_TT_BIGINT = 7, /* big integer (not yet supported) */
|
|
24
|
-
IREP_TT_FLOAT = 5, /* float (double/float) */
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
#define IREP_TT_NFLAG 1 /* number (non string) flag */
|
|
28
|
-
#define IREP_TT_SFLAG 2 /* static string flag */
|
|
29
|
-
|
|
30
|
-
typedef struct mrb_pool_value {
|
|
31
|
-
uint32_t tt; /* packed type and length (for string) */
|
|
32
|
-
union {
|
|
33
|
-
const char *str;
|
|
34
|
-
int32_t i32;
|
|
35
|
-
int64_t i64;
|
|
36
|
-
#ifndef MRB_NO_FLOAT
|
|
37
|
-
mrb_float f;
|
|
38
|
-
#endif
|
|
39
|
-
} u;
|
|
40
|
-
} mrb_pool_value;
|
|
41
|
-
|
|
42
|
-
enum mrb_catch_type {
|
|
43
|
-
MRB_CATCH_RESCUE = 0,
|
|
44
|
-
MRB_CATCH_ENSURE = 1,
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
struct mrb_irep_catch_handler {
|
|
48
|
-
uint8_t type; /* enum mrb_catch_type */
|
|
49
|
-
uint8_t begin[4]; /* The starting address to match the handler. Includes this. */
|
|
50
|
-
uint8_t end[4]; /* The endpoint address that matches the handler. Not Includes this. */
|
|
51
|
-
uint8_t target[4]; /* The address to jump to if a match is made. */
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/* Program data array struct */
|
|
55
|
-
typedef struct mrb_irep {
|
|
56
|
-
uint16_t nlocals; /* Number of local variables */
|
|
57
|
-
uint16_t nregs; /* Number of register variables */
|
|
58
|
-
uint16_t clen; /* Number of catch handlers */
|
|
59
|
-
uint8_t flags;
|
|
60
|
-
|
|
61
|
-
const mrb_code *iseq;
|
|
62
|
-
/*
|
|
63
|
-
* A catch handler table is placed after the iseq entity.
|
|
64
|
-
* The reason it doesn't add fields to the structure is to keep the mrb_irep structure from bloating.
|
|
65
|
-
* The catch handler table can be obtained with `mrb_irep_catch_handler_table(irep)`.
|
|
66
|
-
*/
|
|
67
|
-
const mrb_pool_value *pool;
|
|
68
|
-
const mrb_sym *syms;
|
|
69
|
-
const struct mrb_irep * const *reps;
|
|
70
|
-
|
|
71
|
-
const mrb_sym *lv;
|
|
72
|
-
/* debug info */
|
|
73
|
-
struct mrb_irep_debug_info* debug_info;
|
|
74
|
-
|
|
75
|
-
uint32_t ilen;
|
|
76
|
-
uint16_t plen, slen;
|
|
77
|
-
uint16_t rlen;
|
|
78
|
-
uint16_t refcnt;
|
|
79
|
-
} mrb_irep;
|
|
80
|
-
|
|
81
|
-
#define MRB_ISEQ_NO_FREE 1
|
|
82
|
-
#define MRB_IREP_NO_FREE 2
|
|
83
|
-
#define MRB_IREP_STATIC (MRB_ISEQ_NO_FREE | MRB_IREP_NO_FREE)
|
|
84
|
-
|
|
85
|
-
MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb);
|
|
86
|
-
|
|
87
|
-
/** load mruby bytecode functions
|
|
88
|
-
* Please note! Currently due to interactions with the GC calling these functions will
|
|
89
|
-
* leak one RProc object per function call.
|
|
90
|
-
* To prevent this save the current memory arena before calling and restore the arena
|
|
91
|
-
* right after, like so
|
|
92
|
-
* int ai = mrb_gc_arena_save(mrb);
|
|
93
|
-
* mrb_value status = mrb_load_irep(mrb, buffer);
|
|
94
|
-
* mrb_gc_arena_restore(mrb, ai);
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
|
-
/* @param [const uint8_t*] irep code, expected as a literal */
|
|
98
|
-
MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*);
|
|
99
|
-
|
|
100
|
-
/*
|
|
101
|
-
* @param [const void*] irep code
|
|
102
|
-
* @param [size_t] size of irep buffer. If -1 is given, it is considered unrestricted.
|
|
103
|
-
*/
|
|
104
|
-
MRB_API mrb_value mrb_load_irep_buf(mrb_state*, const void*, size_t);
|
|
105
|
-
|
|
106
|
-
/* @param [const uint8_t*] irep code, expected as a literal */
|
|
107
|
-
MRB_API mrb_value mrb_load_irep_cxt(mrb_state*, const uint8_t*, mrbc_context*);
|
|
108
|
-
|
|
109
|
-
/*
|
|
110
|
-
* @param [const void*] irep code
|
|
111
|
-
* @param [size_t] size of irep buffer. If -1 is given, it is considered unrestricted.
|
|
112
|
-
*/
|
|
113
|
-
MRB_API mrb_value mrb_load_irep_buf_cxt(mrb_state*, const void*, size_t, mrbc_context*);
|
|
114
|
-
|
|
115
|
-
void mrb_irep_free(mrb_state*, struct mrb_irep*);
|
|
116
|
-
void mrb_irep_incref(mrb_state*, struct mrb_irep*);
|
|
117
|
-
void mrb_irep_decref(mrb_state*, struct mrb_irep*);
|
|
118
|
-
void mrb_irep_cutref(mrb_state*, struct mrb_irep*);
|
|
119
|
-
void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep);
|
|
120
|
-
|
|
121
|
-
struct mrb_insn_data {
|
|
122
|
-
uint8_t insn;
|
|
123
|
-
uint16_t a;
|
|
124
|
-
uint16_t b;
|
|
125
|
-
uint16_t c;
|
|
126
|
-
const mrb_code *addr;
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
struct mrb_insn_data mrb_decode_insn(const mrb_code *pc);
|
|
130
|
-
|
|
131
|
-
static inline const struct mrb_irep_catch_handler *
|
|
132
|
-
mrb_irep_catch_handler_table(const struct mrb_irep *irep)
|
|
133
|
-
{
|
|
134
|
-
if (irep->clen > 0) {
|
|
135
|
-
return (const struct mrb_irep_catch_handler*)(irep->iseq + irep->ilen);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
return (const struct mrb_irep_catch_handler*)NULL;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
#define mrb_irep_catch_handler_pack(n, v) uint32_to_bin(n, v)
|
|
143
|
-
#define mrb_irep_catch_handler_unpack(v) bin_to_uint32(v)
|
|
144
|
-
|
|
145
|
-
MRB_END_DECL
|
|
146
|
-
|
|
147
|
-
#endif /* MRUBY_IREP_H */
|
|
@@ -1,284 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
** @file mruby/khash.h - Hash for mruby
|
|
3
|
-
**
|
|
4
|
-
** See Copyright Notice in mruby.h
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
#ifndef MRUBY_KHASH_H
|
|
8
|
-
#define MRUBY_KHASH_H
|
|
9
|
-
|
|
10
|
-
#include <string.h>
|
|
11
|
-
|
|
12
|
-
#include <mruby.h>
|
|
13
|
-
#include "common.h"
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* khash definitions used in mruby's hash table.
|
|
17
|
-
*/
|
|
18
|
-
MRB_BEGIN_DECL
|
|
19
|
-
|
|
20
|
-
typedef uint32_t khint_t;
|
|
21
|
-
typedef khint_t khiter_t;
|
|
22
|
-
|
|
23
|
-
#ifndef KHASH_DEFAULT_SIZE
|
|
24
|
-
# define KHASH_DEFAULT_SIZE 32
|
|
25
|
-
#endif
|
|
26
|
-
#define KHASH_MIN_SIZE 8
|
|
27
|
-
|
|
28
|
-
#define UPPER_BOUND(x) ((x)>>2|(x)>>1)
|
|
29
|
-
|
|
30
|
-
/* extern uint8_t __m[]; */
|
|
31
|
-
|
|
32
|
-
/* mask for flags */
|
|
33
|
-
static const uint8_t __m_empty[] = {0x02, 0x08, 0x20, 0x80};
|
|
34
|
-
static const uint8_t __m_del[] = {0x01, 0x04, 0x10, 0x40};
|
|
35
|
-
static const uint8_t __m_either[] = {0x03, 0x0c, 0x30, 0xc0};
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
#define __ac_isempty(ed_flag, i) (ed_flag[(i)/4]&__m_empty[(i)%4])
|
|
39
|
-
#define __ac_isdel(ed_flag, i) (ed_flag[(i)/4]&__m_del[(i)%4])
|
|
40
|
-
#define __ac_iseither(ed_flag, i) (ed_flag[(i)/4]&__m_either[(i)%4])
|
|
41
|
-
#define khash_power2(v) do { \
|
|
42
|
-
v--;\
|
|
43
|
-
v |= v >> 1;\
|
|
44
|
-
v |= v >> 2;\
|
|
45
|
-
v |= v >> 4;\
|
|
46
|
-
v |= v >> 8;\
|
|
47
|
-
v |= v >> 16;\
|
|
48
|
-
v++;\
|
|
49
|
-
} while (0)
|
|
50
|
-
#define khash_mask(h) ((h)->n_buckets-1)
|
|
51
|
-
#define khash_upper_bound(h) (UPPER_BOUND((h)->n_buckets))
|
|
52
|
-
|
|
53
|
-
/* declare struct kh_xxx and kh_xxx_funcs
|
|
54
|
-
|
|
55
|
-
name: hash name
|
|
56
|
-
khkey_t: key data type
|
|
57
|
-
khval_t: value data type
|
|
58
|
-
kh_is_map: (0: hash set / 1: hash map)
|
|
59
|
-
*/
|
|
60
|
-
#define KHASH_DECLARE(name, khkey_t, khval_t, kh_is_map) \
|
|
61
|
-
typedef struct kh_##name { \
|
|
62
|
-
khint_t n_buckets; \
|
|
63
|
-
khint_t size; \
|
|
64
|
-
uint8_t *ed_flags; \
|
|
65
|
-
khkey_t *keys; \
|
|
66
|
-
khval_t *vals; \
|
|
67
|
-
} kh_##name##_t; \
|
|
68
|
-
void kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h); \
|
|
69
|
-
kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size); \
|
|
70
|
-
kh_##name##_t *kh_init_##name(mrb_state *mrb); \
|
|
71
|
-
void kh_destroy_##name(mrb_state *mrb, kh_##name##_t *h); \
|
|
72
|
-
void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h); \
|
|
73
|
-
khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key); \
|
|
74
|
-
khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret); \
|
|
75
|
-
void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets); \
|
|
76
|
-
void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x); \
|
|
77
|
-
kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h);
|
|
78
|
-
|
|
79
|
-
static inline void
|
|
80
|
-
kh_fill_flags(uint8_t *p, uint8_t c, size_t len)
|
|
81
|
-
{
|
|
82
|
-
while (len-- > 0) {
|
|
83
|
-
*p++ = c;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/* define kh_xxx_funcs
|
|
88
|
-
|
|
89
|
-
name: hash name
|
|
90
|
-
khkey_t: key data type
|
|
91
|
-
khval_t: value data type
|
|
92
|
-
kh_is_map: (0: hash set / 1: hash map)
|
|
93
|
-
__hash_func: hash function
|
|
94
|
-
__hash_equal: hash comparison function
|
|
95
|
-
*/
|
|
96
|
-
#define KHASH_DEFINE(name, khkey_t, khval_t, kh_is_map, __hash_func, __hash_equal) \
|
|
97
|
-
mrb_noreturn void mrb_raise_nomemory(mrb_state *mrb); \
|
|
98
|
-
int kh_alloc_simple_##name(mrb_state *mrb, kh_##name##_t *h) \
|
|
99
|
-
{ \
|
|
100
|
-
khint_t sz = h->n_buckets; \
|
|
101
|
-
size_t len = sizeof(khkey_t) + (kh_is_map ? sizeof(khval_t) : 0); \
|
|
102
|
-
uint8_t *p = (uint8_t*)mrb_malloc_simple(mrb, sizeof(uint8_t)*sz/4+len*sz); \
|
|
103
|
-
if (!p) { return 1; } \
|
|
104
|
-
h->size = 0; \
|
|
105
|
-
h->keys = (khkey_t *)p; \
|
|
106
|
-
h->vals = kh_is_map ? (khval_t *)(p+sizeof(khkey_t)*sz) : NULL; \
|
|
107
|
-
h->ed_flags = p+len*sz; \
|
|
108
|
-
kh_fill_flags(h->ed_flags, 0xaa, sz/4); \
|
|
109
|
-
return 0; \
|
|
110
|
-
} \
|
|
111
|
-
void kh_alloc_##name(mrb_state *mrb, kh_##name##_t *h) \
|
|
112
|
-
{ \
|
|
113
|
-
if (kh_alloc_simple_##name(mrb, h)) { \
|
|
114
|
-
mrb_raise_nomemory(mrb); \
|
|
115
|
-
} \
|
|
116
|
-
} \
|
|
117
|
-
kh_##name##_t *kh_init_##name##_size(mrb_state *mrb, khint_t size) { \
|
|
118
|
-
kh_##name##_t *h = (kh_##name##_t*)mrb_calloc(mrb, 1, sizeof(kh_##name##_t)); \
|
|
119
|
-
if (size < KHASH_MIN_SIZE) \
|
|
120
|
-
size = KHASH_MIN_SIZE; \
|
|
121
|
-
khash_power2(size); \
|
|
122
|
-
h->n_buckets = size; \
|
|
123
|
-
if (kh_alloc_simple_##name(mrb, h)) { \
|
|
124
|
-
mrb_free(mrb, h); \
|
|
125
|
-
mrb_raise_nomemory(mrb); \
|
|
126
|
-
} \
|
|
127
|
-
return h; \
|
|
128
|
-
} \
|
|
129
|
-
kh_##name##_t *kh_init_##name(mrb_state *mrb) { \
|
|
130
|
-
return kh_init_##name##_size(mrb, KHASH_DEFAULT_SIZE); \
|
|
131
|
-
} \
|
|
132
|
-
void kh_destroy_##name(mrb_state *mrb, kh_##name##_t *h) \
|
|
133
|
-
{ \
|
|
134
|
-
if (h) { \
|
|
135
|
-
mrb_free(mrb, h->keys); \
|
|
136
|
-
mrb_free(mrb, h); \
|
|
137
|
-
} \
|
|
138
|
-
} \
|
|
139
|
-
void kh_clear_##name(mrb_state *mrb, kh_##name##_t *h) \
|
|
140
|
-
{ \
|
|
141
|
-
(void)mrb; \
|
|
142
|
-
if (h && h->ed_flags) { \
|
|
143
|
-
kh_fill_flags(h->ed_flags, 0xaa, h->n_buckets/4); \
|
|
144
|
-
h->size = 0; \
|
|
145
|
-
} \
|
|
146
|
-
} \
|
|
147
|
-
khint_t kh_get_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key) \
|
|
148
|
-
{ \
|
|
149
|
-
khint_t k = __hash_func(mrb,key) & khash_mask(h), step = 0; \
|
|
150
|
-
(void)mrb; \
|
|
151
|
-
while (!__ac_isempty(h->ed_flags, k)) { \
|
|
152
|
-
if (!__ac_isdel(h->ed_flags, k)) { \
|
|
153
|
-
if (__hash_equal(mrb,h->keys[k], key)) return k; \
|
|
154
|
-
} \
|
|
155
|
-
k = (k+(++step)) & khash_mask(h); \
|
|
156
|
-
} \
|
|
157
|
-
return kh_end(h); \
|
|
158
|
-
} \
|
|
159
|
-
void kh_resize_##name(mrb_state *mrb, kh_##name##_t *h, khint_t new_n_buckets) \
|
|
160
|
-
{ \
|
|
161
|
-
if (new_n_buckets < KHASH_MIN_SIZE) \
|
|
162
|
-
new_n_buckets = KHASH_MIN_SIZE; \
|
|
163
|
-
khash_power2(new_n_buckets); \
|
|
164
|
-
{ \
|
|
165
|
-
kh_##name##_t hh; \
|
|
166
|
-
uint8_t *old_ed_flags = h->ed_flags; \
|
|
167
|
-
khkey_t *old_keys = h->keys; \
|
|
168
|
-
khval_t *old_vals = h->vals; \
|
|
169
|
-
khint_t old_n_buckets = h->n_buckets; \
|
|
170
|
-
khint_t i; \
|
|
171
|
-
hh.n_buckets = new_n_buckets; \
|
|
172
|
-
kh_alloc_##name(mrb, &hh); \
|
|
173
|
-
/* relocate */ \
|
|
174
|
-
for (i=0 ; i<old_n_buckets ; i++) { \
|
|
175
|
-
if (!__ac_iseither(old_ed_flags, i)) { \
|
|
176
|
-
khint_t k = kh_put_##name(mrb, &hh, old_keys[i], NULL); \
|
|
177
|
-
if (kh_is_map) kh_value(&hh,k) = old_vals[i]; \
|
|
178
|
-
} \
|
|
179
|
-
} \
|
|
180
|
-
/* copy hh to h */ \
|
|
181
|
-
*h = hh; \
|
|
182
|
-
mrb_free(mrb, old_keys); \
|
|
183
|
-
} \
|
|
184
|
-
} \
|
|
185
|
-
khint_t kh_put_##name(mrb_state *mrb, kh_##name##_t *h, khkey_t key, int *ret) \
|
|
186
|
-
{ \
|
|
187
|
-
khint_t k, del_k, step = 0; \
|
|
188
|
-
if (h->size >= khash_upper_bound(h)) { \
|
|
189
|
-
kh_resize_##name(mrb, h, h->n_buckets*2); \
|
|
190
|
-
} \
|
|
191
|
-
k = __hash_func(mrb,key) & khash_mask(h); \
|
|
192
|
-
del_k = kh_end(h); \
|
|
193
|
-
while (!__ac_isempty(h->ed_flags, k)) { \
|
|
194
|
-
if (!__ac_isdel(h->ed_flags, k)) { \
|
|
195
|
-
if (__hash_equal(mrb,h->keys[k], key)) { \
|
|
196
|
-
if (ret) *ret = 0; \
|
|
197
|
-
return k; \
|
|
198
|
-
} \
|
|
199
|
-
} \
|
|
200
|
-
else if (del_k == kh_end(h)) { \
|
|
201
|
-
del_k = k; \
|
|
202
|
-
} \
|
|
203
|
-
k = (k+(++step)) & khash_mask(h); \
|
|
204
|
-
} \
|
|
205
|
-
if (del_k != kh_end(h)) { \
|
|
206
|
-
/* put at del */ \
|
|
207
|
-
h->keys[del_k] = key; \
|
|
208
|
-
h->ed_flags[del_k/4] &= ~__m_del[del_k%4]; \
|
|
209
|
-
h->size++; \
|
|
210
|
-
if (ret) *ret = 2; \
|
|
211
|
-
return del_k; \
|
|
212
|
-
} \
|
|
213
|
-
else { \
|
|
214
|
-
/* put at empty */ \
|
|
215
|
-
h->keys[k] = key; \
|
|
216
|
-
h->ed_flags[k/4] &= ~__m_empty[k%4]; \
|
|
217
|
-
h->size++; \
|
|
218
|
-
if (ret) *ret = 1; \
|
|
219
|
-
return k; \
|
|
220
|
-
} \
|
|
221
|
-
} \
|
|
222
|
-
void kh_del_##name(mrb_state *mrb, kh_##name##_t *h, khint_t x) \
|
|
223
|
-
{ \
|
|
224
|
-
(void)mrb; \
|
|
225
|
-
mrb_assert(x != h->n_buckets && !__ac_iseither(h->ed_flags, x)); \
|
|
226
|
-
h->ed_flags[x/4] |= __m_del[x%4]; \
|
|
227
|
-
h->size--; \
|
|
228
|
-
} \
|
|
229
|
-
kh_##name##_t *kh_copy_##name(mrb_state *mrb, kh_##name##_t *h) \
|
|
230
|
-
{ \
|
|
231
|
-
kh_##name##_t *h2; \
|
|
232
|
-
khiter_t k, k2; \
|
|
233
|
-
\
|
|
234
|
-
h2 = kh_init_##name(mrb); \
|
|
235
|
-
for (k = kh_begin(h); k != kh_end(h); k++) { \
|
|
236
|
-
if (kh_exist(h, k)) { \
|
|
237
|
-
k2 = kh_put_##name(mrb, h2, kh_key(h, k), NULL); \
|
|
238
|
-
if (kh_is_map) kh_value(h2, k2) = kh_value(h, k); \
|
|
239
|
-
} \
|
|
240
|
-
} \
|
|
241
|
-
return h2; \
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
#define khash_t(name) kh_##name##_t
|
|
246
|
-
|
|
247
|
-
#define kh_init_size(name,mrb,size) kh_init_##name##_size(mrb,size)
|
|
248
|
-
#define kh_init(name,mrb) kh_init_##name(mrb)
|
|
249
|
-
#define kh_destroy(name, mrb, h) kh_destroy_##name(mrb, h)
|
|
250
|
-
#define kh_clear(name, mrb, h) kh_clear_##name(mrb, h)
|
|
251
|
-
#define kh_resize(name, mrb, h, s) kh_resize_##name(mrb, h, s)
|
|
252
|
-
#define kh_put(name, mrb, h, k) kh_put_##name(mrb, h, k, NULL)
|
|
253
|
-
#define kh_put2(name, mrb, h, k, r) kh_put_##name(mrb, h, k, r)
|
|
254
|
-
#define kh_get(name, mrb, h, k) kh_get_##name(mrb, h, k)
|
|
255
|
-
#define kh_del(name, mrb, h, k) kh_del_##name(mrb, h, k)
|
|
256
|
-
#define kh_copy(name, mrb, h) kh_copy_##name(mrb, h)
|
|
257
|
-
|
|
258
|
-
#define kh_exist(h, x) (!__ac_iseither((h)->ed_flags, (x)))
|
|
259
|
-
#define kh_key(h, x) ((h)->keys[x])
|
|
260
|
-
#define kh_val(h, x) ((h)->vals[x])
|
|
261
|
-
#define kh_value(h, x) ((h)->vals[x])
|
|
262
|
-
#define kh_begin(h) (khint_t)(0)
|
|
263
|
-
#define kh_end(h) ((h)->n_buckets)
|
|
264
|
-
#define kh_size(h) ((h)->size)
|
|
265
|
-
#define kh_n_buckets(h) ((h)->n_buckets)
|
|
266
|
-
|
|
267
|
-
#define kh_int_hash_func(mrb,key) (khint_t)((key)^((key)<<2)^((key)>>2))
|
|
268
|
-
#define kh_int_hash_equal(mrb,a, b) (a == b)
|
|
269
|
-
#define kh_int64_hash_func(mrb,key) (khint_t)((key)>>33^(key)^(key)<<11)
|
|
270
|
-
#define kh_int64_hash_equal(mrb,a, b) (a == b)
|
|
271
|
-
static inline khint_t __ac_X31_hash_string(const char *s)
|
|
272
|
-
{
|
|
273
|
-
khint_t h = *s;
|
|
274
|
-
if (h) for (++s ; *s; ++s) h = (h << 5) - h + *s;
|
|
275
|
-
return h;
|
|
276
|
-
}
|
|
277
|
-
#define kh_str_hash_func(mrb,key) __ac_X31_hash_string(key)
|
|
278
|
-
#define kh_str_hash_equal(mrb,a, b) (strcmp(a, b) == 0)
|
|
279
|
-
|
|
280
|
-
typedef const char *kh_cstr_t;
|
|
281
|
-
|
|
282
|
-
MRB_END_DECL
|
|
283
|
-
|
|
284
|
-
#endif /* MRUBY_KHASH_H */
|