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
|
@@ -143,7 +143,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
143
143
|
assert_equal_rational(false, 1r, ComplexLikeNumeric.new(2))
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
-
assert '
|
|
146
|
+
assert 'Integer#==(Rational), Integer#!=(Rational)' do
|
|
147
147
|
assert_equal_rational(true, 2, Rational(4,2))
|
|
148
148
|
assert_equal_rational(true, -2, Rational(-4,2))
|
|
149
149
|
assert_equal_rational(true, -2, Rational(4,-2))
|
|
@@ -186,7 +186,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
186
186
|
assert_raise(NoMethodError) { 1r <=> ComplexLikeNumeric.new(2) }
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
-
assert '
|
|
189
|
+
assert 'Integer#<=>(Rational)' do
|
|
190
190
|
assert_cmp(-1, -2, Rational(-9,5))
|
|
191
191
|
assert_cmp(0, 5, 5r)
|
|
192
192
|
assert_cmp(1, 3, Rational(8,3))
|
|
@@ -210,7 +210,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
210
210
|
assert_raise(ArgumentError) { 1r < "2" }
|
|
211
211
|
end
|
|
212
212
|
|
|
213
|
-
assert '
|
|
213
|
+
assert 'Integer#<(Rational)' do
|
|
214
214
|
assert_not_operator(1, :<, Rational(2,3))
|
|
215
215
|
assert_not_operator(2, :<, 2r)
|
|
216
216
|
assert_operator(-3, :<, Rational(2,3))
|
|
@@ -234,7 +234,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
234
234
|
assert_raise(ArgumentError) { 1r <= "2" }
|
|
235
235
|
end
|
|
236
236
|
|
|
237
|
-
assert '
|
|
237
|
+
assert 'Integer#<=(Rational)' do
|
|
238
238
|
assert_not_operator(1, :<=, Rational(2,3))
|
|
239
239
|
assert_operator(2, :<=, 2r)
|
|
240
240
|
assert_operator(-3, :<=, Rational(2,3))
|
|
@@ -258,7 +258,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
258
258
|
assert_raise(ArgumentError) { 1r > "2" }
|
|
259
259
|
end
|
|
260
260
|
|
|
261
|
-
assert '
|
|
261
|
+
assert 'Integer#>(Rational)' do
|
|
262
262
|
assert_operator(1, :>, Rational(2,3))
|
|
263
263
|
assert_not_operator(2, :>, 2r)
|
|
264
264
|
assert_not_operator(-3, :>, Rational(2,3))
|
|
@@ -282,7 +282,7 @@ def assert_cmp(exp, o1, o2)
|
|
|
282
282
|
assert_raise(ArgumentError) { 1r >= "2" }
|
|
283
283
|
end
|
|
284
284
|
|
|
285
|
-
assert '
|
|
285
|
+
assert 'Integer#>=(Rational)' do
|
|
286
286
|
assert_operator(1, :>=, Rational(2,3))
|
|
287
287
|
assert_operator(2, :>=, 2r)
|
|
288
288
|
assert_not_operator(-3, :>=, Rational(2,3))
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# Sleep Module for mruby
|
|
2
|
+
|
|
2
3
|
mruby sleep module
|
|
3
4
|
|
|
4
5
|
## install by mrbgems
|
|
5
|
-
|
|
6
|
+
|
|
7
|
+
- add conf.gem line to your build configuration.
|
|
8
|
+
|
|
6
9
|
```ruby
|
|
7
10
|
MRuby::Build.new do |conf|
|
|
8
11
|
|
|
@@ -20,8 +23,7 @@ usleep(10000)
|
|
|
20
23
|
```
|
|
21
24
|
|
|
22
25
|
# License
|
|
23
|
-
under the MIT License:
|
|
24
|
-
|
|
25
|
-
* http://www.opensource.org/licenses/mit-license.php
|
|
26
26
|
|
|
27
|
+
under the MIT License:
|
|
27
28
|
|
|
29
|
+
* https://www.opensource.org/licenses/mit-license.php
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
24
24
|
** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
25
25
|
**
|
|
26
|
-
** [ MIT license:
|
|
26
|
+
** [ MIT license: https://www.opensource.org/licenses/mit-license.php ]
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
29
|
#include <time.h>
|
|
@@ -44,7 +44,7 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self)
|
|
|
44
44
|
{
|
|
45
45
|
time_t beg = time(0);
|
|
46
46
|
time_t end;
|
|
47
|
-
#ifndef
|
|
47
|
+
#ifndef MRB_NO_FLOAT
|
|
48
48
|
mrb_float sec;
|
|
49
49
|
|
|
50
50
|
mrb_get_args(mrb, "f", &sec);
|
|
@@ -66,7 +66,7 @@ mrb_f_sleep(mrb_state *mrb, mrb_value self)
|
|
|
66
66
|
#endif
|
|
67
67
|
end = time(0) - beg;
|
|
68
68
|
|
|
69
|
-
return mrb_fixnum_value(end);
|
|
69
|
+
return mrb_fixnum_value((mrb_int)end);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/* mruby special; needed for mruby without float numbers */
|
|
@@ -120,7 +120,7 @@ mrb_f_usleep(mrb_state *mrb, mrb_value self)
|
|
|
120
120
|
}
|
|
121
121
|
#endif
|
|
122
122
|
|
|
123
|
-
return mrb_fixnum_value(slp_tm);
|
|
123
|
+
return mrb_fixnum_value((mrb_int)slp_tm);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
void
|
|
@@ -4,8 +4,8 @@ mruby-socket
|
|
|
4
4
|
"mruby-socket" mrbgem provides BSD socket interface for mruby.
|
|
5
5
|
API is compatible with CRuby's "socket" library.
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
## Example
|
|
8
|
+
|
|
9
9
|
```sh
|
|
10
10
|
% vi kame.rb
|
|
11
11
|
s = TCPSocket.open("www.kame.net", 80)
|
|
@@ -20,18 +20,19 @@ Date: Tue, 21 May 2013 04:31:30 GMT
|
|
|
20
20
|
```
|
|
21
21
|
|
|
22
22
|
## Requirement
|
|
23
|
+
|
|
23
24
|
- [mruby-io](https://github.com/mruby/mruby/tree/master/mrbgems/mruby-io) mrbgem
|
|
24
25
|
- [iij/mruby-mtest](https://github.com/iij/mruby-mtest) mrgbem to run tests
|
|
25
26
|
- system must have RFC3493 basic socket interface
|
|
26
27
|
- and some POSIX API...
|
|
27
28
|
|
|
28
29
|
## TODO
|
|
30
|
+
|
|
29
31
|
- add missing methods
|
|
30
32
|
- write more tests
|
|
31
33
|
- fix possible descriptor leakage (see XXX comments)
|
|
32
34
|
- `UNIXSocket#recv_io` `UNIXSocket#send_io`
|
|
33
35
|
|
|
34
|
-
|
|
35
36
|
## License
|
|
36
37
|
|
|
37
38
|
Copyright (c) 2013 Internet Initiative Japan Inc.
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
#include "mruby/string.h"
|
|
43
43
|
#include "mruby/variable.h"
|
|
44
44
|
#include "mruby/error.h"
|
|
45
|
+
#include "mruby/presym.h"
|
|
45
46
|
|
|
46
47
|
#include "mruby/ext/io.h"
|
|
47
48
|
|
|
@@ -53,7 +54,7 @@
|
|
|
53
54
|
#endif
|
|
54
55
|
#endif
|
|
55
56
|
|
|
56
|
-
#define E_SOCKET_ERROR (
|
|
57
|
+
#define E_SOCKET_ERROR mrb_class_get_id(mrb, MRB_SYM(SocketError))
|
|
57
58
|
|
|
58
59
|
#if !defined(mrb_cptr)
|
|
59
60
|
#define mrb_cptr_value(m,p) mrb_voidp_value((m),(p))
|
|
@@ -140,50 +141,50 @@ mrb_addrinfo_getaddrinfo(mrb_state *mrb, mrb_value klass)
|
|
|
140
141
|
|
|
141
142
|
if (mrb_string_p(service)) {
|
|
142
143
|
servname = RSTRING_CSTR(mrb, service);
|
|
143
|
-
} else if (
|
|
144
|
+
} else if (mrb_integer_p(service)) {
|
|
144
145
|
servname = RSTRING_PTR(mrb_fixnum_to_str(mrb, service, 10));
|
|
145
146
|
} else if (mrb_nil_p(service)) {
|
|
146
147
|
servname = NULL;
|
|
147
148
|
} else {
|
|
148
|
-
mrb_raise(mrb, E_TYPE_ERROR, "service must be String,
|
|
149
|
+
mrb_raise(mrb, E_TYPE_ERROR, "service must be String, Integer, or nil");
|
|
149
150
|
}
|
|
150
151
|
|
|
151
152
|
memset(&hints, 0, sizeof(hints));
|
|
152
153
|
hints.ai_flags = (int)flags;
|
|
153
154
|
|
|
154
|
-
if (
|
|
155
|
-
hints.ai_family = (int)
|
|
155
|
+
if (mrb_integer_p(family)) {
|
|
156
|
+
hints.ai_family = (int)mrb_integer(family);
|
|
156
157
|
}
|
|
157
158
|
|
|
158
|
-
if (
|
|
159
|
-
hints.ai_socktype = (int)
|
|
159
|
+
if (mrb_integer_p(socktype)) {
|
|
160
|
+
hints.ai_socktype = (int)mrb_integer(socktype);
|
|
160
161
|
}
|
|
161
162
|
|
|
162
|
-
if (
|
|
163
|
-
hints.ai_protocol = (int)
|
|
163
|
+
if (mrb_integer_p(protocol)) {
|
|
164
|
+
hints.ai_protocol = (int)mrb_integer(protocol);
|
|
164
165
|
}
|
|
165
166
|
|
|
166
|
-
lastai = mrb_cv_get(mrb, klass,
|
|
167
|
+
lastai = mrb_cv_get(mrb, klass, MRB_SYM(_lastai));
|
|
167
168
|
if (mrb_cptr_p(lastai)) {
|
|
168
169
|
freeaddrinfo((struct addrinfo*)mrb_cptr(lastai));
|
|
169
|
-
mrb_cv_set(mrb, klass,
|
|
170
|
+
mrb_cv_set(mrb, klass, MRB_SYM(_lastai), mrb_nil_value());
|
|
170
171
|
}
|
|
171
172
|
|
|
172
173
|
error = getaddrinfo(hostname, servname, &hints, &res0);
|
|
173
174
|
if (error) {
|
|
174
175
|
mrb_raisef(mrb, E_SOCKET_ERROR, "getaddrinfo: %s", gai_strerror(error));
|
|
175
176
|
}
|
|
176
|
-
mrb_cv_set(mrb, klass,
|
|
177
|
+
mrb_cv_set(mrb, klass, MRB_SYM(_lastai), mrb_cptr_value(mrb, res0));
|
|
177
178
|
|
|
178
179
|
for (res = res0; res != NULL; res = res->ai_next) {
|
|
179
180
|
sa = mrb_str_new(mrb, (char*)res->ai_addr, res->ai_addrlen);
|
|
180
|
-
ai =
|
|
181
|
+
ai = mrb_funcall_id(mrb, klass, MRB_SYM(new), 4, sa, mrb_fixnum_value(res->ai_family), mrb_fixnum_value(res->ai_socktype), mrb_fixnum_value(res->ai_protocol));
|
|
181
182
|
mrb_ary_push(mrb, ary, ai);
|
|
182
183
|
mrb_gc_arena_restore(mrb, arena_idx);
|
|
183
184
|
}
|
|
184
185
|
|
|
185
186
|
freeaddrinfo(res0);
|
|
186
|
-
mrb_cv_set(mrb, klass,
|
|
187
|
+
mrb_cv_set(mrb, klass, MRB_SYM(_lastai), mrb_nil_value());
|
|
187
188
|
|
|
188
189
|
return ary;
|
|
189
190
|
}
|
|
@@ -197,10 +198,10 @@ mrb_addrinfo_getnameinfo(mrb_state *mrb, mrb_value self)
|
|
|
197
198
|
|
|
198
199
|
flags = 0;
|
|
199
200
|
mrb_get_args(mrb, "|i", &flags);
|
|
200
|
-
host =
|
|
201
|
-
serv =
|
|
201
|
+
host = mrb_str_new_capa(mrb, NI_MAXHOST);
|
|
202
|
+
serv = mrb_str_new_capa(mrb, NI_MAXSERV);
|
|
202
203
|
|
|
203
|
-
sastr = mrb_iv_get(mrb, self,
|
|
204
|
+
sastr = mrb_iv_get(mrb, self, MRB_IVSYM(sockaddr));
|
|
204
205
|
if (!mrb_string_p(sastr)) {
|
|
205
206
|
mrb_raise(mrb, E_SOCKET_ERROR, "invalid sockaddr");
|
|
206
207
|
}
|
|
@@ -222,7 +223,7 @@ mrb_addrinfo_unix_path(mrb_state *mrb, mrb_value self)
|
|
|
222
223
|
{
|
|
223
224
|
mrb_value sastr;
|
|
224
225
|
|
|
225
|
-
sastr = mrb_iv_get(mrb, self,
|
|
226
|
+
sastr = mrb_iv_get(mrb, self, MRB_IVSYM(sockaddr));
|
|
226
227
|
if (((struct sockaddr *)RSTRING_PTR(sastr))->sa_family != AF_UNIX)
|
|
227
228
|
mrb_raise(mrb, E_SOCKET_ERROR, "need AF_UNIX address");
|
|
228
229
|
if (RSTRING_LEN(sastr) < (mrb_int)offsetof(struct sockaddr_un, sun_path) + 1) {
|
|
@@ -254,7 +255,7 @@ sa2addrlist(mrb_state *mrb, const struct sockaddr *sa, socklen_t salen)
|
|
|
254
255
|
return mrb_nil_value();
|
|
255
256
|
}
|
|
256
257
|
port = ntohs(port);
|
|
257
|
-
host =
|
|
258
|
+
host = mrb_str_new_capa(mrb, NI_MAXHOST);
|
|
258
259
|
if (getnameinfo(sa, salen, RSTRING_PTR(host), NI_MAXHOST, NULL, 0, NI_NUMERICHOST) == -1)
|
|
259
260
|
mrb_sys_fail(mrb, "getnameinfo");
|
|
260
261
|
mrb_str_resize(mrb, host, strlen(RSTRING_PTR(host)));
|
|
@@ -269,7 +270,7 @@ sa2addrlist(mrb_state *mrb, const struct sockaddr *sa, socklen_t salen)
|
|
|
269
270
|
static int
|
|
270
271
|
socket_fd(mrb_state *mrb, mrb_value sock)
|
|
271
272
|
{
|
|
272
|
-
return (int)
|
|
273
|
+
return (int)mrb_integer(mrb_funcall_id(mrb, sock, MRB_SYM(fileno), 0));
|
|
273
274
|
}
|
|
274
275
|
|
|
275
276
|
static int
|
|
@@ -347,10 +348,10 @@ mrb_basicsocket_getsockopt(mrb_state *mrb, mrb_value self)
|
|
|
347
348
|
optlen = sizeof(opt);
|
|
348
349
|
if (getsockopt(s, (int)level, (int)optname, opt, &optlen) == -1)
|
|
349
350
|
mrb_sys_fail(mrb, "getsockopt");
|
|
350
|
-
c = mrb_const_get(mrb, mrb_obj_value(
|
|
351
|
+
c = mrb_const_get(mrb, mrb_obj_value(mrb_class_get_id(mrb, MRB_SYM(Socket))), MRB_SYM(Option));
|
|
351
352
|
family = socket_family(s);
|
|
352
353
|
data = mrb_str_new(mrb, opt, optlen);
|
|
353
|
-
return
|
|
354
|
+
return mrb_funcall_id(mrb, c, MRB_SYM(new), 4, mrb_fixnum_value(family), mrb_fixnum_value(level), mrb_fixnum_value(optname), data);
|
|
354
355
|
}
|
|
355
356
|
|
|
356
357
|
static mrb_value
|
|
@@ -361,7 +362,7 @@ mrb_basicsocket_recv(mrb_state *mrb, mrb_value self)
|
|
|
361
362
|
mrb_value buf;
|
|
362
363
|
|
|
363
364
|
mrb_get_args(mrb, "i|i", &maxlen, &flags);
|
|
364
|
-
buf =
|
|
365
|
+
buf = mrb_str_new_capa(mrb, maxlen);
|
|
365
366
|
n = recv(socket_fd(mrb, self), RSTRING_PTR(buf), (fsize_t)maxlen, (int)flags);
|
|
366
367
|
if (n == -1)
|
|
367
368
|
mrb_sys_fail(mrb, "recv");
|
|
@@ -378,9 +379,9 @@ mrb_basicsocket_recvfrom(mrb_state *mrb, mrb_value self)
|
|
|
378
379
|
socklen_t socklen;
|
|
379
380
|
|
|
380
381
|
mrb_get_args(mrb, "i|i", &maxlen, &flags);
|
|
381
|
-
buf =
|
|
382
|
+
buf = mrb_str_new_capa(mrb, maxlen);
|
|
382
383
|
socklen = sizeof(struct sockaddr_storage);
|
|
383
|
-
sa =
|
|
384
|
+
sa = mrb_str_new_capa(mrb, socklen);
|
|
384
385
|
n = recvfrom(socket_fd(mrb, self), RSTRING_PTR(buf), (fsize_t)maxlen, (int)flags, (struct sockaddr *)RSTRING_PTR(sa), &socklen);
|
|
385
386
|
if (n == -1)
|
|
386
387
|
mrb_sys_fail(mrb, "recvfrom");
|
|
@@ -449,21 +450,21 @@ mrb_basicsocket_setsockopt(mrb_state *mrb, mrb_value self)
|
|
|
449
450
|
|
|
450
451
|
argc = mrb_get_args(mrb, "o|io", &so, &optname, &optval);
|
|
451
452
|
if (argc == 3) {
|
|
452
|
-
if (!
|
|
453
|
+
if (!mrb_integer_p(so)) {
|
|
453
454
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "level is not an integer");
|
|
454
455
|
}
|
|
455
|
-
level =
|
|
456
|
+
level = mrb_integer(so);
|
|
456
457
|
if (mrb_string_p(optval)) {
|
|
457
458
|
/* that's good */
|
|
458
459
|
} else if (mrb_true_p(optval) || mrb_false_p(optval)) {
|
|
459
460
|
mrb_int i = mrb_test(optval) ? 1 : 0;
|
|
460
461
|
optval = mrb_str_new(mrb, (char*)&i, sizeof(i));
|
|
461
|
-
} else if (
|
|
462
|
+
} else if (mrb_integer_p(optval)) {
|
|
462
463
|
if (optname == IP_MULTICAST_TTL || optname == IP_MULTICAST_LOOP) {
|
|
463
|
-
char uc = (char)
|
|
464
|
+
char uc = (char)mrb_integer(optval);
|
|
464
465
|
optval = mrb_str_new(mrb, &uc, sizeof(uc));
|
|
465
466
|
} else {
|
|
466
|
-
mrb_int i =
|
|
467
|
+
mrb_int i = mrb_integer(optval);
|
|
467
468
|
optval = mrb_str_new(mrb, (char*)&i, sizeof(i));
|
|
468
469
|
}
|
|
469
470
|
} else {
|
|
@@ -472,9 +473,9 @@ mrb_basicsocket_setsockopt(mrb_state *mrb, mrb_value self)
|
|
|
472
473
|
} else if (argc == 1) {
|
|
473
474
|
if (strcmp(mrb_obj_classname(mrb, so), "Socket::Option") != 0)
|
|
474
475
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "not an instance of Socket::Option");
|
|
475
|
-
level =
|
|
476
|
-
optname =
|
|
477
|
-
optval =
|
|
476
|
+
level = mrb_integer(mrb_funcall_id(mrb, so, MRB_SYM(level), 0));
|
|
477
|
+
optname = mrb_integer(mrb_funcall_id(mrb, so, MRB_SYM(optname), 0));
|
|
478
|
+
optval = mrb_funcall_id(mrb, so, MRB_SYM(data), 0);
|
|
478
479
|
} else {
|
|
479
480
|
mrb_argnum_error(mrb, argc, 3, 3);
|
|
480
481
|
}
|
|
@@ -515,7 +516,8 @@ static mrb_value
|
|
|
515
516
|
mrb_ipsocket_ntop(mrb_state *mrb, mrb_value klass)
|
|
516
517
|
{
|
|
517
518
|
mrb_int af, n;
|
|
518
|
-
char *addr
|
|
519
|
+
const char *addr;
|
|
520
|
+
char buf[50];
|
|
519
521
|
|
|
520
522
|
mrb_get_args(mrb, "is", &af, &addr, &n);
|
|
521
523
|
if ((af == AF_INET && n != 4) || (af == AF_INET6 && n != 16))
|
|
@@ -529,7 +531,8 @@ static mrb_value
|
|
|
529
531
|
mrb_ipsocket_pton(mrb_state *mrb, mrb_value klass)
|
|
530
532
|
{
|
|
531
533
|
mrb_int af, n;
|
|
532
|
-
char *bp
|
|
534
|
+
const char *bp;
|
|
535
|
+
char buf[50];
|
|
533
536
|
|
|
534
537
|
mrb_get_args(mrb, "is", &af, &bp, &n);
|
|
535
538
|
if ((size_t)n > sizeof(buf) - 1)
|
|
@@ -568,7 +571,7 @@ mrb_ipsocket_recvfrom(mrb_state *mrb, mrb_value self)
|
|
|
568
571
|
fd = socket_fd(mrb, self);
|
|
569
572
|
flags = 0;
|
|
570
573
|
mrb_get_args(mrb, "i|i", &maxlen, &flags);
|
|
571
|
-
buf =
|
|
574
|
+
buf = mrb_str_new_capa(mrb, maxlen);
|
|
572
575
|
socklen = sizeof(ss);
|
|
573
576
|
n = recvfrom(fd, RSTRING_PTR(buf), (fsize_t)maxlen, (int)flags,
|
|
574
577
|
(struct sockaddr *)&ss, &socklen);
|
|
@@ -594,7 +597,7 @@ mrb_socket_gethostname(mrb_state *mrb, mrb_value cls)
|
|
|
594
597
|
#else
|
|
595
598
|
bufsize = 256;
|
|
596
599
|
#endif
|
|
597
|
-
buf =
|
|
600
|
+
buf = mrb_str_new_capa(mrb, (mrb_int)bufsize);
|
|
598
601
|
if (gethostname(RSTRING_PTR(buf), (fsize_t)bufsize) != 0)
|
|
599
602
|
mrb_sys_fail(mrb, "gethostname");
|
|
600
603
|
mrb_str_resize(mrb, buf, (mrb_int)strlen(RSTRING_PTR(buf)));
|
|
@@ -625,7 +628,7 @@ mrb_socket_accept2(mrb_state *mrb, mrb_value klass)
|
|
|
625
628
|
|
|
626
629
|
mrb_get_args(mrb, "i", &s0);
|
|
627
630
|
socklen = sizeof(struct sockaddr_storage);
|
|
628
|
-
sastr =
|
|
631
|
+
sastr = mrb_str_new_capa(mrb, socklen);
|
|
629
632
|
s1 = (int)accept(s0, (struct sockaddr *)RSTRING_PTR(sastr), &socklen);
|
|
630
633
|
if (s1 == -1) {
|
|
631
634
|
mrb_sys_fail(mrb, "accept");
|
|
@@ -704,7 +707,7 @@ mrb_socket_sockaddr_un(mrb_state *mrb, mrb_value klass)
|
|
|
704
707
|
if ((size_t)RSTRING_LEN(path) > sizeof(sunp->sun_path) - 1) {
|
|
705
708
|
mrb_raisef(mrb, E_ARGUMENT_ERROR, "too long unix socket path (max: %d bytes)", (int)sizeof(sunp->sun_path) - 1);
|
|
706
709
|
}
|
|
707
|
-
s =
|
|
710
|
+
s = mrb_str_new_capa(mrb, sizeof(struct sockaddr_un));
|
|
708
711
|
sunp = (struct sockaddr_un *)RSTRING_PTR(s);
|
|
709
712
|
#if HAVE_SA_LEN
|
|
710
713
|
sunp->sun_len = sizeof(struct sockaddr_un);
|
|
@@ -778,7 +781,6 @@ mrb_win32_basicsocket_close(mrb_state *mrb, mrb_value self)
|
|
|
778
781
|
return mrb_nil_value();
|
|
779
782
|
}
|
|
780
783
|
|
|
781
|
-
#define E_EOF_ERROR (mrb_class_get(mrb, "EOFError"))
|
|
782
784
|
static mrb_value
|
|
783
785
|
mrb_win32_basicsocket_sysread(mrb_state *mrb, mrb_value self)
|
|
784
786
|
{
|
|
@@ -841,7 +843,7 @@ mrb_win32_basicsocket_syswrite(mrb_state *mrb, mrb_value self)
|
|
|
841
843
|
n = send(sd, RSTRING_PTR(str), (int)RSTRING_LEN(str), 0);
|
|
842
844
|
if (n == SOCKET_ERROR)
|
|
843
845
|
mrb_sys_fail(mrb, "send");
|
|
844
|
-
return
|
|
846
|
+
return mrb_int_value(mrb, n);
|
|
845
847
|
}
|
|
846
848
|
|
|
847
849
|
#endif
|
|
@@ -861,14 +863,14 @@ mrb_mruby_socket_gem_init(mrb_state* mrb)
|
|
|
861
863
|
#endif
|
|
862
864
|
|
|
863
865
|
ai = mrb_define_class(mrb, "Addrinfo", mrb->object_class);
|
|
864
|
-
mrb_mod_cv_set(mrb, ai,
|
|
866
|
+
mrb_mod_cv_set(mrb, ai, MRB_SYM(_lastai), mrb_nil_value());
|
|
865
867
|
mrb_define_class_method(mrb, ai, "getaddrinfo", mrb_addrinfo_getaddrinfo, MRB_ARGS_REQ(2)|MRB_ARGS_OPT(4));
|
|
866
868
|
mrb_define_method(mrb, ai, "getnameinfo", mrb_addrinfo_getnameinfo, MRB_ARGS_OPT(1));
|
|
867
869
|
#ifndef _WIN32
|
|
868
870
|
mrb_define_method(mrb, ai, "unix_path", mrb_addrinfo_unix_path, MRB_ARGS_NONE());
|
|
869
871
|
#endif
|
|
870
872
|
|
|
871
|
-
io =
|
|
873
|
+
io = mrb_class_get_id(mrb, MRB_SYM(IO));
|
|
872
874
|
|
|
873
875
|
bsock = mrb_define_class(mrb, "BasicSocket", io);
|
|
874
876
|
mrb_define_method(mrb, bsock, "_recvfrom", mrb_basicsocket_recvfrom, MRB_ARGS_REQ(1)|MRB_ARGS_OPT(1));
|
|
@@ -937,7 +939,7 @@ mrb_mruby_socket_gem_init(mrb_state* mrb)
|
|
|
937
939
|
|
|
938
940
|
#define define_const(SYM) \
|
|
939
941
|
do { \
|
|
940
|
-
mrb_define_const(mrb, constants, #SYM,
|
|
942
|
+
mrb_define_const(mrb, constants, #SYM, mrb_int_value(mrb, SYM)); \
|
|
941
943
|
} while (0)
|
|
942
944
|
|
|
943
945
|
#include "const.cstub"
|
|
@@ -947,7 +949,7 @@ void
|
|
|
947
949
|
mrb_mruby_socket_gem_final(mrb_state* mrb)
|
|
948
950
|
{
|
|
949
951
|
mrb_value ai;
|
|
950
|
-
ai = mrb_mod_cv_get(mrb,
|
|
952
|
+
ai = mrb_mod_cv_get(mrb, mrb_class_get_id(mrb, MRB_SYM(Addrinfo)), MRB_SYM(_lastai));
|
|
951
953
|
if (mrb_cptr_p(ai)) {
|
|
952
954
|
freeaddrinfo((struct addrinfo*)mrb_cptr(ai));
|
|
953
955
|
}
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
#include <mruby/string.h>
|
|
11
11
|
#include <mruby/hash.h>
|
|
12
12
|
#include <mruby/numeric.h>
|
|
13
|
-
#
|
|
13
|
+
#include <mruby/presym.h>
|
|
14
|
+
#ifndef MRB_NO_FLOAT
|
|
14
15
|
#include <math.h>
|
|
15
16
|
#endif
|
|
16
17
|
#include <ctype.h>
|
|
@@ -20,7 +21,7 @@
|
|
|
20
21
|
#define EXTENDSIGN(n, l) (((~0U << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0U << (n)))
|
|
21
22
|
|
|
22
23
|
mrb_value mrb_str_format(mrb_state *, mrb_int, const mrb_value *, mrb_value);
|
|
23
|
-
#ifndef
|
|
24
|
+
#ifndef MRB_NO_FLOAT
|
|
24
25
|
static void fmt_setup(char*,size_t,int,int,mrb_int,mrb_int);
|
|
25
26
|
#endif
|
|
26
27
|
|
|
@@ -74,20 +75,36 @@ static mrb_value
|
|
|
74
75
|
mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base)
|
|
75
76
|
{
|
|
76
77
|
char buf[66], *b = buf + sizeof buf;
|
|
77
|
-
mrb_int num =
|
|
78
|
+
mrb_int num = mrb_integer(x);
|
|
79
|
+
const int mask = base -1;
|
|
80
|
+
int shift;
|
|
81
|
+
#ifdef MRB_INT64
|
|
78
82
|
uint64_t val = (uint64_t)num;
|
|
83
|
+
#else
|
|
84
|
+
uint32_t val = (uint32_t)num;
|
|
85
|
+
#endif
|
|
79
86
|
char d;
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
switch (base) {
|
|
89
|
+
case 2:
|
|
90
|
+
shift = 1;
|
|
91
|
+
break;
|
|
92
|
+
case 8:
|
|
93
|
+
shift = 3;
|
|
94
|
+
break;
|
|
95
|
+
case 16:
|
|
96
|
+
shift = 4;
|
|
97
|
+
break;
|
|
98
|
+
default:
|
|
82
99
|
mrb_raisef(mrb, E_ARGUMENT_ERROR, "invalid radix %d", base);
|
|
83
100
|
}
|
|
84
|
-
if (
|
|
101
|
+
if (num == 0) {
|
|
85
102
|
return mrb_str_new_lit(mrb, "0");
|
|
86
103
|
}
|
|
87
104
|
*--b = '\0';
|
|
88
105
|
do {
|
|
89
|
-
*--b = mrb_digitmap[(int)(val
|
|
90
|
-
} while (val
|
|
106
|
+
*--b = mrb_digitmap[(int)(val & mask)];
|
|
107
|
+
} while (val >>= shift);
|
|
91
108
|
|
|
92
109
|
if (num < 0) {
|
|
93
110
|
b = remove_sign_bits(b, base);
|
|
@@ -192,20 +209,14 @@ check_name_arg(mrb_state *mrb, int posarg, const char *name, size_t len)
|
|
|
192
209
|
#define GETNTHARG(nth) \
|
|
193
210
|
((nth >= argc) ? (mrb_raise(mrb, E_ARGUMENT_ERROR, "too few arguments"), mrb_undef_value()) : argv[nth])
|
|
194
211
|
|
|
195
|
-
#define
|
|
212
|
+
#define CHECKNAMEARG(name, len) (\
|
|
196
213
|
check_name_arg(mrb, posarg, name, len),\
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
#define GETNUM(n, val) \
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
} \
|
|
204
|
-
n = 10 * n + (*p - '0'); \
|
|
205
|
-
} \
|
|
206
|
-
if (p >= end) { \
|
|
207
|
-
mrb_raise(mrb, E_ARGUMENT_ERROR, "malformed format string - %*[0-9]"); \
|
|
208
|
-
}
|
|
214
|
+
posarg = -2)
|
|
215
|
+
|
|
216
|
+
#define GETNUM(n, val) do { \
|
|
217
|
+
if (!(p = get_num(mrb, p, end, &(n)))) \
|
|
218
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, #val " too big 1"); \
|
|
219
|
+
} while(0)
|
|
209
220
|
|
|
210
221
|
#define GETASTER(num) do { \
|
|
211
222
|
mrb_value tmp_v; \
|
|
@@ -222,12 +233,32 @@ check_name_arg(mrb_state *mrb, int posarg, const char *name, size_t len)
|
|
|
222
233
|
num = mrb_int(mrb, tmp_v); \
|
|
223
234
|
} while (0)
|
|
224
235
|
|
|
225
|
-
static
|
|
236
|
+
static const char *
|
|
237
|
+
get_num(mrb_state *mrb, const char *p, const char *end, mrb_int *valp)
|
|
238
|
+
{
|
|
239
|
+
mrb_int next_n = *valp;
|
|
240
|
+
for (; p < end && ISDIGIT(*p); p++) {
|
|
241
|
+
if (mrb_int_mul_overflow(10, next_n, &next_n)) {
|
|
242
|
+
return NULL;
|
|
243
|
+
}
|
|
244
|
+
if (MRB_INT_MAX - (*p - '0') < next_n) {
|
|
245
|
+
return NULL;
|
|
246
|
+
}
|
|
247
|
+
next_n += *p - '0';
|
|
248
|
+
}
|
|
249
|
+
if (p >= end) {
|
|
250
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, "malformed format string - %%*[0-9]");
|
|
251
|
+
}
|
|
252
|
+
*valp = next_n;
|
|
253
|
+
return p;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
static void
|
|
226
257
|
get_hash(mrb_state *mrb, mrb_value *hash, mrb_int argc, const mrb_value *argv)
|
|
227
258
|
{
|
|
228
259
|
mrb_value tmp;
|
|
229
260
|
|
|
230
|
-
if (!mrb_undef_p(*hash)) return
|
|
261
|
+
if (!mrb_undef_p(*hash)) return;
|
|
231
262
|
if (argc != 2) {
|
|
232
263
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "one hash required");
|
|
233
264
|
}
|
|
@@ -235,7 +266,7 @@ get_hash(mrb_state *mrb, mrb_value *hash, mrb_int argc, const mrb_value *argv)
|
|
|
235
266
|
if (mrb_nil_p(tmp)) {
|
|
236
267
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "one hash required");
|
|
237
268
|
}
|
|
238
|
-
|
|
269
|
+
*hash = tmp;
|
|
239
270
|
}
|
|
240
271
|
|
|
241
272
|
/*
|
|
@@ -492,18 +523,18 @@ get_hash(mrb_state *mrb, mrb_value *hash, mrb_int argc, const mrb_value *argv)
|
|
|
492
523
|
* For more complex formatting, Ruby supports a reference by name.
|
|
493
524
|
* %<name>s style uses format style, but %{name} style doesn't.
|
|
494
525
|
*
|
|
495
|
-
*
|
|
526
|
+
* Examples:
|
|
496
527
|
* sprintf("%<foo>d : %<bar>f", { :foo => 1, :bar => 2 })
|
|
497
528
|
* #=> 1 : 2.000000
|
|
498
529
|
* sprintf("%{foo}f", { :foo => 1 })
|
|
499
530
|
* # => "1f"
|
|
500
531
|
*/
|
|
501
532
|
|
|
502
|
-
mrb_value
|
|
533
|
+
static mrb_value
|
|
503
534
|
mrb_f_sprintf(mrb_state *mrb, mrb_value obj)
|
|
504
535
|
{
|
|
505
536
|
mrb_int argc;
|
|
506
|
-
mrb_value *argv;
|
|
537
|
+
const mrb_value *argv;
|
|
507
538
|
|
|
508
539
|
mrb_get_args(mrb, "*", &argv, &argc);
|
|
509
540
|
|
|
@@ -519,7 +550,7 @@ mrb_f_sprintf(mrb_state *mrb, mrb_value obj)
|
|
|
519
550
|
static int
|
|
520
551
|
mrb_int2str(char *buf, size_t len, mrb_int n)
|
|
521
552
|
{
|
|
522
|
-
#ifdef
|
|
553
|
+
#ifdef MRB_NO_STDIO
|
|
523
554
|
char *bufend = buf + len;
|
|
524
555
|
char *p = bufend - 1;
|
|
525
556
|
|
|
@@ -557,7 +588,7 @@ mrb_int2str(char *buf, size_t len, mrb_int n)
|
|
|
557
588
|
return bufend - p - 1;
|
|
558
589
|
#else
|
|
559
590
|
return snprintf(buf, len, "%" MRB_PRId, n);
|
|
560
|
-
#endif /*
|
|
591
|
+
#endif /* MRB_NO_STDIO */
|
|
561
592
|
}
|
|
562
593
|
|
|
563
594
|
mrb_value
|
|
@@ -577,19 +608,19 @@ mrb_str_format(mrb_state *mrb, mrb_int argc, const mrb_value *argv, mrb_value fm
|
|
|
577
608
|
mrb_value str;
|
|
578
609
|
mrb_value hash = mrb_undef_value();
|
|
579
610
|
|
|
580
|
-
#define CHECK_FOR_WIDTH(f)
|
|
581
|
-
if ((f) & FWIDTH) {
|
|
582
|
-
mrb_raise(mrb, E_ARGUMENT_ERROR, "width given twice");
|
|
583
|
-
|
|
584
|
-
if ((f) & FPREC0) {
|
|
585
|
-
mrb_raise(mrb, E_ARGUMENT_ERROR, "width after precision");
|
|
611
|
+
#define CHECK_FOR_WIDTH(f) \
|
|
612
|
+
if ((f) & FWIDTH) { \
|
|
613
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, "width given twice"); \
|
|
614
|
+
} \
|
|
615
|
+
if ((f) & FPREC0) { \
|
|
616
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, "width after precision"); \
|
|
586
617
|
}
|
|
587
|
-
#define CHECK_FOR_FLAGS(f)
|
|
588
|
-
if ((f) & FWIDTH) {
|
|
589
|
-
mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after width");
|
|
590
|
-
}
|
|
591
|
-
if ((f) & FPREC0) {
|
|
592
|
-
mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after precision");
|
|
618
|
+
#define CHECK_FOR_FLAGS(f) \
|
|
619
|
+
if ((f) & FWIDTH) { \
|
|
620
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after width"); \
|
|
621
|
+
} \
|
|
622
|
+
if ((f) & FPREC0) { \
|
|
623
|
+
mrb_raise(mrb, E_ARGUMENT_ERROR, "flag after precision"); \
|
|
593
624
|
}
|
|
594
625
|
|
|
595
626
|
++argc;
|
|
@@ -676,7 +707,6 @@ retry:
|
|
|
676
707
|
case '{': {
|
|
677
708
|
const char *start = p;
|
|
678
709
|
char term = (*p == '<') ? '>' : '}';
|
|
679
|
-
mrb_value symname;
|
|
680
710
|
|
|
681
711
|
for (; p < end && *p != term; )
|
|
682
712
|
p++;
|
|
@@ -684,10 +714,13 @@ retry:
|
|
|
684
714
|
mrb_raisef(mrb, E_ARGUMENT_ERROR, "name%l after <%n>",
|
|
685
715
|
start, p - start + 1, id);
|
|
686
716
|
}
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
if (
|
|
717
|
+
CHECKNAMEARG(start, p - start + 1);
|
|
718
|
+
get_hash(mrb, &hash, argc, argv);
|
|
719
|
+
id = mrb_intern_check(mrb, start + 1, p - start - 1);
|
|
720
|
+
if (id) {
|
|
721
|
+
nextvalue = mrb_hash_fetch(mrb, hash, mrb_symbol_value(id), mrb_undef_value());
|
|
722
|
+
}
|
|
723
|
+
if (!id || mrb_undef_p(nextvalue)) {
|
|
691
724
|
mrb_raisef(mrb, E_KEY_ERROR, "key%l not found", start, p - start + 1);
|
|
692
725
|
}
|
|
693
726
|
if (term == '}') goto format_s;
|
|
@@ -748,8 +781,8 @@ retry:
|
|
|
748
781
|
mrb_raise(mrb, E_ARGUMENT_ERROR, "%c requires a character");
|
|
749
782
|
}
|
|
750
783
|
}
|
|
751
|
-
else if (
|
|
752
|
-
mrb_int n =
|
|
784
|
+
else if (mrb_integer_p(val)) {
|
|
785
|
+
mrb_int n = mrb_integer(val);
|
|
753
786
|
#ifndef MRB_UTF8_STRING
|
|
754
787
|
char buf[1];
|
|
755
788
|
|
|
@@ -763,7 +796,7 @@ retry:
|
|
|
763
796
|
tmp = mrb_str_new(mrb, buf, 1);
|
|
764
797
|
}
|
|
765
798
|
else {
|
|
766
|
-
tmp =
|
|
799
|
+
tmp = mrb_funcall_id(mrb, val, MRB_SYM(chr), 0);
|
|
767
800
|
mrb_check_type(mrb, tmp, MRB_TT_STRING);
|
|
768
801
|
}
|
|
769
802
|
#endif
|
|
@@ -863,17 +896,17 @@ retry:
|
|
|
863
896
|
|
|
864
897
|
bin_retry:
|
|
865
898
|
switch (mrb_type(val)) {
|
|
866
|
-
#ifndef
|
|
899
|
+
#ifndef MRB_NO_FLOAT
|
|
867
900
|
case MRB_TT_FLOAT:
|
|
868
901
|
val = mrb_flo_to_fixnum(mrb, val);
|
|
869
|
-
if (
|
|
902
|
+
if (mrb_integer_p(val)) goto bin_retry;
|
|
870
903
|
break;
|
|
871
904
|
#endif
|
|
872
905
|
case MRB_TT_STRING:
|
|
873
906
|
val = mrb_str_to_inum(mrb, val, 0, TRUE);
|
|
874
907
|
goto bin_retry;
|
|
875
|
-
case
|
|
876
|
-
v =
|
|
908
|
+
case MRB_TT_INTEGER:
|
|
909
|
+
v = mrb_integer(val);
|
|
877
910
|
break;
|
|
878
911
|
default:
|
|
879
912
|
val = mrb_Integer(mrb, val);
|
|
@@ -922,27 +955,12 @@ retry:
|
|
|
922
955
|
s = nbuf;
|
|
923
956
|
if (v < 0) {
|
|
924
957
|
dots = 1;
|
|
925
|
-
val = mrb_fix2binstr(mrb,
|
|
958
|
+
val = mrb_fix2binstr(mrb, mrb_int_value(mrb, v), base);
|
|
926
959
|
}
|
|
927
960
|
else {
|
|
928
|
-
val = mrb_fixnum_to_str(mrb,
|
|
961
|
+
val = mrb_fixnum_to_str(mrb, mrb_int_value(mrb, v), base);
|
|
929
962
|
}
|
|
930
963
|
strncpy(++s, RSTRING_PTR(val), sizeof(nbuf)-2);
|
|
931
|
-
if (v < 0) {
|
|
932
|
-
char d;
|
|
933
|
-
|
|
934
|
-
s = remove_sign_bits(s, base);
|
|
935
|
-
switch (base) {
|
|
936
|
-
case 16: d = 'f'; break;
|
|
937
|
-
case 8: d = '7'; break;
|
|
938
|
-
case 2: d = '1'; break;
|
|
939
|
-
default: d = 0; break;
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
if (d && *s != d) {
|
|
943
|
-
*--s = d;
|
|
944
|
-
}
|
|
945
|
-
}
|
|
946
964
|
}
|
|
947
965
|
{
|
|
948
966
|
size_t size;
|
|
@@ -1030,7 +1048,7 @@ retry:
|
|
|
1030
1048
|
}
|
|
1031
1049
|
break;
|
|
1032
1050
|
|
|
1033
|
-
#ifndef
|
|
1051
|
+
#ifndef MRB_NO_FLOAT
|
|
1034
1052
|
case 'f':
|
|
1035
1053
|
case 'g':
|
|
1036
1054
|
case 'G':
|
|
@@ -1131,7 +1149,7 @@ retry:
|
|
|
1131
1149
|
return result;
|
|
1132
1150
|
}
|
|
1133
1151
|
|
|
1134
|
-
#ifndef
|
|
1152
|
+
#ifndef MRB_NO_FLOAT
|
|
1135
1153
|
static void
|
|
1136
1154
|
fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec)
|
|
1137
1155
|
{
|
|
@@ -1160,3 +1178,16 @@ fmt_setup(char *buf, size_t size, int c, int flags, mrb_int width, mrb_int prec)
|
|
|
1160
1178
|
*buf = '\0';
|
|
1161
1179
|
}
|
|
1162
1180
|
#endif
|
|
1181
|
+
|
|
1182
|
+
void
|
|
1183
|
+
mrb_mruby_sprintf_gem_init(mrb_state *mrb)
|
|
1184
|
+
{
|
|
1185
|
+
struct RClass *krn = mrb->kernel_module;
|
|
1186
|
+
mrb_define_module_function(mrb, krn, "sprintf", mrb_f_sprintf, MRB_ARGS_ANY());
|
|
1187
|
+
mrb_define_module_function(mrb, krn, "format", mrb_f_sprintf, MRB_ARGS_ANY());
|
|
1188
|
+
}
|
|
1189
|
+
|
|
1190
|
+
void
|
|
1191
|
+
mrb_mruby_sprintf_gem_final(mrb_state *mrb)
|
|
1192
|
+
{
|
|
1193
|
+
}
|