[前][次][番号順一覧][スレッド一覧]

ruby-changes:24345

From: akr <ko1@a...>
Date: Mon, 16 Jul 2012 14:15:46 +0900 (JST)
Subject: [ruby-changes:24345] akr:r36396 (trunk): * bignum.c (enum big_op_t): new type.

akr	2012-07-16 14:15:36 +0900 (Mon, 16 Jul 2012)

  New Revision: 36396

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36396

  Log:
    * bignum.c (enum big_op_t): new type.
      (big_op): use enum big_op_t.
      (big_gt): ditto.
      (big_ge): ditto.
      (big_lt): ditto.
      (big_le): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/bignum.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 36395)
+++ ChangeLog	(revision 36396)
@@ -1,3 +1,12 @@
+Mon Jul 16 14:14:21 2012  Tanaka Akira  <akr@f...>
+
+	* bignum.c (enum big_op_t): new type.
+	  (big_op): use enum big_op_t.
+	  (big_gt): ditto.
+	  (big_ge): ditto.
+	  (big_lt): ditto.
+	  (big_le): ditto.
+
 Sat Jul 14 18:18:48 2012  Nobuyoshi Nakada  <nobu@r...>
 
 	* array.c (rb_get_values_at): fill with nil out of range.
Index: bignum.c
===================================================================
--- bignum.c	(revision 36395)
+++ bignum.c	(revision 36396)
@@ -1487,8 +1487,15 @@
 	    (RBIGNUM_SIGN(x) ? INT2FIX(-1) : INT2FIX(1));
 }
 
+enum big_op_t {
+    big_op_gt,
+    big_op_ge,
+    big_op_lt,
+    big_op_le
+};
+
 static VALUE
-big_op(VALUE x, VALUE y, int op)
+big_op(VALUE x, VALUE y, enum big_op_t op)
 {
     VALUE rel;
     int n;
@@ -1516,10 +1523,10 @@
 	{
 	    ID id = 0;
 	    switch (op) {
-		case 0: id = '>'; break;
-		case 1: id = rb_intern(">="); break;
-		case 2: id = '<'; break;
-		case 3: id = rb_intern("<="); break;
+		case big_op_gt: id = '>'; break;
+		case big_op_ge: id = rb_intern(">="); break;
+		case big_op_lt: id = '<'; break;
+		case big_op_le: id = rb_intern("<="); break;
 	    }
 	    return rb_num_coerce_relop(x, y, id);
 	}
@@ -1529,10 +1536,10 @@
     n = FIX2INT(rel);
 
     switch (op) {
-	case 0: return n >  0 ? Qtrue : Qfalse;
-	case 1: return n >= 0 ? Qtrue : Qfalse;
-	case 2: return n <  0 ? Qtrue : Qfalse;
-	case 3: return n <= 0 ? Qtrue : Qfalse;
+	case big_op_gt: return n >  0 ? Qtrue : Qfalse;
+	case big_op_ge: return n >= 0 ? Qtrue : Qfalse;
+	case big_op_lt: return n <  0 ? Qtrue : Qfalse;
+	case big_op_le: return n <= 0 ? Qtrue : Qfalse;
     }
     return Qundef;
 }
@@ -1548,7 +1555,7 @@
 static VALUE
 big_gt(VALUE x, VALUE y)
 {
-    return big_op(x, y, 0);
+    return big_op(x, y, big_op_gt);
 }
 
 /*
@@ -1562,7 +1569,7 @@
 static VALUE
 big_ge(VALUE x, VALUE y)
 {
-    return big_op(x, y, 1);
+    return big_op(x, y, big_op_ge);
 }
 
 /*
@@ -1576,7 +1583,7 @@
 static VALUE
 big_lt(VALUE x, VALUE y)
 {
-    return big_op(x, y, 2);
+    return big_op(x, y, big_op_lt);
 }
 
 /*
@@ -1590,7 +1597,7 @@
 static VALUE
 big_le(VALUE x, VALUE y)
 {
-    return big_op(x, y, 3);
+    return big_op(x, y, big_op_le);
 }
 
 /*

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]