script_core 0.2.7 → 0.3.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/.ruby-version +1 -1
- data/Gemfile +2 -2
- data/ext/enterprise_script_service/Rakefile +1 -1
- data/ext/enterprise_script_service/mruby/.github/workflows/build.yml +117 -74
- data/ext/enterprise_script_service/mruby/.github/workflows/codeql-analysis.yml +41 -37
- data/ext/enterprise_script_service/mruby/.github/workflows/lint.yml +23 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/oss-fuzz.yml +27 -0
- data/ext/enterprise_script_service/mruby/.github/workflows/spell-checker.yml +17 -0
- data/ext/enterprise_script_service/mruby/.gitlab-ci.yml +3 -3
- data/ext/enterprise_script_service/mruby/.markdownlint.yml +16 -0
- data/ext/enterprise_script_service/mruby/.travis.yml +2 -2
- data/ext/enterprise_script_service/mruby/.yamllint +8 -0
- data/ext/enterprise_script_service/mruby/AUTHORS +3 -0
- data/ext/enterprise_script_service/mruby/CODEOWNERS +1 -0
- data/ext/enterprise_script_service/mruby/CONTRIBUTING.md +6 -13
- data/ext/enterprise_script_service/mruby/Doxyfile +4 -4
- data/ext/enterprise_script_service/mruby/LICENSE +1 -1
- data/ext/enterprise_script_service/mruby/Makefile +1 -1
- data/ext/enterprise_script_service/mruby/README.md +4 -14
- data/ext/enterprise_script_service/mruby/Rakefile +18 -108
- data/ext/enterprise_script_service/mruby/TODO.md +17 -0
- data/ext/enterprise_script_service/mruby/appveyor.yml +31 -25
- data/ext/enterprise_script_service/mruby/benchmark/bm_ao_render.rb +1 -1
- data/ext/enterprise_script_service/mruby/build_config.rb +9 -152
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_ArduinoDue.rb → build_config/ArduinoDue.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelEdison.rb → build_config/IntelEdison.rb} +2 -2
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_IntelGalileo.rb → build_config/IntelGalileo.rb} +1 -18
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_RX630.rb → build_config/RX630.rb} +2 -19
- data/ext/enterprise_script_service/mruby/build_config/android_arm64-v8a.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/android_armeabi.rb +11 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_android_armeabi_v7a_neon_hard.rb → build_config/android_armeabi_v7a_neon_hard.rb} +0 -15
- data/ext/enterprise_script_service/mruby/build_config/bench.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/boxing.rb +21 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_chipKITMax32.rb → build_config/chipKITMax32.rb} +2 -19
- data/ext/enterprise_script_service/mruby/{travis_config.rb → build_config/ci/gcc-clang.rb} +10 -10
- data/ext/enterprise_script_service/mruby/build_config/ci/msvc.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/clang-asan.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/cross-32bit.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/default.rb +80 -0
- data/ext/enterprise_script_service/mruby/{examples/targets/build_config_dreamcast_shelf.rb → build_config/dreamcast_shelf.rb} +5 -19
- data/ext/enterprise_script_service/mruby/build_config/gameboyadvance.rb +73 -0
- data/ext/enterprise_script_service/mruby/build_config/host-cxx.rb +12 -0
- data/ext/enterprise_script_service/mruby/build_config/host-debug.rb +20 -0
- data/ext/enterprise_script_service/mruby/build_config/host-gprof.rb +14 -0
- data/ext/enterprise_script_service/mruby/build_config/host-m32.rb +15 -0
- data/ext/enterprise_script_service/mruby/build_config/host-shared.rb +36 -0
- data/ext/enterprise_script_service/mruby/build_config/mrbc.rb +11 -0
- data/ext/enterprise_script_service/mruby/build_config/no-float.rb +17 -0
- data/ext/enterprise_script_service/mruby/doc/guides/compile.md +138 -49
- data/ext/enterprise_script_service/mruby/doc/guides/debugger.md +5 -4
- data/ext/enterprise_script_service/mruby/doc/guides/gc-arena-howto.md +1 -1
- data/ext/enterprise_script_service/mruby/doc/guides/mrbconf.md +49 -22
- data/ext/enterprise_script_service/mruby/doc/guides/mrbgems.md +31 -14
- data/ext/enterprise_script_service/mruby/doc/guides/symbol.md +83 -0
- data/ext/enterprise_script_service/mruby/doc/limitations.md +35 -36
- data/ext/enterprise_script_service/mruby/doc/mruby3.md +163 -0
- data/ext/enterprise_script_service/mruby/doc/opcode.md +93 -107
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/c_extension_example/src/example.c +5 -1
- data/ext/enterprise_script_service/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +1 -1
- data/ext/enterprise_script_service/mruby/include/mrbconf.h +81 -62
- data/ext/enterprise_script_service/mruby/include/mruby.h +137 -96
- data/ext/enterprise_script_service/mruby/include/mruby/array.h +23 -6
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_nan.h +73 -48
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_no.h +8 -8
- data/ext/enterprise_script_service/mruby/include/mruby/boxing_word.h +79 -48
- data/ext/enterprise_script_service/mruby/include/mruby/class.h +10 -8
- data/ext/enterprise_script_service/mruby/include/mruby/common.h +4 -1
- data/ext/enterprise_script_service/mruby/include/mruby/compile.h +13 -7
- data/ext/enterprise_script_service/mruby/include/mruby/debug.h +2 -2
- data/ext/enterprise_script_service/mruby/include/mruby/dump.h +17 -35
- data/ext/enterprise_script_service/mruby/include/mruby/endian.h +44 -0
- data/ext/enterprise_script_service/mruby/include/mruby/error.h +39 -5
- data/ext/enterprise_script_service/mruby/include/mruby/gc.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/hash.h +33 -13
- data/ext/enterprise_script_service/mruby/include/mruby/irep.h +64 -14
- data/ext/enterprise_script_service/mruby/include/mruby/khash.h +6 -14
- data/ext/enterprise_script_service/mruby/include/mruby/numeric.h +36 -63
- data/ext/enterprise_script_service/mruby/include/mruby/opcode.h +1 -27
- data/ext/enterprise_script_service/mruby/include/mruby/ops.h +27 -23
- data/ext/enterprise_script_service/mruby/include/mruby/presym.h +40 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/disable.h +70 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/enable.h +37 -0
- data/ext/enterprise_script_service/mruby/include/mruby/presym/scanning.h +73 -0
- data/ext/enterprise_script_service/mruby/include/mruby/proc.h +80 -13
- data/ext/enterprise_script_service/mruby/include/mruby/string.h +10 -15
- data/ext/enterprise_script_service/mruby/include/mruby/throw.h +14 -3
- data/ext/enterprise_script_service/mruby/include/mruby/value.h +29 -19
- data/ext/enterprise_script_service/mruby/include/mruby/variable.h +1 -0
- data/ext/enterprise_script_service/mruby/include/mruby/version.h +26 -7
- data/ext/enterprise_script_service/mruby/lib/mruby/build.rb +198 -44
- data/ext/enterprise_script_service/mruby/lib/mruby/build/command.rb +55 -37
- data/ext/enterprise_script_service/mruby/lib/mruby/build/load_gems.rb +12 -10
- data/ext/enterprise_script_service/mruby/lib/{mruby-core-ext.rb → mruby/core_ext.rb} +10 -3
- data/ext/enterprise_script_service/mruby/lib/mruby/gem.rb +75 -32
- data/ext/enterprise_script_service/mruby/lib/mruby/lockfile.rb +1 -1
- data/ext/enterprise_script_service/mruby/lib/mruby/presym.rb +132 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-fpu.gembox +3 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default-no-stdio.gembox +4 -0
- data/ext/enterprise_script_service/mruby/mrbgems/default.gembox +9 -88
- data/ext/enterprise_script_service/mruby/mrbgems/full-core.gembox +1 -4
- data/ext/enterprise_script_service/mruby/mrbgems/math.gembox +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/metaprog.gembox +15 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-array-ext/src/array.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mrbgem.rake +28 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-config/mruby-config +18 -8
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +3 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +10 -10
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +14 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +2 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +23 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +11 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +41 -34
- data/ext/enterprise_script_service/mruby/mrbgems/{mruby-compiler → mruby-bin-mrbc}/bintest/mrbc.rb +0 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/mrbgem.rake +3 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +19 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +25 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +22 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrbgem.rake +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-catch/mrblib/catch.rb +27 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-class-ext/src/class.c +2 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/codegen.c +430 -399
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/keywords +5 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/lex.def +49 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/parse.y +559 -217
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/core/y.tab.c +4774 -4193
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-compiler/mrbgem.rake +18 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/mrblib/complex.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/src/complex.c +8 -7
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-complex/test/complex.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +1 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-error/mrbgem.rake +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-eval/src/eval.c +17 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-fiber/src/fiber.c +18 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +30 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-hash-ext/test/hash.rb +7 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-inline-struct/test/inline.c +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/README.md +18 -16
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/include/mruby/ext/io.h +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/file.rb +9 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/mrblib/io.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file.c +55 -52
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/file_test.c +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/src/io.c +99 -87
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/file.rb +2 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/io.rb +2 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-io/test/mruby_io_test.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +7 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/src/math.c +13 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-math/test/math.rb +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/src/metaprog.c +43 -58
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-metaprog/test/metaprog.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/README.md +4 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/src/method.c +77 -74
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-method/test/method.rb +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +14 -13
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-object-ext/src/object.c +5 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +18 -12
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/mrbgem.rake +10 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/src/memsize.c +231 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-os-memsize/test/memsize.rb +63 -0
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/README.md +15 -18
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-pack/src/pack.c +38 -88
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/mrblib/print.rb +1 -30
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-print/src/print.c +62 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/src/proc.c +32 -19
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-proc-ext/test/proc.c +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/src/random.c +98 -43
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-random/test/random.rb +2 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/mrblib/range.rb +39 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/src/range.c +20 -40
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-range-ext/test/range.rb +27 -3
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/mrblib/rational.rb +11 -17
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/src/rational.c +216 -38
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-rational/test/rational.rb +6 -6
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/README.md +6 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sleep/src/mrb_sleep.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/README.md +3 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-socket/src/socket.c +47 -45
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/sprintf.c +102 -71
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +4 -2
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +23 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-string-ext/src/string.c +13 -9
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/mrblib/struct.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-struct/src/struct.c +18 -25
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +6 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/README.md +0 -1
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/driver.c +5 -5
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/mrbgem.rake +16 -44
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-test/vformat.c +4 -4
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-time/src/time.c +27 -27
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-ext.gembox +18 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib-io.gembox +12 -0
- data/ext/enterprise_script_service/mruby/mrbgems/stdlib.gembox +54 -0
- data/ext/enterprise_script_service/mruby/mrblib/10error.rb +4 -0
- data/ext/enterprise_script_service/mruby/mrblib/array.rb +17 -9
- data/ext/enterprise_script_service/mruby/mrblib/enum.rb +1 -1
- data/ext/enterprise_script_service/mruby/mrblib/hash.rb +0 -20
- data/ext/enterprise_script_service/mruby/mrblib/init_mrblib.c +0 -11
- data/ext/enterprise_script_service/mruby/mrblib/numeric.rb +36 -11
- data/ext/enterprise_script_service/mruby/mrblib/range.rb +25 -3
- data/ext/enterprise_script_service/mruby/oss-fuzz/mruby_proto_fuzzer.cpp +2 -2
- data/ext/enterprise_script_service/mruby/oss-fuzz/proto_to_ruby.h +1 -1
- data/ext/enterprise_script_service/mruby/src/array.c +43 -80
- data/ext/enterprise_script_service/mruby/src/backtrace.c +16 -17
- data/ext/enterprise_script_service/mruby/src/class.c +774 -182
- data/ext/enterprise_script_service/mruby/src/codedump.c +223 -198
- data/ext/enterprise_script_service/mruby/src/debug.c +6 -6
- data/ext/enterprise_script_service/mruby/src/dump.c +466 -141
- data/ext/enterprise_script_service/mruby/src/enum.c +1 -1
- data/ext/enterprise_script_service/mruby/src/error.c +36 -13
- data/ext/enterprise_script_service/mruby/src/etc.c +43 -34
- data/ext/enterprise_script_service/mruby/src/fmt_fp.c +5 -6
- data/ext/enterprise_script_service/mruby/src/gc.c +73 -71
- data/ext/enterprise_script_service/mruby/src/hash.c +1050 -707
- data/ext/enterprise_script_service/mruby/src/kernel.c +75 -220
- data/ext/enterprise_script_service/mruby/src/load.c +196 -166
- data/ext/enterprise_script_service/mruby/src/numeric.c +352 -314
- data/ext/enterprise_script_service/mruby/src/object.c +97 -90
- data/ext/enterprise_script_service/mruby/src/print.c +4 -3
- data/ext/enterprise_script_service/mruby/src/proc.c +48 -56
- data/ext/enterprise_script_service/mruby/src/range.c +45 -21
- data/ext/enterprise_script_service/mruby/src/state.c +25 -32
- data/ext/enterprise_script_service/mruby/src/string.c +59 -101
- data/ext/enterprise_script_service/mruby/src/symbol.c +121 -56
- data/ext/enterprise_script_service/mruby/src/value_array.h +1 -0
- data/ext/enterprise_script_service/mruby/src/variable.c +158 -158
- data/ext/enterprise_script_service/mruby/src/vm.c +617 -602
- data/ext/enterprise_script_service/mruby/tasks/benchmark.rake +6 -6
- data/ext/enterprise_script_service/mruby/tasks/bin.rake +23 -0
- data/ext/enterprise_script_service/mruby/tasks/core.rake +12 -0
- data/ext/enterprise_script_service/mruby/tasks/doc.rake +50 -38
- data/ext/enterprise_script_service/mruby/tasks/gitlab.rake +83 -77
- data/ext/enterprise_script_service/mruby/tasks/libmruby.rake +10 -1
- data/ext/enterprise_script_service/mruby/tasks/mrbgems.rake +13 -1
- data/ext/enterprise_script_service/mruby/tasks/mrblib.rake +40 -0
- data/ext/enterprise_script_service/mruby/tasks/presym.rake +44 -0
- data/ext/enterprise_script_service/mruby/tasks/test.rake +68 -0
- data/ext/enterprise_script_service/mruby/tasks/toolchains/gcc.rake +6 -5
- data/ext/enterprise_script_service/mruby/tasks/toolchains/openwrt.rake +10 -14
- data/ext/enterprise_script_service/mruby/tasks/toolchains/visualcpp.rake +17 -21
- data/ext/enterprise_script_service/mruby/test/bintest.rb +5 -5
- data/ext/enterprise_script_service/mruby/test/t/argumenterror.rb +16 -0
- data/ext/enterprise_script_service/mruby/test/t/array.rb +7 -3
- data/ext/enterprise_script_service/mruby/test/t/bs_literal.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/float.rb +18 -8
- data/ext/enterprise_script_service/mruby/test/t/hash.rb +903 -281
- data/ext/enterprise_script_service/mruby/test/t/integer.rb +10 -38
- data/ext/enterprise_script_service/mruby/test/t/kernel.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/literals.rb +50 -0
- data/ext/enterprise_script_service/mruby/test/t/module.rb +2 -2
- data/ext/enterprise_script_service/mruby/test/t/numeric.rb +1 -1
- data/ext/enterprise_script_service/mruby/test/t/range.rb +83 -1
- data/ext/enterprise_script_service/mruby/test/t/string.rb +4 -0
- data/ext/enterprise_script_service/mruby/test/t/superclass.rb +10 -10
- data/ext/enterprise_script_service/mruby/test/t/syntax.rb +24 -0
- data/ext/enterprise_script_service/mruby/test/t/vformat.rb +3 -3
- data/ext/enterprise_script_service/mruby_config.rb +2 -5
- data/ext/enterprise_script_service/mruby_engine.cpp +1 -1
- data/lib/script_core/version.rb +1 -1
- data/spec/script_core_spec.rb +13 -0
- metadata +61 -23
- data/ext/enterprise_script_service/mruby/.github/workflows/main.yml +0 -24
- data/ext/enterprise_script_service/mruby/TODO +0 -8
- data/ext/enterprise_script_service/mruby/appveyor_config.rb +0 -46
- data/ext/enterprise_script_service/mruby/benchmark/build_config_boxing.rb +0 -28
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_arm64-v8a.rb +0 -26
- data/ext/enterprise_script_service/mruby/examples/targets/build_config_android_armeabi.rb +0 -26
- data/ext/enterprise_script_service/mruby/mrbgems/mruby-sprintf/src/kernel.c +0 -30
- data/ext/enterprise_script_service/mruby/mrblib/mrblib.rake +0 -18
- data/ext/enterprise_script_service/mruby/src/crc.c +0 -39
- data/ext/enterprise_script_service/mruby/src/mruby_core.rake +0 -19
|
@@ -3,9 +3,9 @@ mruby-pack (pack / unpack)
|
|
|
3
3
|
|
|
4
4
|
mruby-pack provides `Array#pack` and `String#unpack` for mruby.
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
## Installation
|
|
8
|
-
|
|
7
|
+
|
|
8
|
+
Add the line below into your build configuration:
|
|
9
9
|
|
|
10
10
|
```
|
|
11
11
|
conf.gem :github => 'iij/mruby-pack'
|
|
@@ -13,8 +13,8 @@ Add the line below into your `build_config.rb`:
|
|
|
13
13
|
|
|
14
14
|
There is no dependency on other mrbgems.
|
|
15
15
|
|
|
16
|
-
|
|
17
16
|
## Supported template string
|
|
17
|
+
|
|
18
18
|
- A : arbitrary binary string (space padded, count is width)
|
|
19
19
|
- a : arbitrary binary string (null padded, count is width)
|
|
20
20
|
- C : 8-bit unsigned (unsigned char)
|
|
@@ -44,28 +44,25 @@ There is no dependency on other mrbgems.
|
|
|
44
44
|
- x : null byte
|
|
45
45
|
- Z : same as "a", except that null is added with *
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
47
|
## License
|
|
50
48
|
|
|
51
49
|
Copyright (c) 2012 Internet Initiative Japan Inc.
|
|
52
50
|
Copyright (c) 2017 mruby developers
|
|
53
51
|
|
|
54
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
|
55
|
-
copy of this software and associated documentation files (the "Software"),
|
|
56
|
-
to deal in the Software without restriction, including without limitation
|
|
57
|
-
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
58
|
-
and/or sell copies of the Software, and to permit persons to whom the
|
|
52
|
+
Permission is hereby granted, free of charge, to any person obtaining a
|
|
53
|
+
copy of this software and associated documentation files (the "Software"),
|
|
54
|
+
to deal in the Software without restriction, including without limitation
|
|
55
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
56
|
+
and/or sell copies of the Software, and to permit persons to whom the
|
|
59
57
|
Software is furnished to do so, subject to the following conditions:
|
|
60
58
|
|
|
61
|
-
The above copyright notice and this permission notice shall be included in
|
|
59
|
+
The above copyright notice and this permission notice shall be included in
|
|
62
60
|
all copies or substantial portions of the Software.
|
|
63
61
|
|
|
64
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
65
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
66
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
67
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
68
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
69
|
-
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
62
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
63
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
64
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
65
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
66
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
67
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
70
68
|
DEALINGS IN THE SOFTWARE.
|
|
71
|
-
|
|
@@ -9,12 +9,15 @@
|
|
|
9
9
|
#include "mruby/numeric.h"
|
|
10
10
|
#include "mruby/string.h"
|
|
11
11
|
#include "mruby/variable.h"
|
|
12
|
+
#include "mruby/endian.h"
|
|
12
13
|
|
|
13
14
|
#include <ctype.h>
|
|
14
15
|
#include <errno.h>
|
|
15
|
-
#include <limits.h>
|
|
16
16
|
#include <string.h>
|
|
17
17
|
|
|
18
|
+
#define INT_OVERFLOW_P(n) ((n) < MRB_INT_MIN || (n) > MRB_INT_MAX)
|
|
19
|
+
#define UINT_OVERFLOW_P(n) ((n) > MRB_INT_MAX)
|
|
20
|
+
|
|
18
21
|
struct tmpl {
|
|
19
22
|
mrb_value str;
|
|
20
23
|
int idx;
|
|
@@ -63,36 +66,6 @@ const static unsigned char base64chars[] =
|
|
|
63
66
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
64
67
|
static unsigned char base64_dec_tab[128];
|
|
65
68
|
|
|
66
|
-
#if !defined(BYTE_ORDER) && defined(__BYTE_ORDER__)
|
|
67
|
-
# define BYTE_ORDER __BYTE_ORDER__
|
|
68
|
-
#endif
|
|
69
|
-
#if !defined(BIG_ENDIAN) && defined(__ORDER_BIG_ENDIAN__)
|
|
70
|
-
# define BIG_ENDIAN __ORDER_BIG_ENDIAN__
|
|
71
|
-
#endif
|
|
72
|
-
#if !defined(LITTLE_ENDIAN) && defined(__ORDER_LITTLE_ENDIAN__)
|
|
73
|
-
# define LITTLE_ENDIAN __ORDER_LITTLE_ENDIAN__
|
|
74
|
-
#endif
|
|
75
|
-
|
|
76
|
-
#ifdef BYTE_ORDER
|
|
77
|
-
# if BYTE_ORDER == BIG_ENDIAN
|
|
78
|
-
# define littleendian 0
|
|
79
|
-
# define check_little_endian() (void)0
|
|
80
|
-
# elif BYTE_ORDER == LITTLE_ENDIAN
|
|
81
|
-
# define littleendian 1
|
|
82
|
-
# define check_little_endian() (void)0
|
|
83
|
-
# endif
|
|
84
|
-
#endif
|
|
85
|
-
#ifndef littleendian
|
|
86
|
-
/* can't distinguish endian in compile time */
|
|
87
|
-
static int littleendian = 0;
|
|
88
|
-
static void
|
|
89
|
-
check_little_endian(void)
|
|
90
|
-
{
|
|
91
|
-
unsigned int n = 1;
|
|
92
|
-
littleendian = (*(unsigned char *)&n == 1);
|
|
93
|
-
}
|
|
94
|
-
#endif
|
|
95
|
-
|
|
96
69
|
static unsigned int
|
|
97
70
|
hex2int(unsigned char ch)
|
|
98
71
|
{
|
|
@@ -143,7 +116,7 @@ static int
|
|
|
143
116
|
pack_c(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
|
|
144
117
|
{
|
|
145
118
|
str = str_len_ensure(mrb, str, sidx + 1);
|
|
146
|
-
RSTRING_PTR(str)[sidx] = (char)
|
|
119
|
+
RSTRING_PTR(str)[sidx] = (char)mrb_integer(o);
|
|
147
120
|
return 1;
|
|
148
121
|
}
|
|
149
122
|
|
|
@@ -163,7 +136,7 @@ pack_s(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
|
163
136
|
uint16_t n;
|
|
164
137
|
|
|
165
138
|
str = str_len_ensure(mrb, str, sidx + 2);
|
|
166
|
-
n = (uint16_t)
|
|
139
|
+
n = (uint16_t)mrb_integer(o);
|
|
167
140
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
|
168
141
|
RSTRING_PTR(str)[sidx+0] = n % 256;
|
|
169
142
|
RSTRING_PTR(str)[sidx+1] = n / 256;
|
|
@@ -197,7 +170,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
|
197
170
|
uint32_t n;
|
|
198
171
|
|
|
199
172
|
str = str_len_ensure(mrb, str, sidx + 4);
|
|
200
|
-
n = (uint32_t)
|
|
173
|
+
n = (uint32_t)mrb_integer(o);
|
|
201
174
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
|
202
175
|
RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
|
|
203
176
|
RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
|
|
@@ -216,7 +189,7 @@ pack_l(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
|
216
189
|
static void
|
|
217
190
|
u32tostr(char *buf, size_t len, uint32_t n)
|
|
218
191
|
{
|
|
219
|
-
#ifdef
|
|
192
|
+
#ifdef MRB_NO_STDIO
|
|
220
193
|
char *bufend = buf + len;
|
|
221
194
|
char *p = bufend - 1;
|
|
222
195
|
|
|
@@ -241,27 +214,7 @@ u32tostr(char *buf, size_t len, uint32_t n)
|
|
|
241
214
|
memmove(buf, p, bufend - p);
|
|
242
215
|
#else
|
|
243
216
|
snprintf(buf, len, "%" PRIu32, n);
|
|
244
|
-
#endif /*
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
static void
|
|
248
|
-
i32tostr(char *buf, size_t len, int32_t n)
|
|
249
|
-
{
|
|
250
|
-
#ifdef MRB_DISABLE_STDIO
|
|
251
|
-
if (len < 1) {
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
if (n < 0) {
|
|
256
|
-
*buf ++ = '-';
|
|
257
|
-
len --;
|
|
258
|
-
n = -n;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
u32tostr(buf, len, (uint32_t)n);
|
|
262
|
-
#else
|
|
263
|
-
snprintf(buf, len, "%" PRId32, n);
|
|
264
|
-
#endif /* MRB_DISABLE_STDIO */
|
|
217
|
+
#endif /* MRB_NO_STDIO */
|
|
265
218
|
}
|
|
266
219
|
#endif /* MRB_INT64 */
|
|
267
220
|
|
|
@@ -286,24 +239,17 @@ unpack_l(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
|
|
|
286
239
|
ul += (uint32_t)src[3];
|
|
287
240
|
}
|
|
288
241
|
if (flags & PACK_FLAG_SIGNED) {
|
|
289
|
-
|
|
290
|
-
#ifndef MRB_INT64
|
|
291
|
-
if (!FIXABLE(sl)) {
|
|
292
|
-
i32tostr(msg, sizeof(msg), sl);
|
|
293
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Fixnum: %s", msg);
|
|
294
|
-
}
|
|
295
|
-
#endif
|
|
296
|
-
n = sl;
|
|
242
|
+
n = (int32_t)ul;
|
|
297
243
|
} else {
|
|
298
244
|
#ifndef MRB_INT64
|
|
299
|
-
if (
|
|
245
|
+
if (UINT_OVERFLOW_P(ul)) {
|
|
300
246
|
u32tostr(msg, sizeof(msg), ul);
|
|
301
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
|
247
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
|
302
248
|
}
|
|
303
249
|
#endif
|
|
304
250
|
n = ul;
|
|
305
251
|
}
|
|
306
|
-
mrb_ary_push(mrb, ary,
|
|
252
|
+
mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
|
|
307
253
|
return 4;
|
|
308
254
|
}
|
|
309
255
|
|
|
@@ -313,7 +259,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
|
313
259
|
uint64_t n;
|
|
314
260
|
|
|
315
261
|
str = str_len_ensure(mrb, str, sidx + 8);
|
|
316
|
-
n = (uint64_t)
|
|
262
|
+
n = (uint64_t)mrb_integer(o);
|
|
317
263
|
if (flags & PACK_FLAG_LITTLEENDIAN) {
|
|
318
264
|
RSTRING_PTR(str)[sidx+0] = (char)(n & 0xff);
|
|
319
265
|
RSTRING_PTR(str)[sidx+1] = (char)(n >> 8);
|
|
@@ -339,7 +285,7 @@ pack_q(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int fl
|
|
|
339
285
|
static void
|
|
340
286
|
u64tostr(char *buf, size_t len, uint64_t n)
|
|
341
287
|
{
|
|
342
|
-
#ifdef
|
|
288
|
+
#ifdef MRB_NO_STDIO
|
|
343
289
|
char *bufend = buf + len;
|
|
344
290
|
char *p = bufend - 1;
|
|
345
291
|
|
|
@@ -364,13 +310,14 @@ u64tostr(char *buf, size_t len, uint64_t n)
|
|
|
364
310
|
memmove(buf, p, bufend - p);
|
|
365
311
|
#else
|
|
366
312
|
snprintf(buf, len, "%" PRIu64, n);
|
|
367
|
-
#endif /*
|
|
313
|
+
#endif /* MRB_NO_STDIO */
|
|
368
314
|
}
|
|
369
315
|
|
|
316
|
+
#ifndef MRB_INT64
|
|
370
317
|
static void
|
|
371
318
|
i64tostr(char *buf, size_t len, int64_t n)
|
|
372
319
|
{
|
|
373
|
-
#ifdef
|
|
320
|
+
#ifdef MRB_NO_STDIO
|
|
374
321
|
if (len < 1) {
|
|
375
322
|
return;
|
|
376
323
|
}
|
|
@@ -384,8 +331,9 @@ i64tostr(char *buf, size_t len, int64_t n)
|
|
|
384
331
|
u64tostr(buf, len, (uint64_t)n);
|
|
385
332
|
#else
|
|
386
333
|
snprintf(buf, len, "%" PRId64, n);
|
|
387
|
-
#endif /*
|
|
334
|
+
#endif /* MRB_NO_STDIO */
|
|
388
335
|
}
|
|
336
|
+
#endif /* MRB_INT64 */
|
|
389
337
|
|
|
390
338
|
static int
|
|
391
339
|
unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, unsigned int flags)
|
|
@@ -409,23 +357,25 @@ unpack_q(mrb_state *mrb, const unsigned char *src, int srclen, mrb_value ary, un
|
|
|
409
357
|
}
|
|
410
358
|
if (flags & PACK_FLAG_SIGNED) {
|
|
411
359
|
int64_t sll = ull;
|
|
412
|
-
|
|
360
|
+
#ifndef MRB_INT64
|
|
361
|
+
if (INT_OVERFLOW_P(sll)) {
|
|
413
362
|
i64tostr(msg, sizeof(msg), sll);
|
|
414
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
|
363
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
|
415
364
|
}
|
|
416
|
-
|
|
365
|
+
#endif
|
|
366
|
+
n = (mrb_int)sll;
|
|
417
367
|
} else {
|
|
418
|
-
if (
|
|
368
|
+
if (UINT_OVERFLOW_P(ull)) {
|
|
419
369
|
u64tostr(msg, sizeof(msg), ull);
|
|
420
|
-
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to
|
|
370
|
+
mrb_raisef(mrb, E_RANGE_ERROR, "cannot unpack to Integer: %s", msg);
|
|
421
371
|
}
|
|
422
|
-
n = ull;
|
|
372
|
+
n = (mrb_int)ull;
|
|
423
373
|
}
|
|
424
|
-
mrb_ary_push(mrb, ary,
|
|
374
|
+
mrb_ary_push(mrb, ary, mrb_int_value(mrb, n));
|
|
425
375
|
return 8;
|
|
426
376
|
}
|
|
427
377
|
|
|
428
|
-
#ifndef
|
|
378
|
+
#ifndef MRB_NO_FLOAT
|
|
429
379
|
static int
|
|
430
380
|
pack_double(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, unsigned int flags)
|
|
431
381
|
{
|
|
@@ -560,7 +510,7 @@ pack_utf8(mrb_state *mrb, mrb_value o, mrb_value str, mrb_int sidx, long count,
|
|
|
560
510
|
int len = 0;
|
|
561
511
|
uint32_t c = 0;
|
|
562
512
|
|
|
563
|
-
c = (uint32_t)
|
|
513
|
+
c = (uint32_t)mrb_integer(o);
|
|
564
514
|
|
|
565
515
|
/* Unicode character */
|
|
566
516
|
/* from mruby-compiler gem */
|
|
@@ -828,7 +778,7 @@ unpack_h(mrb_state *mrb, const void *src, int slen, mrb_value ary, int count, un
|
|
|
828
778
|
}
|
|
829
779
|
}
|
|
830
780
|
|
|
831
|
-
dst = mrb_str_resize(mrb, dst, dptr - dptr0);
|
|
781
|
+
dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
|
|
832
782
|
mrb_ary_push(mrb, ary, dst);
|
|
833
783
|
return (int)(sptr - sptr0);
|
|
834
784
|
}
|
|
@@ -951,7 +901,7 @@ unpack_m(mrb_state *mrb, const void *src, int slen, mrb_value ary, unsigned int
|
|
|
951
901
|
}
|
|
952
902
|
|
|
953
903
|
done:
|
|
954
|
-
dst = mrb_str_resize(mrb, dst, dptr - dptr0);
|
|
904
|
+
dst = mrb_str_resize(mrb, dst, (mrb_int)(dptr - dptr0));
|
|
955
905
|
mrb_ary_push(mrb, ary, dst);
|
|
956
906
|
return (int)(sptr - sptr0);
|
|
957
907
|
}
|
|
@@ -1248,7 +1198,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
|
1248
1198
|
if (type == PACK_TYPE_INTEGER) {
|
|
1249
1199
|
o = mrb_to_int(mrb, o);
|
|
1250
1200
|
}
|
|
1251
|
-
#ifndef
|
|
1201
|
+
#ifndef MRB_NO_FLOAT
|
|
1252
1202
|
else if (type == PACK_TYPE_FLOAT) {
|
|
1253
1203
|
if (!mrb_float_p(o)) {
|
|
1254
1204
|
mrb_float f = mrb_to_flo(mrb, o);
|
|
@@ -1284,7 +1234,7 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
|
1284
1234
|
case PACK_DIR_STR:
|
|
1285
1235
|
ridx += pack_a(mrb, o, result, ridx, count, flags);
|
|
1286
1236
|
break;
|
|
1287
|
-
#ifndef
|
|
1237
|
+
#ifndef MRB_NO_FLOAT
|
|
1288
1238
|
case PACK_DIR_DOUBLE:
|
|
1289
1239
|
ridx += pack_double(mrb, o, result, ridx, flags);
|
|
1290
1240
|
break;
|
|
@@ -1298,7 +1248,8 @@ mrb_pack_pack(mrb_state *mrb, mrb_value ary)
|
|
|
1298
1248
|
default:
|
|
1299
1249
|
break;
|
|
1300
1250
|
}
|
|
1301
|
-
if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64
|
|
1251
|
+
if (dir == PACK_DIR_STR || dir == PACK_DIR_BASE64 || dir == PACK_DIR_HEX) {
|
|
1252
|
+
/* always consumes 1 entry */
|
|
1302
1253
|
aidx++;
|
|
1303
1254
|
break;
|
|
1304
1255
|
}
|
|
@@ -1380,7 +1331,7 @@ pack_unpack(mrb_state *mrb, mrb_value str, int single)
|
|
|
1380
1331
|
case PACK_DIR_QUAD:
|
|
1381
1332
|
srcidx += unpack_q(mrb, sptr, srclen - srcidx, result, flags);
|
|
1382
1333
|
break;
|
|
1383
|
-
#ifndef
|
|
1334
|
+
#ifndef MRB_NO_FLOAT
|
|
1384
1335
|
case PACK_DIR_FLOAT:
|
|
1385
1336
|
srcidx += unpack_float(mrb, sptr, srclen - srcidx, result, flags);
|
|
1386
1337
|
break;
|
|
@@ -1425,7 +1376,6 @@ mrb_pack_unpack1(mrb_state *mrb, mrb_value str)
|
|
|
1425
1376
|
void
|
|
1426
1377
|
mrb_mruby_pack_gem_init(mrb_state *mrb)
|
|
1427
1378
|
{
|
|
1428
|
-
check_little_endian();
|
|
1429
1379
|
make_base64_dec_tab();
|
|
1430
1380
|
|
|
1431
1381
|
mrb_define_method(mrb, mrb->array_class, "pack", mrb_pack_pack, MRB_ARGS_REQ(1));
|
|
@@ -3,39 +3,10 @@
|
|
|
3
3
|
#
|
|
4
4
|
# ISO 15.3.1
|
|
5
5
|
module Kernel
|
|
6
|
-
##
|
|
7
|
-
# Invoke method +print+ on STDOUT and passing +*args+
|
|
8
|
-
#
|
|
9
|
-
# ISO 15.3.1.2.10
|
|
10
|
-
def print(*args)
|
|
11
|
-
i = 0
|
|
12
|
-
len = args.size
|
|
13
|
-
while i < len
|
|
14
|
-
__printstr__ args[i].to_s
|
|
15
|
-
i += 1
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
# Invoke method +puts+ on STDOUT and passing +*args*+
|
|
21
|
-
#
|
|
22
|
-
# ISO 15.3.1.2.11
|
|
23
|
-
def puts(*args)
|
|
24
|
-
i = 0
|
|
25
|
-
len = args.size
|
|
26
|
-
while i < len
|
|
27
|
-
s = args[i].to_s
|
|
28
|
-
__printstr__ s
|
|
29
|
-
__printstr__ "\n" if (s[-1] != "\n")
|
|
30
|
-
i += 1
|
|
31
|
-
end
|
|
32
|
-
__printstr__ "\n" if len == 0
|
|
33
|
-
nil
|
|
34
|
-
end
|
|
35
|
-
|
|
36
6
|
##
|
|
37
7
|
# Print human readable object description
|
|
38
8
|
#
|
|
9
|
+
# ISO 15.3.1.2.9
|
|
39
10
|
# ISO 15.3.1.3.34
|
|
40
11
|
def p(*args)
|
|
41
12
|
i = 0
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#include <mruby.h>
|
|
2
2
|
|
|
3
|
-
#ifdef
|
|
4
|
-
# error print conflicts '
|
|
3
|
+
#ifdef MRB_NO_STDIO
|
|
4
|
+
# error print conflicts 'MRB_NO_STDIO' in your build configuration
|
|
5
5
|
#endif
|
|
6
6
|
|
|
7
7
|
#include <mruby/string.h>
|
|
@@ -17,39 +17,73 @@
|
|
|
17
17
|
#endif
|
|
18
18
|
|
|
19
19
|
static void
|
|
20
|
-
printstr(mrb_state *mrb,
|
|
20
|
+
printstr(mrb_state *mrb, const char *p, mrb_int len)
|
|
21
21
|
{
|
|
22
|
-
if (mrb_string_p(obj)) {
|
|
23
22
|
#if defined(_WIN32)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
mrb_free(mrb, utf16);
|
|
36
|
-
} else
|
|
23
|
+
if (isatty(fileno(stdout))) {
|
|
24
|
+
DWORD written;
|
|
25
|
+
int wlen = MultiByteToWideChar(CP_UTF8, 0, p, (int)len, NULL, 0);
|
|
26
|
+
wchar_t* utf16 = (wchar_t*)mrb_malloc(mrb, (wlen+1) * sizeof(wchar_t));
|
|
27
|
+
if (MultiByteToWideChar(CP_UTF8, 0, p, (int)len, utf16, wlen) > 0) {
|
|
28
|
+
utf16[wlen] = 0;
|
|
29
|
+
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE),
|
|
30
|
+
utf16, (DWORD)wlen, &written, NULL);
|
|
31
|
+
}
|
|
32
|
+
mrb_free(mrb, utf16);
|
|
33
|
+
} else
|
|
37
34
|
#endif
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
35
|
+
fwrite(p, (size_t)len, 1, stdout);
|
|
36
|
+
fflush(stdout);
|
|
41
37
|
}
|
|
42
38
|
|
|
43
|
-
|
|
44
|
-
/* 15.3.1.3.34 */
|
|
45
|
-
mrb_value
|
|
39
|
+
static mrb_value
|
|
46
40
|
mrb_printstr(mrb_state *mrb, mrb_value self)
|
|
47
41
|
{
|
|
48
|
-
mrb_value
|
|
42
|
+
mrb_value s = mrb_get_arg1(mrb);
|
|
43
|
+
|
|
44
|
+
if (mrb_string_p(s)) {
|
|
45
|
+
printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
|
|
46
|
+
}
|
|
47
|
+
return s;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/* 15.3.1.2.10 */
|
|
51
|
+
/* 15.3.1.3.35 */
|
|
52
|
+
static mrb_value
|
|
53
|
+
mrb_print(mrb_state *mrb, mrb_value self)
|
|
54
|
+
{
|
|
55
|
+
mrb_int argc, i;
|
|
56
|
+
const mrb_value *argv;
|
|
49
57
|
|
|
50
|
-
|
|
58
|
+
mrb_get_args(mrb, "*", &argv, &argc);
|
|
59
|
+
for (i=0; i<argc; i++) {
|
|
60
|
+
mrb_value s = mrb_obj_as_string(mrb, argv[i]);
|
|
61
|
+
printstr(mrb, RSTRING_PTR(s), RSTRING_LEN(s));
|
|
62
|
+
}
|
|
63
|
+
return mrb_nil_value();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* 15.3.1.2.11 */
|
|
67
|
+
/* 15.3.1.3.39 */
|
|
68
|
+
static mrb_value
|
|
69
|
+
mrb_puts(mrb_state *mrb, mrb_value self)
|
|
70
|
+
{
|
|
71
|
+
mrb_int argc, i;
|
|
72
|
+
const mrb_value *argv;
|
|
51
73
|
|
|
52
|
-
|
|
74
|
+
mrb_get_args(mrb, "*", &argv, &argc);
|
|
75
|
+
for (i=0; i<argc; i++) {
|
|
76
|
+
mrb_value s = mrb_obj_as_string(mrb, argv[i]);
|
|
77
|
+
mrb_int len = RSTRING_LEN(s);
|
|
78
|
+
printstr(mrb, RSTRING_PTR(s), len);
|
|
79
|
+
if (len == 0 || RSTRING_PTR(s)[len-1] != '\n') {
|
|
80
|
+
printstr(mrb, "\n", 1);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (argc == 0) {
|
|
84
|
+
printstr(mrb, "\n", 1);
|
|
85
|
+
}
|
|
86
|
+
return mrb_nil_value();
|
|
53
87
|
}
|
|
54
88
|
|
|
55
89
|
void
|
|
@@ -58,6 +92,8 @@ mrb_mruby_print_gem_init(mrb_state* mrb)
|
|
|
58
92
|
struct RClass *krn;
|
|
59
93
|
krn = mrb->kernel_module;
|
|
60
94
|
mrb_define_method(mrb, krn, "__printstr__", mrb_printstr, MRB_ARGS_REQ(1));
|
|
95
|
+
mrb_define_method(mrb, krn, "print", mrb_print, MRB_ARGS_ANY());
|
|
96
|
+
mrb_define_method(mrb, krn, "puts", mrb_puts, MRB_ARGS_ANY());
|
|
61
97
|
}
|
|
62
98
|
|
|
63
99
|
void
|