[macruby-changes] [4846] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 29 09:47:29 PDT 2010


Revision: 4846
          http://trac.macosforge.org/projects/ruby/changeset/4846
Author:   watson1978 at gmail.com
Date:     2010-10-29 09:47:27 -0700 (Fri, 29 Oct 2010)
Log Message:
-----------
rb_num_coerce_relop() was renamed the rb_objc_num_coerce_relop(). And, added new rb_num_coerce_relop() which was compatible with MRI API.

Modified Paths:
--------------
    MacRuby/trunk/include/ruby/intern.h
    MacRuby/trunk/include/ruby/macruby.h
    MacRuby/trunk/numeric.c

Modified: MacRuby/trunk/include/ruby/intern.h
===================================================================
--- MacRuby/trunk/include/ruby/intern.h	2010-10-29 01:06:09 UTC (rev 4845)
+++ MacRuby/trunk/include/ruby/intern.h	2010-10-29 16:47:27 UTC (rev 4846)
@@ -356,6 +356,7 @@
 void rb_num_zerodiv(void);
 VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
 VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
+VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
 VALUE rb_float_new(double);
 VALUE rb_num2fix(VALUE);
 VALUE rb_fix2str(VALUE, int);

Modified: MacRuby/trunk/include/ruby/macruby.h
===================================================================
--- MacRuby/trunk/include/ruby/macruby.h	2010-10-29 01:06:09 UTC (rev 4845)
+++ MacRuby/trunk/include/ruby/macruby.h	2010-10-29 16:47:27 UTC (rev 4846)
@@ -128,7 +128,7 @@
 
 VALUE rb_objc_num_coerce_bin(VALUE x, VALUE Y, SEL sel);
 VALUE rb_objc_num_coerce_cmp(VALUE, VALUE, SEL sel);
-VALUE rb_num_coerce_relop(VALUE, VALUE, SEL);
+VALUE rb_objc_num_coerce_relop(VALUE, VALUE, SEL sel);
 
 VALUE rb_f_kill(VALUE, SEL, int, VALUE*);
 VALUE rb_struct_initialize(VALUE, SEL, VALUE);

Modified: MacRuby/trunk/numeric.c
===================================================================
--- MacRuby/trunk/numeric.c	2010-10-29 01:06:09 UTC (rev 4845)
+++ MacRuby/trunk/numeric.c	2010-10-29 16:47:27 UTC (rev 4846)
@@ -212,10 +212,23 @@
 }
 
 VALUE
-rb_num_coerce_relop(VALUE x, VALUE y, SEL sel)
+rb_num_coerce_relop(VALUE x, VALUE y, ID func)
 {
     VALUE c, x0 = x, y0 = y;
 
+    if (!do_coerce(&x, &y, FALSE) ||
+	NIL_P(c = rb_funcall(x, func, 1, y))) {
+	rb_cmperr(x0, y0);
+	return Qnil;		/* not reached */
+    }
+    return c;
+}
+
+VALUE
+rb_objc_num_coerce_relop(VALUE x, VALUE y, SEL sel)
+{
+    VALUE c, x0 = x, y0 = y;
+
     if (!do_coerce(&x, &y, Qfalse) ||
 	NIL_P(c = rb_vm_call(x, sel, 1, &y))) {
 	rb_cmperr(x0, y0);
@@ -224,6 +237,7 @@
     return c;
 }
 
+
 /*
  * Trap attempts to add methods to <code>Numeric</code> objects. Always
  * raises a <code>TypeError</code>
@@ -1070,7 +1084,7 @@
 	break;
 
       default:
-	return rb_num_coerce_relop(x, y, selGT);
+	return rb_objc_num_coerce_relop(x, y, selGT);
     }
     if (isnan(a)) return Qfalse;
     return (a > b)?Qtrue:Qfalse;
@@ -1105,7 +1119,7 @@
 	break;
 
       default:
-	return rb_num_coerce_relop(x, y, selGE);
+	return rb_objc_num_coerce_relop(x, y, selGE);
     }
     if (isnan(a)) return Qfalse;
     return (a >= b)?Qtrue:Qfalse;
@@ -1139,7 +1153,7 @@
 	break;
 
       default:
-	return rb_num_coerce_relop(x, y, selLT);
+	return rb_objc_num_coerce_relop(x, y, selLT);
     }
     if (isnan(a)) return Qfalse;
     return (a < b)?Qtrue:Qfalse;
@@ -1174,7 +1188,7 @@
 	break;
 
       default:
-	return rb_num_coerce_relop(x, y, selLE);
+	return rb_objc_num_coerce_relop(x, y, selLE);
     }
     if (isnan(a)) return Qfalse;
     return (a <= b)?Qtrue:Qfalse;
@@ -2780,7 +2794,7 @@
       case T_FLOAT:
 	return (double)FIX2LONG(x) > RFLOAT_VALUE(y) ? Qtrue : Qfalse;
       default:
-	return rb_num_coerce_relop(x, y, selGT);
+	return rb_objc_num_coerce_relop(x, y, selGT);
     }
 }
 
@@ -2805,7 +2819,7 @@
       case T_FLOAT:
 	return (double)FIX2LONG(x) >= RFLOAT_VALUE(y) ? Qtrue : Qfalse;
       default:
-	return rb_num_coerce_relop(x, y, selGE);
+	return rb_objc_num_coerce_relop(x, y, selGE);
     }
 }
 
@@ -2830,7 +2844,7 @@
       case T_FLOAT:
 	return (double)FIX2LONG(x) < RFLOAT_VALUE(y) ? Qtrue : Qfalse;
       default:
-	return rb_num_coerce_relop(x, y, selLT);
+	return rb_objc_num_coerce_relop(x, y, selLT);
     }
 }
 
@@ -2855,7 +2869,7 @@
       case T_FLOAT:
 	return (double)FIX2LONG(x) <= RFLOAT_VALUE(y) ? Qtrue : Qfalse;
       default:
-	return rb_num_coerce_relop(x, y, selLE);
+	return rb_objc_num_coerce_relop(x, y, selLE);
     }
 }
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101029/3c9ea37e/attachment.html>


More information about the macruby-changes mailing list