ruby2d 0.11.1 → 0.11.2
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/assets/include/SDL2/SDL.h +108 -14
- data/assets/include/SDL2/SDL_assert.h +81 -50
- data/assets/include/SDL2/SDL_atomic.h +135 -35
- data/assets/include/SDL2/SDL_audio.h +960 -355
- data/assets/include/SDL2/SDL_bits.h +11 -6
- data/assets/include/SDL2/SDL_blendmode.h +91 -14
- data/assets/include/SDL2/SDL_clipboard.h +30 -7
- data/assets/include/SDL2/SDL_config.h +3 -1
- data/assets/include/SDL2/SDL_config_android.h +11 -1
- data/assets/include/SDL2/SDL_config_emscripten.h +216 -0
- data/assets/include/SDL2/SDL_config_iphoneos.h +9 -1
- data/assets/include/SDL2/SDL_config_macosx.h +16 -2
- data/assets/include/SDL2/SDL_config_minimal.h +4 -1
- data/assets/include/SDL2/SDL_config_os2.h +37 -20
- data/assets/include/SDL2/SDL_config_pandora.h +6 -1
- data/assets/include/SDL2/SDL_config_psp.h +8 -8
- data/assets/include/SDL2/SDL_config_windows.h +39 -22
- data/assets/include/SDL2/SDL_config_winrt.h +23 -8
- data/assets/include/SDL2/SDL_config_wiz.h +6 -1
- data/assets/include/SDL2/SDL_copying.h +1 -1
- data/assets/include/SDL2/SDL_cpuinfo.h +331 -71
- data/assets/include/SDL2/SDL_egl.h +906 -280
- data/assets/include/SDL2/SDL_endian.h +101 -47
- data/assets/include/SDL2/SDL_error.h +70 -19
- data/assets/include/SDL2/SDL_events.h +387 -79
- data/assets/include/SDL2/SDL_filesystem.h +73 -64
- data/assets/include/SDL2/SDL_gamecontroller.h +585 -125
- data/assets/include/SDL2/SDL_gesture.h +36 -6
- data/assets/include/SDL2/SDL_haptic.h +304 -210
- data/assets/include/SDL2/SDL_hidapi.h +451 -0
- data/assets/include/SDL2/SDL_hints.h +1286 -897
- data/assets/include/SDL2/SDL_joystick.h +577 -130
- data/assets/include/SDL2/SDL_keyboard.h +162 -63
- data/assets/include/SDL2/SDL_keycode.h +7 -5
- data/assets/include/SDL2/SDL_loadso.h +42 -8
- data/assets/include/SDL2/SDL_locale.h +34 -32
- data/assets/include/SDL2/SDL_log.h +212 -19
- data/assets/include/SDL2/SDL_main.h +72 -17
- data/assets/include/SDL2/SDL_messagebox.h +70 -23
- data/assets/include/SDL2/SDL_metal.h +27 -32
- data/assets/include/SDL2/SDL_misc.h +19 -15
- data/assets/include/SDL2/SDL_mouse.h +262 -110
- data/assets/include/SDL2/SDL_mutex.h +286 -66
- data/assets/include/SDL2/SDL_name.h +1 -1
- data/assets/include/SDL2/SDL_opengl.h +1 -1
- data/assets/include/SDL2/SDL_opengles.h +1 -1
- data/assets/include/SDL2/SDL_opengles2.h +2 -2
- data/assets/include/SDL2/SDL_pixels.h +199 -34
- data/assets/include/SDL2/SDL_platform.h +39 -2
- data/assets/include/SDL2/SDL_power.h +23 -10
- data/assets/include/SDL2/SDL_quit.h +1 -1
- data/assets/include/SDL2/SDL_rect.h +78 -28
- data/assets/include/SDL2/SDL_render.h +1204 -472
- data/assets/include/SDL2/SDL_revision.h +2 -2
- data/assets/include/SDL2/SDL_rwops.h +605 -33
- data/assets/include/SDL2/SDL_scancode.h +1 -1
- data/assets/include/SDL2/SDL_sensor.h +76 -42
- data/assets/include/SDL2/SDL_shape.h +38 -27
- data/assets/include/SDL2/SDL_stdinc.h +96 -24
- data/assets/include/SDL2/SDL_surface.h +571 -139
- data/assets/include/SDL2/SDL_system.h +339 -101
- data/assets/include/SDL2/SDL_syswm.h +50 -20
- data/assets/include/SDL2/SDL_test.h +1 -1
- data/assets/include/SDL2/SDL_test_assert.h +2 -2
- data/assets/include/SDL2/SDL_test_common.h +23 -6
- data/assets/include/SDL2/SDL_test_compare.h +1 -1
- data/assets/include/SDL2/SDL_test_crc32.h +1 -1
- data/assets/include/SDL2/SDL_test_font.h +3 -3
- data/assets/include/SDL2/SDL_test_fuzzer.h +28 -26
- data/assets/include/SDL2/SDL_test_harness.h +6 -6
- data/assets/include/SDL2/SDL_test_images.h +1 -1
- data/assets/include/SDL2/SDL_test_log.h +1 -1
- data/assets/include/SDL2/SDL_test_md5.h +1 -1
- data/assets/include/SDL2/SDL_test_memory.h +1 -1
- data/assets/include/SDL2/SDL_test_random.h +2 -2
- data/assets/include/SDL2/SDL_thread.h +226 -128
- data/assets/include/SDL2/SDL_timer.h +129 -22
- data/assets/include/SDL2/SDL_touch.h +48 -8
- data/assets/include/SDL2/SDL_ttf.h +102 -9
- data/assets/include/SDL2/SDL_types.h +1 -1
- data/assets/include/SDL2/SDL_version.h +72 -46
- data/assets/include/SDL2/SDL_video.h +1266 -460
- data/assets/include/SDL2/SDL_vulkan.h +100 -161
- data/assets/include/SDL2/begin_code.h +22 -1
- data/assets/include/SDL2/close_code.h +1 -1
- data/assets/include/mrbconf.h +234 -0
- data/assets/include/mruby/array.h +317 -0
- data/assets/include/mruby/boxing_nan.h +130 -0
- data/assets/include/mruby/boxing_no.h +58 -0
- data/assets/include/mruby/boxing_word.h +205 -0
- data/assets/include/mruby/class.h +108 -0
- data/assets/include/mruby/common.h +92 -0
- data/assets/include/mruby/compile.h +210 -0
- data/assets/include/mruby/data.h +76 -0
- data/assets/include/mruby/debug.h +66 -0
- data/assets/include/mruby/dump.h +158 -0
- data/assets/include/mruby/endian.h +44 -0
- data/assets/include/mruby/error.h +137 -0
- data/assets/include/mruby/gc.h +92 -0
- data/assets/include/mruby/hash.h +242 -0
- data/assets/include/mruby/irep.h +147 -0
- data/assets/include/mruby/istruct.h +50 -0
- data/assets/include/mruby/khash.h +284 -0
- data/assets/include/mruby/numeric.h +169 -0
- data/assets/include/mruby/object.h +43 -0
- data/assets/include/mruby/opcode.h +43 -0
- data/assets/include/mruby/ops.h +122 -0
- data/assets/include/mruby/presym/disable.h +70 -0
- data/assets/include/mruby/presym/enable.h +37 -0
- data/assets/include/mruby/presym/scanning.h +73 -0
- data/assets/include/mruby/presym.h +40 -0
- data/assets/include/mruby/proc.h +209 -0
- data/assets/include/mruby/range.h +79 -0
- data/assets/include/mruby/re.h +16 -0
- data/assets/include/mruby/string.h +469 -0
- data/assets/include/mruby/throw.h +66 -0
- data/assets/include/mruby/value.h +400 -0
- data/assets/include/mruby/variable.h +140 -0
- data/assets/include/mruby/version.h +143 -0
- data/assets/include/mruby.h +1444 -0
- 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/{lib → universal/lib}/libSDL2_mixer.a +0 -0
- data/assets/macos/universal/lib/libSDL2_ttf.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/libjpeg.a +0 -0
- data/assets/macos/{lib → universal/lib}/libmodplug.a +0 -0
- data/assets/macos/{lib → universal/lib}/libmpg123.a +0 -0
- data/assets/{mingw/lib/libSDL2.a → macos/universal/lib/libmruby.a} +0 -0
- data/assets/macos/{lib → universal/lib}/libogg.a +0 -0
- data/assets/macos/universal/lib/libpng16.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/test_media/README.md +3 -0
- data/assets/test_media/bitstream_vera/COPYRIGHT.txt +124 -0
- 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/build_config.rb +13 -0
- data/assets/wasm/libmruby.a +0 -0
- data/assets/wasm/template.html +17 -0
- data/assets/windows/glew/README.md +10 -0
- data/assets/windows/glew/glew.h +23686 -0
- data/assets/{mingw/lib → windows/glew}/libglew32.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/libjbig.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjpeg.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/libpng16.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 -0
- 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/{ios → xcode/ios}/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -0
- data/assets/{ios → xcode/ios}/Assets.xcassets/Contents.json +0 -0
- data/assets/{ios → xcode/ios}/Base.lproj/LaunchScreen.storyboard +0 -0
- data/assets/{ios → xcode/ios}/Info.plist +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mrbconf.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/array.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/boxing_nan.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/boxing_no.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/boxing_word.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/class.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/common.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/compile.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/data.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/debug.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/dump.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/error.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/gc.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/hash.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/irep.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/istruct.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/khash.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/numeric.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/object.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/opcode.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/ops.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/proc.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/range.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/re.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/string.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/throw.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/value.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/variable.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby/version.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Headers/mruby.h +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/Info.plist +0 -0
- data/assets/{ios → xcode/ios}/MRuby.framework/MRuby +0 -0
- data/assets/{ios → xcode/ios}/MyApp.xcodeproj/project.pbxproj +0 -0
- data/assets/{ios → xcode/ios}/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- data/assets/{ios → xcode/ios}/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- data/assets/{ios → xcode/ios}/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -0
- data/assets/{ios → xcode/ios}/main.c +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -0
- data/assets/{tvos → xcode/tvos}/Info.plist +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mrbconf.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/array.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/boxing_nan.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/boxing_no.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/boxing_word.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/class.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/common.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/compile.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/data.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/debug.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/dump.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/error.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/gc.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/hash.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/irep.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/istruct.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/khash.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/numeric.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/object.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/opcode.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/ops.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/proc.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/range.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/re.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/string.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/throw.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/value.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/variable.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby/version.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Headers/mruby.h +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/Info.plist +0 -0
- data/assets/{tvos → xcode/tvos}/MRuby.framework/MRuby +0 -0
- data/assets/{tvos → xcode/tvos}/MyApp.xcodeproj/project.pbxproj +0 -0
- data/assets/{tvos → xcode/tvos}/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -0
- data/assets/{tvos → xcode/tvos}/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -0
- data/assets/{tvos → xcode/tvos}/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -0
- data/assets/{tvos → xcode/tvos}/main.c +0 -0
- data/bin/ruby2d +3 -4
- data/ext/ruby2d/extconf.rb +39 -25
- data/ext/ruby2d/gl.c +1 -1
- data/ext/ruby2d/gl3.c +0 -1
- data/ext/ruby2d/gles.c +137 -84
- data/ext/ruby2d/ruby2d.c +126 -32
- data/ext/ruby2d/ruby2d.h +53 -6
- data/ext/ruby2d/text.c +14 -1
- data/ext/ruby2d/window.c +253 -215
- data/lib/ruby2d/cli/build.rb +237 -59
- data/lib/ruby2d/cli/colorize.rb +5 -4
- data/lib/ruby2d/cli/platform.rb +17 -0
- data/lib/ruby2d/font.rb +7 -1
- data/lib/ruby2d/sprite.rb +7 -2
- data/lib/ruby2d/text.rb +1 -3
- data/lib/ruby2d/texture.rb +21 -21
- data/lib/ruby2d/tileset.rb +34 -33
- data/lib/ruby2d/version.rb +1 -1
- data/lib/ruby2d/vertices.rb +11 -6
- data/lib/ruby2d.rb +14 -20
- metadata +246 -152
- data/assets/README.md +0 -22
- data/assets/Rakefile +0 -85
- data/assets/macos/lib/libFLAC.a +0 -0
- data/assets/macos/lib/libSDL2.a +0 -0
- data/assets/macos/lib/libSDL2_image.a +0 -0
- data/assets/macos/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/lib/libfreetype.a +0 -0
- data/assets/macos/lib/libjpeg.a +0 -0
- data/assets/macos/lib/libpng16.a +0 -0
- data/assets/macos/lib/libtiff.a +0 -0
- data/assets/macos/lib/libvorbis.a +0 -0
- data/assets/macos/lib/libvorbisfile.a +0 -0
- data/assets/macos/lib/libwebp.a +0 -0
- data/assets/mingw/bin/SDL2.dll +0 -0
- data/assets/mingw/bin/SDL2_image.dll +0 -0
- data/assets/mingw/bin/SDL2_mixer.dll +0 -0
- data/assets/mingw/bin/SDL2_ttf.dll +0 -0
- data/assets/mingw/bin/glew32.dll +0 -0
- data/assets/mingw/bin/libFLAC-8.dll +0 -0
- data/assets/mingw/bin/libfreetype-6.dll +0 -0
- data/assets/mingw/bin/libjpeg-9.dll +0 -0
- data/assets/mingw/bin/libmodplug-1.dll +0 -0
- data/assets/mingw/bin/libmpg123-0.dll +0 -0
- data/assets/mingw/bin/libogg-0.dll +0 -0
- data/assets/mingw/bin/libopus-0.dll +0 -0
- data/assets/mingw/bin/libopusfile-0.dll +0 -0
- data/assets/mingw/bin/libpng16-16.dll +0 -0
- data/assets/mingw/bin/libtiff-5.dll +0 -0
- data/assets/mingw/bin/libvorbis-0.dll +0 -0
- data/assets/mingw/bin/libvorbisfile-3.dll +0 -0
- data/assets/mingw/bin/libwebp-7.dll +0 -0
- data/assets/mingw/bin/zlib1.dll +0 -0
- data/assets/mingw/lib/libSDL2.dll.a +0 -0
- data/assets/mingw/lib/libSDL2_image.a +0 -0
- data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
- data/assets/mingw/lib/libSDL2_mixer.a +0 -0
- data/assets/mingw/lib/libSDL2_mixer.dll.a +0 -0
- data/assets/mingw/lib/libSDL2_test.a +0 -0
- data/assets/mingw/lib/libSDL2_ttf.a +0 -0
- data/assets/mingw/lib/libSDL2_ttf.dll.a +0 -0
- data/assets/mingw/lib/libSDL2main.a +0 -0
- data/assets/mingw/lib/libglew32.dll.a +0 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
/**
|
2
|
+
** @file mruby/endian.h - detect endian-ness
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRUBY_ENDIAN_H
|
8
|
+
#define MRUBY_ENDIAN_H
|
9
|
+
|
10
|
+
#include <limits.h>
|
11
|
+
|
12
|
+
MRB_BEGIN_DECL
|
13
|
+
|
14
|
+
#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__)
|
15
|
+
# define BYTE_ORDER __BYTE_ORDER__
|
16
|
+
#endif
|
17
|
+
#if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__)
|
18
|
+
# define BIG_ENDIAN __ORDER_BIG_ENDIAN__
|
19
|
+
#endif
|
20
|
+
#if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__)
|
21
|
+
# define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#ifdef BYTE_ORDER
|
25
|
+
# if BYTE_ORDER == BIG_ENDIAN
|
26
|
+
# define littleendian 0
|
27
|
+
# elif BYTE_ORDER == LITTLE_ENDIAN
|
28
|
+
# define littleendian 1
|
29
|
+
# endif
|
30
|
+
#endif
|
31
|
+
#ifndef littleendian
|
32
|
+
/* can't distinguish endian in compile time */
|
33
|
+
static inline int
|
34
|
+
check_little_endian(void)
|
35
|
+
{
|
36
|
+
unsigned int n = 1;
|
37
|
+
return (*(unsigned char *)&n == 1);
|
38
|
+
}
|
39
|
+
# define littleendian check_little_endian()
|
40
|
+
#endif
|
41
|
+
|
42
|
+
MRB_END_DECL
|
43
|
+
|
44
|
+
#endif /* MRUBY_ENDIAN_H */
|
@@ -0,0 +1,137 @@
|
|
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
|
+
};
|
21
|
+
|
22
|
+
#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
|
23
|
+
|
24
|
+
MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
|
25
|
+
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
|
26
|
+
#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
|
27
|
+
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_lit(mrb, c, lit)
|
28
|
+
MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
|
29
|
+
MRB_API mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
|
30
|
+
MRB_API mrb_value mrb_get_backtrace(mrb_state *mrb);
|
31
|
+
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
|
32
|
+
|
33
|
+
/* declaration for `fail` method */
|
34
|
+
MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value);
|
35
|
+
|
36
|
+
#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT32) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING)
|
37
|
+
struct RBreak {
|
38
|
+
MRB_OBJECT_HEADER;
|
39
|
+
const struct RProc *proc;
|
40
|
+
mrb_value val;
|
41
|
+
};
|
42
|
+
#define mrb_break_value_get(brk) ((brk)->val)
|
43
|
+
#define mrb_break_value_set(brk, v) ((brk)->val = v)
|
44
|
+
#else
|
45
|
+
struct RBreak {
|
46
|
+
MRB_OBJECT_HEADER;
|
47
|
+
const struct RProc *proc;
|
48
|
+
union mrb_value_union value;
|
49
|
+
};
|
50
|
+
#define RBREAK_VALUE_TT_MASK ((1 << 8) - 1)
|
51
|
+
static inline mrb_value
|
52
|
+
mrb_break_value_get(struct RBreak *brk)
|
53
|
+
{
|
54
|
+
mrb_value val;
|
55
|
+
val.value = brk->value;
|
56
|
+
val.tt = (enum mrb_vtype)(brk->flags & RBREAK_VALUE_TT_MASK);
|
57
|
+
return val;
|
58
|
+
}
|
59
|
+
static inline void
|
60
|
+
mrb_break_value_set(struct RBreak *brk, mrb_value val)
|
61
|
+
{
|
62
|
+
brk->value = val.value;
|
63
|
+
brk->flags &= ~RBREAK_VALUE_TT_MASK;
|
64
|
+
brk->flags |= val.tt;
|
65
|
+
}
|
66
|
+
#endif /* MRB_64BIT || MRB_USE_FLOAT32 || MRB_NAN_BOXING || MRB_WORD_BOXING */
|
67
|
+
#define mrb_break_proc_get(brk) ((brk)->proc)
|
68
|
+
#define mrb_break_proc_set(brk, p) ((brk)->proc = p)
|
69
|
+
|
70
|
+
#define RBREAK_TAG_FOREACH(f) \
|
71
|
+
f(RBREAK_TAG_BREAK, 0) \
|
72
|
+
f(RBREAK_TAG_BREAK_UPPER, 1) \
|
73
|
+
f(RBREAK_TAG_BREAK_INTARGET, 2) \
|
74
|
+
f(RBREAK_TAG_RETURN_BLOCK, 3) \
|
75
|
+
f(RBREAK_TAG_RETURN, 4) \
|
76
|
+
f(RBREAK_TAG_RETURN_TOPLEVEL, 5) \
|
77
|
+
f(RBREAK_TAG_JUMP, 6) \
|
78
|
+
f(RBREAK_TAG_STOP, 7)
|
79
|
+
|
80
|
+
#define RBREAK_TAG_DEFINE(tag, i) tag = i,
|
81
|
+
enum {
|
82
|
+
RBREAK_TAG_FOREACH(RBREAK_TAG_DEFINE)
|
83
|
+
};
|
84
|
+
#undef RBREAK_TAG_DEFINE
|
85
|
+
|
86
|
+
#define RBREAK_TAG_BIT 3
|
87
|
+
#define RBREAK_TAG_BIT_OFF 8
|
88
|
+
#define RBREAK_TAG_MASK (~(~UINT32_C(0) << RBREAK_TAG_BIT))
|
89
|
+
|
90
|
+
static inline uint32_t
|
91
|
+
mrb_break_tag_get(struct RBreak *brk)
|
92
|
+
{
|
93
|
+
return (brk->flags >> RBREAK_TAG_BIT_OFF) & RBREAK_TAG_MASK;
|
94
|
+
}
|
95
|
+
|
96
|
+
static inline void
|
97
|
+
mrb_break_tag_set(struct RBreak *brk, uint32_t tag)
|
98
|
+
{
|
99
|
+
brk->flags &= ~(RBREAK_TAG_MASK << RBREAK_TAG_BIT_OFF);
|
100
|
+
brk->flags |= (tag & RBREAK_TAG_MASK) << RBREAK_TAG_BIT_OFF;
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
* Protect
|
105
|
+
*
|
106
|
+
* Implemented in the mruby-error mrbgem
|
107
|
+
*/
|
108
|
+
MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state);
|
109
|
+
|
110
|
+
/**
|
111
|
+
* Ensure
|
112
|
+
*
|
113
|
+
* Implemented in the mruby-error mrbgem
|
114
|
+
*/
|
115
|
+
MRB_API mrb_value mrb_ensure(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
116
|
+
mrb_func_t ensure, mrb_value e_data);
|
117
|
+
|
118
|
+
/**
|
119
|
+
* Rescue
|
120
|
+
*
|
121
|
+
* Implemented in the mruby-error mrbgem
|
122
|
+
*/
|
123
|
+
MRB_API mrb_value mrb_rescue(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
124
|
+
mrb_func_t rescue, mrb_value r_data);
|
125
|
+
|
126
|
+
/**
|
127
|
+
* Rescue exception
|
128
|
+
*
|
129
|
+
* Implemented in the mruby-error mrbgem
|
130
|
+
*/
|
131
|
+
MRB_API mrb_value mrb_rescue_exceptions(mrb_state *mrb, mrb_func_t body, mrb_value b_data,
|
132
|
+
mrb_func_t rescue, mrb_value r_data,
|
133
|
+
mrb_int len, struct RClass **classes);
|
134
|
+
|
135
|
+
MRB_END_DECL
|
136
|
+
|
137
|
+
#endif /* MRUBY_ERROR_H */
|
@@ -0,0 +1,92 @@
|
|
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
|
+
MRB_END_DECL
|
91
|
+
|
92
|
+
#endif /* MRUBY_GC_H */
|
@@ -0,0 +1,242 @@
|
|
1
|
+
/**
|
2
|
+
** @file mruby/hash.h - Hash class
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRUBY_HASH_H
|
8
|
+
#define MRUBY_HASH_H
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Hash class
|
14
|
+
*/
|
15
|
+
MRB_BEGIN_DECL
|
16
|
+
|
17
|
+
/* offset of `iv` must be 3 words */
|
18
|
+
struct RHash {
|
19
|
+
MRB_OBJECT_HEADER;
|
20
|
+
#ifdef MRB_64BIT
|
21
|
+
uint32_t size;
|
22
|
+
struct iv_tbl *iv;
|
23
|
+
uint32_t ea_capa;
|
24
|
+
uint32_t ea_n_used;
|
25
|
+
#else
|
26
|
+
struct iv_tbl *iv;
|
27
|
+
uint32_t size;
|
28
|
+
#endif
|
29
|
+
union {
|
30
|
+
struct hash_entry *ea;
|
31
|
+
struct hash_table *ht;
|
32
|
+
};
|
33
|
+
};
|
34
|
+
|
35
|
+
#define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v)))
|
36
|
+
#define mrb_hash_value(p) mrb_obj_value((void*)(p))
|
37
|
+
|
38
|
+
size_t mrb_hash_memsize(mrb_value obj);
|
39
|
+
MRB_API mrb_value mrb_hash_new_capa(mrb_state *mrb, mrb_int capa);
|
40
|
+
MRB_API mrb_value mrb_ensure_hash_type(mrb_state *mrb, mrb_value hash);
|
41
|
+
MRB_API mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash);
|
42
|
+
|
43
|
+
/*
|
44
|
+
* Initializes a new hash.
|
45
|
+
*
|
46
|
+
* Equivalent to:
|
47
|
+
*
|
48
|
+
* Hash.new
|
49
|
+
*
|
50
|
+
* @param mrb The mruby state reference.
|
51
|
+
* @return The initialized hash.
|
52
|
+
*/
|
53
|
+
MRB_API mrb_value mrb_hash_new(mrb_state *mrb);
|
54
|
+
|
55
|
+
/*
|
56
|
+
* Sets a keys and values to hashes.
|
57
|
+
*
|
58
|
+
* Equivalent to:
|
59
|
+
*
|
60
|
+
* hash[key] = val
|
61
|
+
*
|
62
|
+
* @param mrb The mruby state reference.
|
63
|
+
* @param hash The target hash.
|
64
|
+
* @param key The key to set.
|
65
|
+
* @param val The value to set.
|
66
|
+
* @return The value.
|
67
|
+
*/
|
68
|
+
MRB_API void mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val);
|
69
|
+
|
70
|
+
/*
|
71
|
+
* Gets a value from a key. If the key is not found, the default of the
|
72
|
+
* hash is used.
|
73
|
+
*
|
74
|
+
* Equivalent to:
|
75
|
+
*
|
76
|
+
* hash[key]
|
77
|
+
*
|
78
|
+
* @param mrb The mruby state reference.
|
79
|
+
* @param hash The target hash.
|
80
|
+
* @param key The key to get.
|
81
|
+
* @return The found value.
|
82
|
+
*/
|
83
|
+
MRB_API mrb_value mrb_hash_get(mrb_state *mrb, mrb_value hash, mrb_value key);
|
84
|
+
|
85
|
+
/*
|
86
|
+
* Gets a value from a key. If the key is not found, the default parameter is
|
87
|
+
* used.
|
88
|
+
*
|
89
|
+
* Equivalent to:
|
90
|
+
*
|
91
|
+
* hash.key?(key) ? hash[key] : def
|
92
|
+
*
|
93
|
+
* @param mrb The mruby state reference.
|
94
|
+
* @param hash The target hash.
|
95
|
+
* @param key The key to get.
|
96
|
+
* @param def The default value.
|
97
|
+
* @return The found value.
|
98
|
+
*/
|
99
|
+
MRB_API mrb_value mrb_hash_fetch(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value def);
|
100
|
+
|
101
|
+
/*
|
102
|
+
* Deletes hash key and value pair.
|
103
|
+
*
|
104
|
+
* Equivalent to:
|
105
|
+
*
|
106
|
+
* hash.delete(key)
|
107
|
+
*
|
108
|
+
* @param mrb The mruby state reference.
|
109
|
+
* @param hash The target hash.
|
110
|
+
* @param key The key to delete.
|
111
|
+
* @return The deleted value. This value is not protected from GC. Use `mrb_gc_protect()` if necessary.
|
112
|
+
*/
|
113
|
+
MRB_API mrb_value mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key);
|
114
|
+
|
115
|
+
/*
|
116
|
+
* Gets an array of keys.
|
117
|
+
*
|
118
|
+
* Equivalent to:
|
119
|
+
*
|
120
|
+
* hash.keys
|
121
|
+
*
|
122
|
+
* @param mrb The mruby state reference.
|
123
|
+
* @param hash The target hash.
|
124
|
+
* @return An array with the keys of the hash.
|
125
|
+
*/
|
126
|
+
MRB_API mrb_value mrb_hash_keys(mrb_state *mrb, mrb_value hash);
|
127
|
+
/*
|
128
|
+
* Check if the hash has the key.
|
129
|
+
*
|
130
|
+
* Equivalent to:
|
131
|
+
*
|
132
|
+
* hash.key?(key)
|
133
|
+
*
|
134
|
+
* @param mrb The mruby state reference.
|
135
|
+
* @param hash The target hash.
|
136
|
+
* @param key The key to check existence.
|
137
|
+
* @return True if the hash has the key
|
138
|
+
*/
|
139
|
+
MRB_API mrb_bool mrb_hash_key_p(mrb_state *mrb, mrb_value hash, mrb_value key);
|
140
|
+
|
141
|
+
/*
|
142
|
+
* Check if the hash is empty
|
143
|
+
*
|
144
|
+
* Equivalent to:
|
145
|
+
*
|
146
|
+
* hash.empty?
|
147
|
+
*
|
148
|
+
* @param mrb The mruby state reference.
|
149
|
+
* @param self The target hash.
|
150
|
+
* @return True if the hash is empty, false otherwise.
|
151
|
+
*/
|
152
|
+
MRB_API mrb_bool mrb_hash_empty_p(mrb_state *mrb, mrb_value self);
|
153
|
+
|
154
|
+
/*
|
155
|
+
* Gets an array of values.
|
156
|
+
*
|
157
|
+
* Equivalent to:
|
158
|
+
*
|
159
|
+
* hash.values
|
160
|
+
*
|
161
|
+
* @param mrb The mruby state reference.
|
162
|
+
* @param hash The target hash.
|
163
|
+
* @return An array with the values of the hash.
|
164
|
+
*/
|
165
|
+
MRB_API mrb_value mrb_hash_values(mrb_state *mrb, mrb_value hash);
|
166
|
+
|
167
|
+
/*
|
168
|
+
* Clears the hash.
|
169
|
+
*
|
170
|
+
* Equivalent to:
|
171
|
+
*
|
172
|
+
* hash.clear
|
173
|
+
*
|
174
|
+
* @param mrb The mruby state reference.
|
175
|
+
* @param hash The target hash.
|
176
|
+
* @return The hash
|
177
|
+
*/
|
178
|
+
MRB_API mrb_value mrb_hash_clear(mrb_state *mrb, mrb_value hash);
|
179
|
+
|
180
|
+
/*
|
181
|
+
* Get hash size.
|
182
|
+
*
|
183
|
+
* Equivalent to:
|
184
|
+
*
|
185
|
+
* hash.size
|
186
|
+
*
|
187
|
+
* @param mrb The mruby state reference.
|
188
|
+
* @param hash The target hash.
|
189
|
+
* @return The hash size.
|
190
|
+
*/
|
191
|
+
MRB_API mrb_int mrb_hash_size(mrb_state *mrb, mrb_value hash);
|
192
|
+
|
193
|
+
/*
|
194
|
+
* Copies the hash. This function does NOT copy the instance variables
|
195
|
+
* (except for the default value). Use mrb_obj_dup() to copy the instance
|
196
|
+
* variables as well.
|
197
|
+
*
|
198
|
+
* @param mrb The mruby state reference.
|
199
|
+
* @param hash The target hash.
|
200
|
+
* @return The copy of the hash
|
201
|
+
*/
|
202
|
+
MRB_API mrb_value mrb_hash_dup(mrb_state *mrb, mrb_value hash);
|
203
|
+
|
204
|
+
/*
|
205
|
+
* Merges two hashes. The first hash will be modified by the
|
206
|
+
* second hash.
|
207
|
+
*
|
208
|
+
* @param mrb The mruby state reference.
|
209
|
+
* @param hash1 The target hash.
|
210
|
+
* @param hash2 Updating hash
|
211
|
+
*/
|
212
|
+
MRB_API void mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2);
|
213
|
+
|
214
|
+
#define RHASH(hash) ((struct RHash*)(mrb_ptr(hash)))
|
215
|
+
|
216
|
+
#define MRB_HASH_IB_BIT_BIT 5
|
217
|
+
#define MRB_HASH_AR_EA_CAPA_BIT 5
|
218
|
+
#define MRB_HASH_IB_BIT_SHIFT 0
|
219
|
+
#define MRB_HASH_AR_EA_CAPA_SHIFT 0
|
220
|
+
#define MRB_HASH_AR_EA_N_USED_SHIFT MRB_HASH_AR_EA_CAPA_BIT
|
221
|
+
#define MRB_HASH_SIZE_FLAGS_SHIFT (MRB_HASH_AR_EA_CAPA_BIT * 2)
|
222
|
+
#define MRB_HASH_IB_BIT_MASK ((1 << MRB_HASH_IB_BIT_BIT) - 1)
|
223
|
+
#define MRB_HASH_AR_EA_CAPA_MASK ((1 << MRB_HASH_AR_EA_CAPA_BIT) - 1)
|
224
|
+
#define MRB_HASH_AR_EA_N_USED_MASK (MRB_HASH_AR_EA_CAPA_MASK << MRB_HASH_AR_EA_N_USED_SHIFT)
|
225
|
+
#define MRB_HASH_DEFAULT (1 << (MRB_HASH_SIZE_FLAGS_SHIFT + 0))
|
226
|
+
#define MRB_HASH_PROC_DEFAULT (1 << (MRB_HASH_SIZE_FLAGS_SHIFT + 1))
|
227
|
+
#define MRB_HASH_HT (1 << (MRB_HASH_SIZE_FLAGS_SHIFT + 2))
|
228
|
+
#define MRB_RHASH_DEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_DEFAULT)
|
229
|
+
#define MRB_RHASH_PROCDEFAULT_P(hash) (RHASH(hash)->flags & MRB_HASH_PROC_DEFAULT)
|
230
|
+
|
231
|
+
/* GC functions */
|
232
|
+
void mrb_gc_mark_hash(mrb_state*, struct RHash*);
|
233
|
+
size_t mrb_gc_mark_hash_size(mrb_state*, struct RHash*);
|
234
|
+
void mrb_gc_free_hash(mrb_state*, struct RHash*);
|
235
|
+
|
236
|
+
/* return non zero to break the loop */
|
237
|
+
typedef int (mrb_hash_foreach_func)(mrb_state *mrb, mrb_value key, mrb_value val, void *data);
|
238
|
+
MRB_API void mrb_hash_foreach(mrb_state *mrb, struct RHash *hash, mrb_hash_foreach_func *func, void *p);
|
239
|
+
|
240
|
+
MRB_END_DECL
|
241
|
+
|
242
|
+
#endif /* MRUBY_HASH_H */
|
@@ -0,0 +1,147 @@
|
|
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_FLOAT = 5, /* float (double/float) */
|
24
|
+
};
|
25
|
+
|
26
|
+
#define IREP_TT_NFLAG 1 /* number (non string) flag */
|
27
|
+
#define IREP_TT_SFLAG 2 /* static string flag */
|
28
|
+
|
29
|
+
typedef struct mrb_pool_value {
|
30
|
+
uint32_t tt; /* packed type and length (for string) */
|
31
|
+
union {
|
32
|
+
const char *str;
|
33
|
+
int32_t i32;
|
34
|
+
#if defined(MRB_64BIT) || defined(MRB_INT64)
|
35
|
+
int64_t i64;
|
36
|
+
#endif
|
37
|
+
#ifndef MRB_NO_FLOAT
|
38
|
+
mrb_float f;
|
39
|
+
#endif
|
40
|
+
} u;
|
41
|
+
} mrb_pool_value;
|
42
|
+
|
43
|
+
enum mrb_catch_type {
|
44
|
+
MRB_CATCH_RESCUE = 0,
|
45
|
+
MRB_CATCH_ENSURE = 1,
|
46
|
+
};
|
47
|
+
|
48
|
+
struct mrb_irep_catch_handler {
|
49
|
+
uint8_t type; /* enum mrb_catch_type */
|
50
|
+
uint8_t begin[4]; /* The starting address to match the hander. Includes this. */
|
51
|
+
uint8_t end[4]; /* The endpoint address that matches the hander. Not Includes this. */
|
52
|
+
uint8_t target[4]; /* The address to jump to if a match is made. */
|
53
|
+
};
|
54
|
+
|
55
|
+
/* Program data array struct */
|
56
|
+
typedef struct mrb_irep {
|
57
|
+
uint16_t nlocals; /* Number of local variables */
|
58
|
+
uint16_t nregs; /* Number of register variables */
|
59
|
+
uint16_t clen; /* Number of catch handlers */
|
60
|
+
uint8_t flags;
|
61
|
+
|
62
|
+
const mrb_code *iseq;
|
63
|
+
/*
|
64
|
+
* A catch handler table is placed after the iseq entity.
|
65
|
+
* The reason it doesn't add fields to the structure is to keep the mrb_irep structure from bloating.
|
66
|
+
* The catch handler table can be obtained with `mrb_irep_catch_handler_table(irep)`.
|
67
|
+
*/
|
68
|
+
const mrb_pool_value *pool;
|
69
|
+
const mrb_sym *syms;
|
70
|
+
const struct mrb_irep * const *reps;
|
71
|
+
|
72
|
+
const mrb_sym *lv;
|
73
|
+
/* debug info */
|
74
|
+
struct mrb_irep_debug_info* debug_info;
|
75
|
+
|
76
|
+
uint32_t ilen;
|
77
|
+
uint16_t plen, slen;
|
78
|
+
uint16_t rlen;
|
79
|
+
uint16_t refcnt;
|
80
|
+
} mrb_irep;
|
81
|
+
|
82
|
+
#define MRB_ISEQ_NO_FREE 1
|
83
|
+
#define MRB_IREP_NO_FREE 2
|
84
|
+
#define MRB_IREP_STATIC (MRB_ISEQ_NO_FREE | MRB_IREP_NO_FREE)
|
85
|
+
|
86
|
+
MRB_API mrb_irep *mrb_add_irep(mrb_state *mrb);
|
87
|
+
|
88
|
+
/** load mruby bytecode functions
|
89
|
+
* Please note! Currently due to interactions with the GC calling these functions will
|
90
|
+
* leak one RProc object per function call.
|
91
|
+
* To prevent this save the current memory arena before calling and restore the arena
|
92
|
+
* right after, like so
|
93
|
+
* int ai = mrb_gc_arena_save(mrb);
|
94
|
+
* mrb_value status = mrb_load_irep(mrb, buffer);
|
95
|
+
* mrb_gc_arena_restore(mrb, ai);
|
96
|
+
*/
|
97
|
+
|
98
|
+
/* @param [const uint8_t*] irep code, expected as a literal */
|
99
|
+
MRB_API mrb_value mrb_load_irep(mrb_state*, const uint8_t*);
|
100
|
+
|
101
|
+
/*
|
102
|
+
* @param [const void*] irep code
|
103
|
+
* @param [size_t] size of irep buffer. If -1 is given, it is considered unrestricted.
|
104
|
+
*/
|
105
|
+
MRB_API mrb_value mrb_load_irep_buf(mrb_state*, const void*, size_t);
|
106
|
+
|
107
|
+
/* @param [const uint8_t*] irep code, expected as a literal */
|
108
|
+
MRB_API mrb_value mrb_load_irep_cxt(mrb_state*, const uint8_t*, mrbc_context*);
|
109
|
+
|
110
|
+
/*
|
111
|
+
* @param [const void*] irep code
|
112
|
+
* @param [size_t] size of irep buffer. If -1 is given, it is considered unrestricted.
|
113
|
+
*/
|
114
|
+
MRB_API mrb_value mrb_load_irep_buf_cxt(mrb_state*, const void*, size_t, mrbc_context*);
|
115
|
+
|
116
|
+
void mrb_irep_free(mrb_state*, struct mrb_irep*);
|
117
|
+
void mrb_irep_incref(mrb_state*, struct mrb_irep*);
|
118
|
+
void mrb_irep_decref(mrb_state*, struct mrb_irep*);
|
119
|
+
void mrb_irep_cutref(mrb_state*, struct mrb_irep*);
|
120
|
+
void mrb_irep_remove_lv(mrb_state *mrb, mrb_irep *irep);
|
121
|
+
|
122
|
+
struct mrb_insn_data {
|
123
|
+
uint8_t insn;
|
124
|
+
uint16_t a;
|
125
|
+
uint16_t b;
|
126
|
+
uint16_t c;
|
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 */
|
@@ -0,0 +1,50 @@
|
|
1
|
+
/**
|
2
|
+
** @file mruby/istruct.h - Inline structures
|
3
|
+
**
|
4
|
+
** See Copyright Notice in mruby.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef MRUBY_ISTRUCT_H
|
8
|
+
#define MRUBY_ISTRUCT_H
|
9
|
+
|
10
|
+
#include "common.h"
|
11
|
+
#include <string.h>
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Inline structures that fit in RVALUE
|
15
|
+
*
|
16
|
+
* They cannot have finalizer, and cannot have instance variables.
|
17
|
+
*/
|
18
|
+
MRB_BEGIN_DECL
|
19
|
+
|
20
|
+
#define ISTRUCT_DATA_SIZE (sizeof(void*) * 3)
|
21
|
+
|
22
|
+
struct RIStruct {
|
23
|
+
MRB_OBJECT_HEADER;
|
24
|
+
union {
|
25
|
+
intptr_t inline_alignment[3];
|
26
|
+
char inline_data[ISTRUCT_DATA_SIZE];
|
27
|
+
};
|
28
|
+
};
|
29
|
+
|
30
|
+
#define RISTRUCT(obj) ((struct RIStruct*)(mrb_ptr(obj)))
|
31
|
+
#define ISTRUCT_PTR(obj) (RISTRUCT(obj)->inline_data)
|
32
|
+
|
33
|
+
MRB_INLINE mrb_int mrb_istruct_size()
|
34
|
+
{
|
35
|
+
return ISTRUCT_DATA_SIZE;
|
36
|
+
}
|
37
|
+
|
38
|
+
MRB_INLINE void* mrb_istruct_ptr(mrb_value object)
|
39
|
+
{
|
40
|
+
return ISTRUCT_PTR(object);
|
41
|
+
}
|
42
|
+
|
43
|
+
MRB_INLINE void mrb_istruct_copy(mrb_value dest, mrb_value src)
|
44
|
+
{
|
45
|
+
memcpy(ISTRUCT_PTR(dest), ISTRUCT_PTR(src), ISTRUCT_DATA_SIZE);
|
46
|
+
}
|
47
|
+
|
48
|
+
MRB_END_DECL
|
49
|
+
|
50
|
+
#endif /* MRUBY_ISTRUCT_H */
|