ruby2d 0.11.2 → 0.12.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/assets/include/GLES2/gl2.h +656 -0
- data/assets/include/GLES2/gl2ext.h +3949 -0
- data/assets/include/GLES2/gl2ext_angle.h +701 -0
- data/assets/include/GLES2/gl2platform.h +27 -0
- data/assets/include/GLES3/gl3.h +1192 -0
- data/assets/include/GLES3/gl31.h +1507 -0
- data/assets/include/GLES3/gl32.h +1808 -0
- data/assets/include/GLES3/gl3platform.h +27 -0
- data/assets/include/KHR/khrplatform.h +290 -0
- data/assets/include/SDL2/SDL.h +1 -0
- data/assets/include/SDL2/SDL_assert.h +4 -2
- data/assets/include/SDL2/SDL_atomic.h +20 -0
- data/assets/include/SDL2/SDL_audio.h +40 -4
- data/assets/include/SDL2/SDL_blendmode.h +4 -6
- data/assets/include/SDL2/SDL_clipboard.h +47 -0
- data/assets/include/SDL2/SDL_config.h +6 -2
- data/assets/include/SDL2/SDL_config_android.h +2 -0
- data/assets/include/SDL2/SDL_config_emscripten.h +2 -0
- data/assets/include/SDL2/SDL_config_iphoneos.h +3 -1
- data/assets/include/SDL2/SDL_config_macosx.h +3 -6
- data/assets/include/SDL2/SDL_config_minimal.h +18 -11
- data/assets/include/SDL2/SDL_config_ngage.h +89 -0
- data/assets/include/SDL2/SDL_config_os2.h +5 -3
- data/assets/include/SDL2/SDL_config_pandora.h +1 -0
- data/assets/include/SDL2/SDL_config_windows.h +71 -45
- data/assets/include/SDL2/SDL_config_wingdk.h +253 -0
- data/assets/include/SDL2/SDL_config_winrt.h +11 -49
- data/assets/include/SDL2/SDL_config_xbox.h +235 -0
- data/assets/include/SDL2/SDL_cpuinfo.h +39 -4
- data/assets/include/SDL2/SDL_egl.h +59 -9
- data/assets/include/SDL2/SDL_endian.h +34 -3
- data/assets/include/SDL2/SDL_events.h +32 -1
- data/assets/include/SDL2/SDL_filesystem.h +5 -1
- data/assets/include/SDL2/SDL_gamecontroller.h +78 -5
- data/assets/include/SDL2/SDL_guid.h +100 -0
- data/assets/include/SDL2/SDL_hints.h +645 -43
- data/assets/include/SDL2/SDL_image.h +2045 -33
- data/assets/include/SDL2/SDL_joystick.h +127 -7
- data/assets/include/SDL2/SDL_keyboard.h +38 -1
- data/assets/include/SDL2/SDL_keycode.h +6 -1
- data/assets/include/SDL2/SDL_log.h +2 -2
- data/assets/include/SDL2/SDL_main.h +42 -2
- data/assets/include/SDL2/SDL_metal.h +2 -1
- data/assets/include/SDL2/SDL_mixer.h +2529 -396
- data/assets/include/SDL2/SDL_mouse.h +12 -1
- data/assets/include/SDL2/SDL_opengl.h +0 -51
- data/assets/include/SDL2/SDL_opengl_glext.h +2260 -231
- data/assets/include/SDL2/SDL_opengles2_gl2.h +374 -339
- data/assets/include/SDL2/SDL_opengles2_gl2ext.h +3479 -1496
- data/assets/include/SDL2/SDL_opengles2_gl2platform.h +6 -9
- data/assets/include/SDL2/SDL_opengles2_khrplatform.h +43 -14
- data/assets/include/SDL2/SDL_platform.h +32 -6
- data/assets/include/SDL2/SDL_rect.h +154 -2
- data/assets/include/SDL2/SDL_render.h +46 -17
- data/assets/include/SDL2/SDL_revision.h +4 -0
- data/assets/include/SDL2/SDL_rwops.h +1 -15
- data/assets/include/SDL2/SDL_scancode.h +46 -21
- data/assets/include/SDL2/SDL_sensor.h +24 -3
- data/assets/include/SDL2/SDL_stdinc.h +119 -8
- data/assets/include/SDL2/SDL_surface.h +3 -1
- data/assets/include/SDL2/SDL_system.h +66 -6
- data/assets/include/SDL2/SDL_syswm.h +2 -0
- data/assets/include/SDL2/SDL_test_common.h +1 -0
- data/assets/include/SDL2/SDL_test_font.h +90 -3
- data/assets/include/SDL2/SDL_thread.h +3 -3
- data/assets/include/SDL2/SDL_touch.h +8 -0
- data/assets/include/SDL2/SDL_ttf.h +2084 -155
- data/assets/include/SDL2/SDL_version.h +19 -3
- data/assets/include/SDL2/SDL_video.h +71 -9
- data/assets/include/SDL2/begin_code.h +4 -4
- data/assets/include/mrbconf.h +15 -17
- data/assets/include/mruby/array.h +8 -21
- data/assets/include/mruby/boxing_nan.h +115 -86
- data/assets/include/mruby/boxing_word.h +104 -78
- data/assets/include/mruby/common.h +6 -0
- data/assets/include/mruby/compile.h +3 -4
- data/assets/include/mruby/debug.h +4 -2
- data/assets/include/mruby/dump.h +5 -2
- data/assets/include/mruby/error.h +12 -2
- data/assets/include/mruby/gc.h +2 -0
- data/assets/include/mruby/hash.h +1 -3
- data/assets/include/mruby/irep.h +4 -4
- data/assets/include/mruby/numeric.h +21 -13
- data/assets/include/mruby/opcode.h +30 -0
- data/assets/include/mruby/ops.h +99 -101
- data/assets/include/mruby/presym/scanning.h +15 -9
- data/assets/include/mruby/proc.h +4 -2
- data/assets/include/mruby/string.h +3 -24
- data/assets/include/mruby/value.h +80 -40
- data/assets/include/mruby/variable.h +0 -15
- data/assets/include/mruby/version.h +5 -5
- data/assets/include/mruby.h +86 -16
- data/assets/macos/universal/bin/mrbc +0 -0
- data/assets/macos/universal/lib/libFLAC.a +0 -0
- data/assets/macos/universal/lib/libSDL2.a +0 -0
- data/assets/macos/universal/lib/libSDL2_image.a +0 -0
- data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
- data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
- data/assets/macos/universal/lib/libavif.a +0 -0
- data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
- data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
- data/assets/macos/universal/lib/libfreetype.a +0 -0
- data/assets/macos/universal/lib/libgraphite2.a +0 -0
- data/assets/macos/universal/lib/libharfbuzz.a +0 -0
- data/assets/macos/universal/lib/libhwy.a +0 -0
- data/assets/macos/universal/lib/libjpeg.a +0 -0
- data/assets/macos/universal/lib/libjxl.a +0 -0
- data/assets/macos/universal/lib/libmodplug.a +0 -0
- data/assets/macos/universal/lib/libmpg123.a +0 -0
- data/assets/macos/universal/lib/libmruby.a +0 -0
- data/assets/macos/universal/lib/libogg.a +0 -0
- data/assets/macos/universal/lib/libpng.a +0 -0
- data/assets/macos/universal/lib/libtiff.a +0 -0
- data/assets/macos/universal/lib/libvorbis.a +0 -0
- data/assets/macos/universal/lib/libvorbisfile.a +0 -0
- data/assets/macos/universal/lib/libwebp.a +0 -0
- data/assets/macos/universal/lib/libzstd.a +0 -0
- data/assets/wasm/libmruby.a +0 -0
- data/assets/wasm/template.html +52 -4
- data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +1 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
- data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
- data/ext/ruby2d/canvas.c +540 -0
- data/ext/ruby2d/extconf.rb +39 -21
- data/ext/ruby2d/gl.c +3 -3
- data/ext/ruby2d/image.c +7 -7
- data/ext/ruby2d/ruby2d.c +741 -24
- data/ext/ruby2d/ruby2d.h +66 -3
- data/ext/ruby2d/sound.c +16 -2
- data/lib/ruby2d/canvas.rb +315 -0
- data/lib/ruby2d/circle.rb +30 -15
- data/lib/ruby2d/cli/build.rb +11 -4
- data/lib/ruby2d/cli/enable_console.rb +3 -1
- data/lib/ruby2d/color.rb +133 -77
- data/lib/ruby2d/core.rb +32 -0
- data/lib/ruby2d/dsl.rb +38 -32
- data/lib/ruby2d/exceptions.rb +2 -1
- data/lib/ruby2d/font.rb +97 -62
- data/lib/ruby2d/image.rb +48 -27
- data/lib/ruby2d/line.rb +84 -45
- data/lib/ruby2d/music.rb +33 -23
- data/lib/ruby2d/pixel.rb +10 -9
- data/lib/ruby2d/pixmap.rb +39 -0
- data/lib/ruby2d/pixmap_atlas.rb +56 -0
- data/lib/ruby2d/quad.rb +98 -49
- data/lib/ruby2d/rectangle.rb +35 -36
- data/lib/ruby2d/renderable.rb +7 -6
- data/lib/ruby2d/sound.rb +23 -17
- data/lib/ruby2d/sprite.rb +181 -140
- data/lib/ruby2d/square.rb +21 -20
- data/lib/ruby2d/text.rb +47 -19
- data/lib/ruby2d/texture.rb +13 -3
- data/lib/ruby2d/tileset.rb +97 -44
- data/lib/ruby2d/triangle.rb +91 -42
- data/lib/ruby2d/version.rb +3 -1
- data/lib/ruby2d/vertices.rb +81 -45
- data/lib/ruby2d/window.rb +508 -371
- data/lib/ruby2d.rb +11 -29
- metadata +84 -16
- data/assets/include/SDL2/SDL_config_psp.h +0 -165
- data/assets/include/SDL2/SDL_config_wiz.h +0 -154
- data/assets/include/glew.h +0 -23686
- data/assets/macos/universal/lib/libpng16.a +0 -0
- data/assets/wasm/build_config.rb +0 -13
- data/assets/windows/glew/README.md +0 -10
- data/assets/windows/glew/glew.h +0 -23686
- data/assets/windows/glew/libglew32.a +0 -0
- data/assets/windows/mingw-w64-x86_64/lib/libpng16.a +0 -0
- data/lib/ruby2d/entity.rb +0 -17
|
@@ -7,7 +7,11 @@
|
|
|
7
7
|
#ifndef MRUBY_BOXING_WORD_H
|
|
8
8
|
#define MRUBY_BOXING_WORD_H
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
|
|
11
|
+
# define MRB_WORDBOX_NO_FLOAT_TRUNCATE
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#if !defined(MRB_NO_FLOAT) && defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
|
|
11
15
|
struct RFloat {
|
|
12
16
|
MRB_OBJECT_HEADER;
|
|
13
17
|
mrb_float f;
|
|
@@ -29,9 +33,9 @@ enum mrb_special_consts {
|
|
|
29
33
|
#if defined(MRB_64BIT) && defined(MRB_INT32)
|
|
30
34
|
#define MRB_FIXNUM_SHIFT 0
|
|
31
35
|
#else
|
|
32
|
-
#define MRB_FIXNUM_SHIFT
|
|
36
|
+
#define MRB_FIXNUM_SHIFT WORDBOX_FIXNUM_SHIFT
|
|
33
37
|
#endif
|
|
34
|
-
#define MRB_SYMBOL_SHIFT
|
|
38
|
+
#define MRB_SYMBOL_SHIFT WORDBOX_SYMBOL_SHIFT
|
|
35
39
|
|
|
36
40
|
#if defined(MRB_64BIT) && defined(MRB_INT64)
|
|
37
41
|
# define MRB_FIXNUM_MIN (INT64_MIN>>MRB_FIXNUM_SHIFT)
|
|
@@ -41,36 +45,68 @@ enum mrb_special_consts {
|
|
|
41
45
|
# define MRB_FIXNUM_MAX (INT32_MAX>>MRB_FIXNUM_SHIFT)
|
|
42
46
|
#endif
|
|
43
47
|
|
|
44
|
-
#define
|
|
45
|
-
#define
|
|
46
|
-
#define
|
|
47
|
-
#
|
|
48
|
-
|
|
48
|
+
#define WORDBOX_FIXNUM_BIT_POS 1
|
|
49
|
+
#define WORDBOX_FIXNUM_SHIFT WORDBOX_FIXNUM_BIT_POS
|
|
50
|
+
#define WORDBOX_FIXNUM_FLAG (1 << (WORDBOX_FIXNUM_BIT_POS - 1))
|
|
51
|
+
#define WORDBOX_FIXNUM_MASK ((1 << WORDBOX_FIXNUM_BIT_POS) - 1)
|
|
52
|
+
|
|
53
|
+
#if defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)
|
|
54
|
+
/* floats are allocated in heaps */
|
|
55
|
+
#define WORDBOX_SYMBOL_BIT_POS 2
|
|
56
|
+
#define WORDBOX_SYMBOL_SHIFT WORDBOX_SYMBOL_BIT_POS
|
|
57
|
+
#define WORDBOX_SYMBOL_FLAG (1 << (WORDBOX_SYMBOL_BIT_POS - 1))
|
|
58
|
+
#define WORDBOX_SYMBOL_MASK ((1 << WORDBOX_SYMBOL_BIT_POS) - 1)
|
|
49
59
|
#else
|
|
50
|
-
#define
|
|
60
|
+
#define WORDBOX_FLOAT_FLAG 2
|
|
61
|
+
#define WORDBOX_FLOAT_MASK 3
|
|
62
|
+
#if defined(MRB_64BIT)
|
|
63
|
+
#define WORDBOX_SYMBOL_SHIFT 32
|
|
64
|
+
#else /* MRB_32BIT */
|
|
65
|
+
#define WORDBOX_SYMBOL_SHIFT 5
|
|
51
66
|
#endif
|
|
52
|
-
#define
|
|
53
|
-
#define
|
|
54
|
-
#
|
|
55
|
-
|
|
56
|
-
#define
|
|
57
|
-
|
|
58
|
-
#define
|
|
59
|
-
((o).w = (((uintptr_t)(v)) <<
|
|
60
|
-
#define
|
|
61
|
-
(((o).w &
|
|
62
|
-
#define
|
|
67
|
+
#define WORDBOX_SYMBOL_FLAG 0x1c
|
|
68
|
+
#define WORDBOX_SYMBOL_MASK 0x1f
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
#define WORDBOX_IMMEDIATE_MASK 0x07
|
|
72
|
+
|
|
73
|
+
#define WORDBOX_SET_SHIFT_VALUE(o,n,v) \
|
|
74
|
+
((o).w = (((uintptr_t)(v)) << WORDBOX_##n##_SHIFT) | WORDBOX_##n##_FLAG)
|
|
75
|
+
#define WORDBOX_SHIFT_VALUE_P(o,n) \
|
|
76
|
+
(((o).w & WORDBOX_##n##_MASK) == WORDBOX_##n##_FLAG)
|
|
77
|
+
#define WORDBOX_OBJ_TYPE_P(o,n) \
|
|
63
78
|
(!mrb_immediate_p(o) && mrb_val_union(o).bp->tt == MRB_TT_##n)
|
|
64
79
|
|
|
65
80
|
/*
|
|
66
81
|
* mrb_value representation:
|
|
67
82
|
*
|
|
83
|
+
* 64bit word with inline float:
|
|
84
|
+
* nil : ...0000 0000 (all bits are 0)
|
|
85
|
+
* false : ...0000 0100 (mrb_fixnum(v) != 0)
|
|
86
|
+
* true : ...0000 1100
|
|
87
|
+
* undef : ...0001 0100
|
|
88
|
+
* symbol: ...0001 1100 (use only upper 32-bit as symbol value with MRB_64BIT)
|
|
89
|
+
* fixnum: ...IIII III1
|
|
90
|
+
* float : ...FFFF FF10 (51 bit significands; require MRB_64BIT)
|
|
91
|
+
* object: ...PPPP P000
|
|
92
|
+
*
|
|
93
|
+
* 32bit word with inline float:
|
|
94
|
+
* nil : ...0000 0000 (all bits are 0)
|
|
95
|
+
* false : ...0000 0100 (mrb_fixnum(v) != 0)
|
|
96
|
+
* true : ...0000 1100
|
|
97
|
+
* undef : ...0001 0100
|
|
98
|
+
* symbol: ...SSS1 0100 (symbol occupies 20bits)
|
|
99
|
+
* fixnum: ...IIII III1
|
|
100
|
+
* float : ...FFFF FF10 (22 bit significands; require MRB_64BIT)
|
|
101
|
+
* object: ...PPPP P000
|
|
102
|
+
*
|
|
103
|
+
* and word boxing without inline float (MRB_WORDBOX_NO_FLOAT_TRUNCATE):
|
|
68
104
|
* nil : ...0000 0000 (all bits are 0)
|
|
69
105
|
* false : ...0000 0100 (mrb_fixnum(v) != 0)
|
|
70
106
|
* true : ...0000 1100
|
|
71
107
|
* undef : ...0001 0100
|
|
72
108
|
* fixnum: ...IIII III1
|
|
73
|
-
* symbol: ...SSSS SS10
|
|
109
|
+
* symbol: ...SSSS SS10
|
|
74
110
|
* object: ...PPPP P000 (any bits are 1)
|
|
75
111
|
*/
|
|
76
112
|
typedef struct mrb_value {
|
|
@@ -79,18 +115,13 @@ typedef struct mrb_value {
|
|
|
79
115
|
|
|
80
116
|
union mrb_value_ {
|
|
81
117
|
void *p;
|
|
82
|
-
#ifdef MRB_64BIT
|
|
83
|
-
/* use struct to avoid bit shift. */
|
|
84
|
-
struct {
|
|
85
|
-
MRB_ENDIAN_LOHI(
|
|
86
|
-
mrb_sym sym;
|
|
87
|
-
,uint32_t sym_flag;
|
|
88
|
-
)
|
|
89
|
-
};
|
|
90
|
-
#endif
|
|
91
118
|
struct RBasic *bp;
|
|
92
119
|
#ifndef MRB_NO_FLOAT
|
|
120
|
+
#ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
|
|
121
|
+
mrb_float f;
|
|
122
|
+
#else
|
|
93
123
|
struct RFloat *fp;
|
|
124
|
+
#endif
|
|
94
125
|
#endif
|
|
95
126
|
struct RInteger *ip;
|
|
96
127
|
struct RCptr *vp;
|
|
@@ -98,7 +129,7 @@ union mrb_value_ {
|
|
|
98
129
|
mrb_value value;
|
|
99
130
|
};
|
|
100
131
|
|
|
101
|
-
|
|
132
|
+
mrb_static_assert(sizeof(mrb_value) == sizeof(union mrb_value_));
|
|
102
133
|
|
|
103
134
|
static inline union mrb_value_
|
|
104
135
|
mrb_val_union(mrb_value v)
|
|
@@ -112,61 +143,62 @@ MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*);
|
|
|
112
143
|
#ifndef MRB_NO_FLOAT
|
|
113
144
|
MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float);
|
|
114
145
|
#endif
|
|
115
|
-
MRB_API mrb_value
|
|
146
|
+
MRB_API mrb_value mrb_boxing_int_value(struct mrb_state*, mrb_int);
|
|
116
147
|
|
|
117
|
-
#define mrb_immediate_p(o) ((o).w &
|
|
148
|
+
#define mrb_immediate_p(o) ((o).w & WORDBOX_IMMEDIATE_MASK || (o).w == MRB_Qnil)
|
|
118
149
|
|
|
119
150
|
#define mrb_ptr(o) mrb_val_union(o).p
|
|
120
151
|
#define mrb_cptr(o) mrb_val_union(o).vp->p
|
|
121
152
|
#ifndef MRB_NO_FLOAT
|
|
122
|
-
#
|
|
153
|
+
#ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
|
|
154
|
+
MRB_API mrb_float mrb_word_boxing_value_float(mrb_value v);
|
|
155
|
+
#define mrb_float(o) mrb_word_boxing_value_float(o)
|
|
156
|
+
#else
|
|
157
|
+
#define mrb_float(o) mrb_val_union(o).fp->f
|
|
158
|
+
#endif
|
|
123
159
|
#endif
|
|
124
|
-
#define mrb_fixnum(o) (mrb_int)(((intptr_t)(o).w) >>
|
|
160
|
+
#define mrb_fixnum(o) (mrb_int)(((intptr_t)(o).w) >> WORDBOX_FIXNUM_SHIFT)
|
|
125
161
|
MRB_INLINE mrb_int
|
|
126
162
|
mrb_integer_func(mrb_value o) {
|
|
127
163
|
if (mrb_immediate_p(o)) return mrb_fixnum(o);
|
|
128
164
|
return mrb_val_union(o).ip->i;
|
|
129
165
|
}
|
|
130
166
|
#define mrb_integer(o) mrb_integer_func(o)
|
|
131
|
-
#
|
|
132
|
-
#define mrb_symbol(o) mrb_val_union(o).sym
|
|
133
|
-
#else
|
|
134
|
-
#define mrb_symbol(o) (mrb_sym)(((o).w) >> BOXWORD_SYMBOL_SHIFT)
|
|
135
|
-
#endif
|
|
167
|
+
#define mrb_symbol(o) (mrb_sym)(((o).w) >> WORDBOX_SYMBOL_SHIFT)
|
|
136
168
|
#define mrb_bool(o) (((o).w & ~(uintptr_t)MRB_Qfalse) != 0)
|
|
137
169
|
|
|
138
|
-
#define mrb_fixnum_p(o)
|
|
139
|
-
#define mrb_integer_p(o) (
|
|
140
|
-
#
|
|
141
|
-
#define mrb_symbol_p(o) (mrb_val_union(o).sym_flag == BOXWORD_SYMBOL_FLAG)
|
|
142
|
-
#else
|
|
143
|
-
#define mrb_symbol_p(o) BOXWORD_SHIFT_VALUE_P(o, SYMBOL)
|
|
144
|
-
#endif
|
|
170
|
+
#define mrb_fixnum_p(o) WORDBOX_SHIFT_VALUE_P(o, FIXNUM)
|
|
171
|
+
#define mrb_integer_p(o) (WORDBOX_SHIFT_VALUE_P(o, FIXNUM)||WORDBOX_OBJ_TYPE_P(o, INTEGER))
|
|
172
|
+
#define mrb_symbol_p(o) WORDBOX_SHIFT_VALUE_P(o, SYMBOL)
|
|
145
173
|
#define mrb_undef_p(o) ((o).w == MRB_Qundef)
|
|
146
174
|
#define mrb_nil_p(o) ((o).w == MRB_Qnil)
|
|
147
175
|
#define mrb_false_p(o) ((o).w == MRB_Qfalse)
|
|
148
176
|
#define mrb_true_p(o) ((o).w == MRB_Qtrue)
|
|
149
177
|
#ifndef MRB_NO_FLOAT
|
|
150
|
-
#
|
|
178
|
+
#ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE
|
|
179
|
+
#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)
|
|
180
|
+
#else
|
|
181
|
+
#define mrb_float_p(o) WORDBOX_OBJ_TYPE_P(o, FLOAT)
|
|
182
|
+
#endif
|
|
151
183
|
#endif
|
|
152
|
-
#define mrb_array_p(o)
|
|
153
|
-
#define mrb_string_p(o)
|
|
154
|
-
#define mrb_hash_p(o)
|
|
155
|
-
#define mrb_cptr_p(o)
|
|
156
|
-
#define mrb_exception_p(o)
|
|
157
|
-
#define mrb_free_p(o)
|
|
158
|
-
#define mrb_object_p(o)
|
|
159
|
-
#define mrb_class_p(o)
|
|
160
|
-
#define mrb_module_p(o)
|
|
161
|
-
#define mrb_iclass_p(o)
|
|
162
|
-
#define mrb_sclass_p(o)
|
|
163
|
-
#define mrb_proc_p(o)
|
|
164
|
-
#define mrb_range_p(o)
|
|
165
|
-
#define mrb_env_p(o)
|
|
166
|
-
#define mrb_data_p(o)
|
|
167
|
-
#define mrb_fiber_p(o)
|
|
168
|
-
#define mrb_istruct_p(o)
|
|
169
|
-
#define mrb_break_p(o)
|
|
184
|
+
#define mrb_array_p(o) WORDBOX_OBJ_TYPE_P(o, ARRAY)
|
|
185
|
+
#define mrb_string_p(o) WORDBOX_OBJ_TYPE_P(o, STRING)
|
|
186
|
+
#define mrb_hash_p(o) WORDBOX_OBJ_TYPE_P(o, HASH)
|
|
187
|
+
#define mrb_cptr_p(o) WORDBOX_OBJ_TYPE_P(o, CPTR)
|
|
188
|
+
#define mrb_exception_p(o) WORDBOX_OBJ_TYPE_P(o, EXCEPTION)
|
|
189
|
+
#define mrb_free_p(o) WORDBOX_OBJ_TYPE_P(o, FREE)
|
|
190
|
+
#define mrb_object_p(o) WORDBOX_OBJ_TYPE_P(o, OBJECT)
|
|
191
|
+
#define mrb_class_p(o) WORDBOX_OBJ_TYPE_P(o, CLASS)
|
|
192
|
+
#define mrb_module_p(o) WORDBOX_OBJ_TYPE_P(o, MODULE)
|
|
193
|
+
#define mrb_iclass_p(o) WORDBOX_OBJ_TYPE_P(o, ICLASS)
|
|
194
|
+
#define mrb_sclass_p(o) WORDBOX_OBJ_TYPE_P(o, SCLASS)
|
|
195
|
+
#define mrb_proc_p(o) WORDBOX_OBJ_TYPE_P(o, PROC)
|
|
196
|
+
#define mrb_range_p(o) WORDBOX_OBJ_TYPE_P(o, RANGE)
|
|
197
|
+
#define mrb_env_p(o) WORDBOX_OBJ_TYPE_P(o, ENV)
|
|
198
|
+
#define mrb_data_p(o) WORDBOX_OBJ_TYPE_P(o, DATA)
|
|
199
|
+
#define mrb_fiber_p(o) WORDBOX_OBJ_TYPE_P(o, FIBER)
|
|
200
|
+
#define mrb_istruct_p(o) WORDBOX_OBJ_TYPE_P(o, ISTRUCT)
|
|
201
|
+
#define mrb_break_p(o) WORDBOX_OBJ_TYPE_P(o, BREAK)
|
|
170
202
|
|
|
171
203
|
#ifndef MRB_NO_FLOAT
|
|
172
204
|
#define SET_FLOAT_VALUE(mrb,r,v) ((r) = mrb_word_boxing_float_value(mrb, v))
|
|
@@ -177,18 +209,9 @@ mrb_integer_func(mrb_value o) {
|
|
|
177
209
|
#define SET_FALSE_VALUE(r) ((r).w = MRB_Qfalse)
|
|
178
210
|
#define SET_TRUE_VALUE(r) ((r).w = MRB_Qtrue)
|
|
179
211
|
#define SET_BOOL_VALUE(r,b) ((b) ? SET_TRUE_VALUE(r) : SET_FALSE_VALUE(r))
|
|
180
|
-
#define SET_INT_VALUE(mrb,r,n) ((r) =
|
|
181
|
-
#define SET_FIXNUM_VALUE(r,n)
|
|
182
|
-
#
|
|
183
|
-
#define SET_SYM_VALUE(r,v) do {\
|
|
184
|
-
union mrb_value_ mrb_value_union_variable;\
|
|
185
|
-
mrb_value_union_variable.sym = v;\
|
|
186
|
-
mrb_value_union_variable.sym_flag = BOXWORD_SYMBOL_FLAG;\
|
|
187
|
-
(r) = mrb_value_union_variable.value;\
|
|
188
|
-
} while (0)
|
|
189
|
-
#else
|
|
190
|
-
#define SET_SYM_VALUE(r,n) BOXWORD_SET_SHIFT_VALUE(r, SYMBOL, n)
|
|
191
|
-
#endif
|
|
212
|
+
#define SET_INT_VALUE(mrb,r,n) ((r) = mrb_boxing_int_value(mrb, n))
|
|
213
|
+
#define SET_FIXNUM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, FIXNUM, n)
|
|
214
|
+
#define SET_SYM_VALUE(r,n) WORDBOX_SET_SHIFT_VALUE(r, SYMBOL, n)
|
|
192
215
|
#define SET_OBJ_VALUE(r,v) ((r).w = (uintptr_t)(v))
|
|
193
216
|
|
|
194
217
|
MRB_INLINE enum mrb_vtype
|
|
@@ -199,6 +222,9 @@ mrb_type(mrb_value o)
|
|
|
199
222
|
mrb_fixnum_p(o) ? MRB_TT_INTEGER :
|
|
200
223
|
mrb_symbol_p(o) ? MRB_TT_SYMBOL :
|
|
201
224
|
mrb_undef_p(o) ? MRB_TT_UNDEF :
|
|
225
|
+
#ifndef MRB_NO_FLOAT
|
|
226
|
+
mrb_float_p(o) ? MRB_TT_FLOAT :
|
|
227
|
+
#endif
|
|
202
228
|
mrb_val_union(o).bp->tt;
|
|
203
229
|
}
|
|
204
230
|
|
|
@@ -16,8 +16,6 @@ MRB_BEGIN_DECL
|
|
|
16
16
|
|
|
17
17
|
#include <mruby.h>
|
|
18
18
|
|
|
19
|
-
struct mrb_jmpbuf;
|
|
20
|
-
|
|
21
19
|
struct mrb_parser_state;
|
|
22
20
|
/* load context */
|
|
23
21
|
typedef struct mrbc_context {
|
|
@@ -33,6 +31,7 @@ typedef struct mrbc_context {
|
|
|
33
31
|
mrb_bool no_exec:1;
|
|
34
32
|
mrb_bool keep_lv:1;
|
|
35
33
|
mrb_bool no_optimize:1;
|
|
34
|
+
mrb_bool no_ext_ops:1;
|
|
36
35
|
const struct RProc *upper;
|
|
37
36
|
|
|
38
37
|
size_t parser_nerr;
|
|
@@ -58,7 +57,7 @@ enum mrb_lex_state_enum {
|
|
|
58
57
|
EXPR_ENDFN, /* ditto, and unbound braces. */
|
|
59
58
|
EXPR_ARG, /* newline significant, +/- is an operator. */
|
|
60
59
|
EXPR_CMDARG, /* newline significant, +/- is an operator. */
|
|
61
|
-
EXPR_MID, /* newline significant, +/- is
|
|
60
|
+
EXPR_MID, /* newline significant, +/- is a sign. */
|
|
62
61
|
EXPR_FNAME, /* ignore newline, no reserved words. */
|
|
63
62
|
EXPR_DOT, /* right after '.' or '::', no reserved words. */
|
|
64
63
|
EXPR_CLASS, /* immediate after 'class', no here document. */
|
|
@@ -157,6 +156,7 @@ struct mrb_parser_state {
|
|
|
157
156
|
|
|
158
157
|
mrb_bool no_optimize:1;
|
|
159
158
|
mrb_bool capture_errors:1;
|
|
159
|
+
mrb_bool no_ext_ops:1;
|
|
160
160
|
const struct RProc *upper;
|
|
161
161
|
struct mrb_parser_message error_buffer[10];
|
|
162
162
|
struct mrb_parser_message warn_buffer[10];
|
|
@@ -165,7 +165,6 @@ struct mrb_parser_state {
|
|
|
165
165
|
uint16_t filename_table_length;
|
|
166
166
|
uint16_t current_filename_index;
|
|
167
167
|
|
|
168
|
-
struct mrb_jmpbuf* jmp;
|
|
169
168
|
mrb_ast_node *nvars;
|
|
170
169
|
};
|
|
171
170
|
|
|
@@ -16,7 +16,8 @@ MRB_BEGIN_DECL
|
|
|
16
16
|
|
|
17
17
|
typedef enum mrb_debug_line_type {
|
|
18
18
|
mrb_debug_line_ary = 0,
|
|
19
|
-
mrb_debug_line_flat_map
|
|
19
|
+
mrb_debug_line_flat_map,
|
|
20
|
+
mrb_debug_line_packed_map
|
|
20
21
|
} mrb_debug_line_type;
|
|
21
22
|
|
|
22
23
|
typedef struct mrb_irep_debug_info_line {
|
|
@@ -31,8 +32,9 @@ typedef struct mrb_irep_debug_info_file {
|
|
|
31
32
|
mrb_debug_line_type line_type;
|
|
32
33
|
union {
|
|
33
34
|
void *ptr;
|
|
34
|
-
mrb_irep_debug_info_line *flat_map;
|
|
35
35
|
uint16_t *ary;
|
|
36
|
+
mrb_irep_debug_info_line *flat_map;
|
|
37
|
+
uint8_t *packed_map;
|
|
36
38
|
} lines;
|
|
37
39
|
} mrb_irep_debug_info_file;
|
|
38
40
|
|
data/assets/include/mruby/dump.h
CHANGED
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
*/
|
|
17
17
|
MRB_BEGIN_DECL
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
/* flags for mrb_dump_irep{,_binary,_cfunc,_cstruct} */
|
|
20
|
+
#define MRB_DUMP_DEBUG_INFO 1
|
|
21
|
+
#define MRB_DUMP_STATIC 2
|
|
22
|
+
#define DUMP_DEBUG_INFO MRB_DUMP_DEBUG_INFO /* deprecated */
|
|
20
23
|
|
|
21
24
|
int mrb_dump_irep(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, uint8_t **bin, size_t *bin_size);
|
|
22
25
|
#ifndef MRB_NO_STDIO
|
|
@@ -51,7 +54,7 @@ MRB_API mrb_irep *mrb_read_irep_buf(mrb_state*, const void*, size_t);
|
|
|
51
54
|
/* Binary Format Version Major:Minor */
|
|
52
55
|
/* Major: Incompatible to prior versions */
|
|
53
56
|
/* Minor: Upper-compatible to prior versions */
|
|
54
|
-
#define RITE_BINARY_MAJOR_VER "
|
|
57
|
+
#define RITE_BINARY_MAJOR_VER "03"
|
|
55
58
|
#define RITE_BINARY_MINOR_VER "00"
|
|
56
59
|
#define RITE_BINARY_FORMAT_VER RITE_BINARY_MAJOR_VER RITE_BINARY_MINOR_VER
|
|
57
60
|
#define RITE_COMPILER_NAME "MATZ"
|
|
@@ -17,17 +17,20 @@ MRB_BEGIN_DECL
|
|
|
17
17
|
struct RException {
|
|
18
18
|
MRB_OBJECT_HEADER;
|
|
19
19
|
struct iv_tbl *iv;
|
|
20
|
+
struct RString *mesg;
|
|
20
21
|
};
|
|
21
22
|
|
|
22
23
|
#define mrb_exc_ptr(v) ((struct RException*)mrb_ptr(v))
|
|
24
|
+
#define MRB_EXC_MESG_STRING_FLAG 0x100
|
|
23
25
|
|
|
24
26
|
MRB_API void mrb_sys_fail(mrb_state *mrb, const char *mesg);
|
|
25
27
|
MRB_API mrb_value mrb_exc_new_str(mrb_state *mrb, struct RClass* c, mrb_value str);
|
|
26
28
|
#define mrb_exc_new_lit(mrb, c, lit) mrb_exc_new_str(mrb, c, mrb_str_new_lit(mrb, lit))
|
|
27
29
|
#define mrb_exc_new_str_lit(mrb, c, lit) mrb_exc_new_lit(mrb, c, lit)
|
|
28
30
|
MRB_API mrb_value mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
|
|
32
|
+
mrb_value mrb_get_backtrace(mrb_state *mrb);
|
|
33
|
+
|
|
31
34
|
MRB_API mrb_noreturn void mrb_no_method_error(mrb_state *mrb, mrb_sym id, mrb_value args, const char *fmt, ...);
|
|
32
35
|
|
|
33
36
|
/* declaration for `fail` method */
|
|
@@ -103,6 +106,13 @@ mrb_break_tag_set(struct RBreak *brk, uint32_t tag)
|
|
|
103
106
|
/**
|
|
104
107
|
* Protect
|
|
105
108
|
*
|
|
109
|
+
*/
|
|
110
|
+
typedef mrb_value mrb_protect_error_func(mrb_state *mrb, void *userdata);
|
|
111
|
+
MRB_API mrb_value mrb_protect_error(mrb_state *mrb, mrb_protect_error_func *body, void *userdata, mrb_bool *error);
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Protect (takes mrb_value for body argument)
|
|
115
|
+
*
|
|
106
116
|
* Implemented in the mruby-error mrbgem
|
|
107
117
|
*/
|
|
108
118
|
MRB_API mrb_value mrb_protect(mrb_state *mrb, mrb_func_t body, mrb_value data, mrb_bool *state);
|
data/assets/include/mruby/gc.h
CHANGED
data/assets/include/mruby/hash.h
CHANGED
|
@@ -29,7 +29,7 @@ struct RHash {
|
|
|
29
29
|
union {
|
|
30
30
|
struct hash_entry *ea;
|
|
31
31
|
struct hash_table *ht;
|
|
32
|
-
};
|
|
32
|
+
} hsh;
|
|
33
33
|
};
|
|
34
34
|
|
|
35
35
|
#define mrb_hash_ptr(v) ((struct RHash*)(mrb_ptr(v)))
|
|
@@ -37,8 +37,6 @@ struct RHash {
|
|
|
37
37
|
|
|
38
38
|
size_t mrb_hash_memsize(mrb_value obj);
|
|
39
39
|
MRB_API mrb_value mrb_hash_new_capa(mrb_state *mrb, mrb_int capa);
|
|
40
|
-
MRB_API mrb_value mrb_ensure_hash_type(mrb_state *mrb, mrb_value hash);
|
|
41
|
-
MRB_API mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash);
|
|
42
40
|
|
|
43
41
|
/*
|
|
44
42
|
* Initializes a new hash.
|
data/assets/include/mruby/irep.h
CHANGED
|
@@ -20,6 +20,7 @@ enum irep_pool_type {
|
|
|
20
20
|
IREP_TT_SSTR = 2, /* string (static) */
|
|
21
21
|
IREP_TT_INT32 = 1, /* 32bit integer */
|
|
22
22
|
IREP_TT_INT64 = 3, /* 64bit integer */
|
|
23
|
+
IREP_TT_BIGINT = 7, /* big integer (not yet supported) */
|
|
23
24
|
IREP_TT_FLOAT = 5, /* float (double/float) */
|
|
24
25
|
};
|
|
25
26
|
|
|
@@ -31,9 +32,7 @@ typedef struct mrb_pool_value {
|
|
|
31
32
|
union {
|
|
32
33
|
const char *str;
|
|
33
34
|
int32_t i32;
|
|
34
|
-
#if defined(MRB_64BIT) || defined(MRB_INT64)
|
|
35
35
|
int64_t i64;
|
|
36
|
-
#endif
|
|
37
36
|
#ifndef MRB_NO_FLOAT
|
|
38
37
|
mrb_float f;
|
|
39
38
|
#endif
|
|
@@ -47,8 +46,8 @@ enum mrb_catch_type {
|
|
|
47
46
|
|
|
48
47
|
struct mrb_irep_catch_handler {
|
|
49
48
|
uint8_t type; /* enum mrb_catch_type */
|
|
50
|
-
uint8_t begin[4]; /* The starting address to match the
|
|
51
|
-
uint8_t end[4]; /* The endpoint address that matches the
|
|
49
|
+
uint8_t begin[4]; /* The starting address to match the handler. Includes this. */
|
|
50
|
+
uint8_t end[4]; /* The endpoint address that matches the handler. Not Includes this. */
|
|
52
51
|
uint8_t target[4]; /* The address to jump to if a match is made. */
|
|
53
52
|
};
|
|
54
53
|
|
|
@@ -124,6 +123,7 @@ struct mrb_insn_data {
|
|
|
124
123
|
uint16_t a;
|
|
125
124
|
uint16_t b;
|
|
126
125
|
uint16_t c;
|
|
126
|
+
const mrb_code *addr;
|
|
127
127
|
};
|
|
128
128
|
|
|
129
129
|
struct mrb_insn_data mrb_decode_insn(const mrb_code *pc);
|
|
@@ -30,21 +30,19 @@ MRB_BEGIN_DECL
|
|
|
30
30
|
#endif
|
|
31
31
|
#endif
|
|
32
32
|
|
|
33
|
-
#ifndef MRB_NO_FLOAT
|
|
34
|
-
MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val);
|
|
35
|
-
#endif
|
|
36
|
-
MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
|
|
37
|
-
/* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */
|
|
38
|
-
#ifndef MRB_NO_FLOAT
|
|
39
|
-
MRB_API mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt);
|
|
40
|
-
MRB_API int mrb_float_to_cstr(mrb_state *mrb, char *buf, size_t len, const char *fmt, mrb_float f);
|
|
41
|
-
MRB_API mrb_float mrb_to_flo(mrb_state *mrb, mrb_value x);
|
|
42
|
-
#endif
|
|
43
|
-
|
|
44
33
|
MRB_API mrb_value mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y);
|
|
45
34
|
MRB_API mrb_value mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y);
|
|
46
35
|
MRB_API mrb_value mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y);
|
|
47
36
|
|
|
37
|
+
MRB_API mrb_value mrb_integer_to_str(mrb_state *mrb, mrb_value x, mrb_int base);
|
|
38
|
+
MRB_API char *mrb_int_to_cstr(char *buf, size_t len, mrb_int n, mrb_int base);
|
|
39
|
+
|
|
40
|
+
/* internal function(s) */
|
|
41
|
+
mrb_int mrb_div_int(mrb_state *mrb, mrb_int x, mrb_int y);
|
|
42
|
+
|
|
43
|
+
/* obsolete function(s); will be removed */
|
|
44
|
+
#define mrb_fixnum_to_str(mrb, x, base) mrb_integer_to_str(mrb, x, base)
|
|
45
|
+
|
|
48
46
|
#ifndef __has_builtin
|
|
49
47
|
#define __has_builtin(x) 0
|
|
50
48
|
#endif
|
|
@@ -135,8 +133,6 @@ mrb_int_mul_overflow(mrb_int a, mrb_int b, mrb_int *c)
|
|
|
135
133
|
#endif
|
|
136
134
|
|
|
137
135
|
#ifndef MRB_NO_FLOAT
|
|
138
|
-
# include <stdint.h>
|
|
139
|
-
# include <float.h>
|
|
140
136
|
|
|
141
137
|
# define MRB_FLT_RADIX FLT_RADIX
|
|
142
138
|
|
|
@@ -162,6 +158,18 @@ mrb_int_mul_overflow(mrb_int a, mrb_int b, mrb_int *c)
|
|
|
162
158
|
# define MRB_FLT_MAX DBL_MAX
|
|
163
159
|
# define MRB_FLT_MAX_10_EXP DBL_MAX_10_EXP
|
|
164
160
|
# endif /* MRB_USE_FLOAT32 */
|
|
161
|
+
|
|
162
|
+
MRB_API mrb_value mrb_float_to_integer(mrb_state *mrb, mrb_value val);
|
|
163
|
+
|
|
164
|
+
/* internal functions */
|
|
165
|
+
mrb_float mrb_div_float(mrb_float x, mrb_float y);
|
|
166
|
+
mrb_value mrb_float_to_str(mrb_state *mrb, mrb_value x, const char *fmt);
|
|
167
|
+
int mrb_format_float(mrb_float f, char *buf, size_t buf_size, char fmt, int prec, char sign);
|
|
168
|
+
|
|
169
|
+
/* obsolete functions; will be removed */
|
|
170
|
+
#define mrb_flo_to_fixnum(mrb, val) mrb_float_to_integer(mrb, val)
|
|
171
|
+
#define mrb_to_flo(mrb, x) mrb_as_float(mrb, x)
|
|
172
|
+
|
|
165
173
|
#endif /* MRB_NO_FLOAT */
|
|
166
174
|
|
|
167
175
|
MRB_END_DECL
|
|
@@ -40,4 +40,34 @@ enum mrb_insn {
|
|
|
40
40
|
#define FETCH_S() do {a=READ_S();} while (0)
|
|
41
41
|
#define FETCH_W() do {a=READ_W();} while (0)
|
|
42
42
|
|
|
43
|
+
/* with OP_EXT1 (1st 16bit) */
|
|
44
|
+
#define FETCH_Z_1() FETCH_Z()
|
|
45
|
+
#define FETCH_B_1() FETCH_S()
|
|
46
|
+
#define FETCH_BB_1() do {a=READ_S(); b=READ_B();} while (0)
|
|
47
|
+
#define FETCH_BBB_1() do {a=READ_S(); b=READ_B(); c=READ_B();} while (0)
|
|
48
|
+
#define FETCH_BS_1() do {a=READ_S(); b=READ_S();} while (0)
|
|
49
|
+
#define FETCH_BSS_1() do {a=READ_S(); b=READ_S();c=READ_S();} while (0)
|
|
50
|
+
#define FETCH_S_1() FETCH_S()
|
|
51
|
+
#define FETCH_W_1() FETCH_W()
|
|
52
|
+
|
|
53
|
+
/* with OP_EXT2 (2nd 16bit) */
|
|
54
|
+
#define FETCH_Z_2() FETCH_Z()
|
|
55
|
+
#define FETCH_B_2() FETCH_B()
|
|
56
|
+
#define FETCH_BB_2() do {a=READ_B(); b=READ_S();} while (0)
|
|
57
|
+
#define FETCH_BBB_2() do {a=READ_B(); b=READ_S(); c=READ_B();} while (0)
|
|
58
|
+
#define FETCH_BS_2() FETCH_BS()
|
|
59
|
+
#define FETCH_BSS_2() FETCH_BSS()
|
|
60
|
+
#define FETCH_S_2() FETCH_S()
|
|
61
|
+
#define FETCH_W_2() FETCH_W()
|
|
62
|
+
|
|
63
|
+
/* with OP_EXT3 (1st & 2nd 16bit) */
|
|
64
|
+
#define FETCH_Z_3() FETCH_Z()
|
|
65
|
+
#define FETCH_B_3() FETCH_B()
|
|
66
|
+
#define FETCH_BB_3() do {a=READ_S(); b=READ_S();} while (0)
|
|
67
|
+
#define FETCH_BBB_3() do {a=READ_S(); b=READ_S(); c=READ_B();} while (0)
|
|
68
|
+
#define FETCH_BS_3() do {a=READ_S(); b=READ_S();} while (0)
|
|
69
|
+
#define FETCH_BSS_3() FETCH_BSS_1()
|
|
70
|
+
#define FETCH_S_3() FETCH_S()
|
|
71
|
+
#define FETCH_W_3() FETCH_W()
|
|
72
|
+
|
|
43
73
|
#endif /* MRUBY_OPCODE_H */
|