diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-01-04 20:31:05 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-01-04 20:31:05 +0900 |
| commit | b30ca87bd07a29a2dddc4960ce80f767ff9552ca (patch) | |
| tree | 824f117bb1dc35ac89ac537dd2191093e514b84a | |
| parent | 1c574b065d09d37da0673a9e0289e2e018413a80 (diff) | |
| download | mruby-b30ca87bd07a29a2dddc4960ce80f767ff9552ca.tar.gz mruby-b30ca87bd07a29a2dddc4960ce80f767ff9552ca.zip | |
Integrate mrblib/float.rb into src/numeric.c
- Avoid hack for `MRB_WITHOUT_FLOAT` in build scripts
- Avoid runtime dispatch for `MRB_WITHOUT_FLOAT`
| -rw-r--r-- | mrblib/float.rb | 9 | ||||
| -rw-r--r-- | mrblib/mrblib.rake | 3 | ||||
| -rw-r--r-- | src/numeric.c | 7 |
3 files changed, 5 insertions, 14 deletions
diff --git a/mrblib/float.rb b/mrblib/float.rb deleted file mode 100644 index 421b8d851..000000000 --- a/mrblib/float.rb +++ /dev/null @@ -1,9 +0,0 @@ -## -# Float -# -# ISO 15.2.9 -class Float - # mruby special - since mruby integers may be upgraded to floats, - # floats should be compatible to integers. - include Integral -end if Object.const_defined?(:Float) diff --git a/mrblib/mrblib.rake b/mrblib/mrblib.rake index 6895d4252..e96decb27 100644 --- a/mrblib/mrblib.rake +++ b/mrblib/mrblib.rake @@ -8,9 +8,6 @@ MRuby.each_target do file objfile("#{current_build_dir}/mrblib") => "#{current_build_dir}/mrblib.c" file "#{current_build_dir}/mrblib.c" => [mrbcfile, __FILE__] + Dir.glob("#{current_dir}/*.rb").sort do |t| _, _, *rbfiles = t.prerequisites - if self.cc.defines.flatten.include?("MRB_WITHOUT_FLOAT") - rbfiles.delete("#{current_dir}/float.rb") - end FileUtils.mkdir_p File.dirname(t.name) open(t.name, 'w') do |f| _pp "GEN", "*.rb", "#{t.name.relative_path}" diff --git a/src/numeric.c b/src/numeric.c index 077ae30aa..311bb4a38 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1487,11 +1487,13 @@ flo_plus(mrb_state *mrb, mrb_value x) void mrb_init_numeric(mrb_state *mrb) { - struct RClass *numeric, *integer, *fixnum; + struct RClass *numeric, *integer, *fixnum, *integral; #ifndef MRB_WITHOUT_FLOAT struct RClass *fl; #endif + integral = mrb_define_module(mrb, "Integral"); + /* Numeric Class */ numeric = mrb_define_class(mrb, "Numeric", mrb->object_class); /* 15.2.7 */ @@ -1578,6 +1580,7 @@ mrb_init_numeric(mrb_state *mrb) #ifdef NAN mrb_define_const(mrb, fl, "NAN", mrb_float_value(mrb, NAN)); #endif + + mrb_include_module(mrb, fl, integral); #endif - mrb_define_module(mrb, "Integral"); } |
