diff options
author | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-12-02 14:58:43 +0900 |
---|---|---|
committer | 卜部昌平 <shyouhei@ruby-lang.org> | 2019-12-26 20:45:12 +0900 |
commit | 0958e19ffb047781fe1506760c7cbd8d7fe74e57 (patch) | |
tree | ca20d9181667d746c6df55c63f595980e9a77fbc /numeric.c | |
parent | 863dbb21d8912c73e84fed47f2d3a1ac5d8275d4 (diff) |
add several __has_something macro
With these macros implemented we can write codes just like we can assume
the compiler being clang. MSC_VERSION_SINCE is defined to implement
those macros, but turned out to be handy for other places. The -fdeclspec
compiler flag is necessary for clang to properly handle __has_declspec().
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2711
Diffstat (limited to 'numeric.c')
-rw-r--r-- | numeric.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -1389,7 +1389,7 @@ rb_float_equal(VALUE x, VALUE y) } else if (RB_TYPE_P(y, T_FLOAT)) { b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(b)) return Qfalse; #endif } @@ -1397,7 +1397,7 @@ rb_float_equal(VALUE x, VALUE y) return num_equal(x, y); } a = RFLOAT_VALUE(x); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a)) return Qfalse; #endif return (a == b)?Qtrue:Qfalse; @@ -1513,14 +1513,14 @@ rb_float_gt(VALUE x, VALUE y) } else if (RB_TYPE_P(y, T_FLOAT)) { b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(b)) return Qfalse; #endif } else { return rb_num_coerce_relop(x, y, '>'); } -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a)) return Qfalse; #endif return (a > b)?Qtrue:Qfalse; @@ -1550,14 +1550,14 @@ flo_ge(VALUE x, VALUE y) } else if (RB_TYPE_P(y, T_FLOAT)) { b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(b)) return Qfalse; #endif } else { return rb_num_coerce_relop(x, y, idGE); } -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a)) return Qfalse; #endif return (a >= b)?Qtrue:Qfalse; @@ -1587,14 +1587,14 @@ flo_lt(VALUE x, VALUE y) } else if (RB_TYPE_P(y, T_FLOAT)) { b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(b)) return Qfalse; #endif } else { return rb_num_coerce_relop(x, y, '<'); } -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a)) return Qfalse; #endif return (a < b)?Qtrue:Qfalse; @@ -1624,14 +1624,14 @@ flo_le(VALUE x, VALUE y) } else if (RB_TYPE_P(y, T_FLOAT)) { b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(b)) return Qfalse; #endif } else { return rb_num_coerce_relop(x, y, idLE); } -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a)) return Qfalse; #endif return (a <= b)?Qtrue:Qfalse; @@ -1656,7 +1656,7 @@ rb_float_eql(VALUE x, VALUE y) if (RB_TYPE_P(y, T_FLOAT)) { double a = RFLOAT_VALUE(x); double b = RFLOAT_VALUE(y); -#if defined(_MSC_VER) && _MSC_VER < 1300 +#if MSC_VERSION_BEFORE(1300) if (isnan(a) || isnan(b)) return Qfalse; #endif if (a == b) |