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

ruby-changes:13888

From: nobu <ko1@a...>
Date: Sun, 8 Nov 2009 18:14:29 +0900 (JST)
Subject: [ruby-changes:13888] Ruby:r25690 (trunk): * hash.c: use RHASH_IFNONE but not ifnone directly.

nobu	2009-11-08 18:13:17 +0900 (Sun, 08 Nov 2009)

  New Revision: 25690

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

  Log:
    * hash.c: use RHASH_IFNONE but not ifnone directly.

  Modified files:
    trunk/ChangeLog
    trunk/hash.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25689)
+++ ChangeLog	(revision 25690)
@@ -1,3 +1,7 @@
+Sun Nov  8 18:13:12 2009  Nobuyoshi Nakada  <nobu@r...>
+
+	* hash.c: use RHASH_IFNONE but not ifnone directly.
+
 Sat Nov  7 21:02:57 2009  Tanaka Akira  <akr@f...>
 
 	* lib/pp.rb (PP::ObjectMixin#pretty_print): use to_s regardless of
Index: hash.c
===================================================================
--- hash.c	(revision 25689)
+++ hash.c	(revision 25690)
@@ -218,7 +218,7 @@
     NEWOBJ(hash, struct RHash);
     OBJSETUP(hash, klass, T_HASH);
 
-    hash->ifnone = Qnil;
+    RHASH_IFNONE(hash) = Qnil;
 
     return (VALUE)hash;
 }
@@ -240,7 +240,7 @@
     if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
         FL_SET(ret, HASH_PROC_DEFAULT);
     }
-    ret->ifnone = RHASH(hash)->ifnone;
+    RHASH_IFNONE(ret) = RHASH_IFNONE(hash);
     return (VALUE)ret;
 }
 
@@ -326,12 +326,12 @@
 	}
 	ifnone = rb_block_proc();
 	default_proc_arity_check(ifnone);
-	RHASH(hash)->ifnone = ifnone;
+	RHASH_IFNONE(hash) = ifnone;
 	FL_SET(hash, HASH_PROC_DEFAULT);
     }
     else {
 	rb_scan_args(argc, argv, "01", &ifnone);
-	RHASH(hash)->ifnone = ifnone;
+	RHASH_IFNONE(hash) = ifnone;
     }
 
     return hash;
@@ -598,14 +598,15 @@
 static VALUE
 rb_hash_default(int argc, VALUE *argv, VALUE hash)
 {
-    VALUE key;
+    VALUE key, ifnone;
 
     rb_scan_args(argc, argv, "01", &key);
+    ifnone = RHASH_IFNONE(hash);
     if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
 	if (argc == 0) return Qnil;
-	return rb_funcall(RHASH(hash)->ifnone, id_yield, 2, hash, key);
+	return rb_funcall(ifnone, id_yield, 2, hash, key);
     }
-    return RHASH(hash)->ifnone;
+    return ifnone;
 }
 
 /*
@@ -632,7 +633,7 @@
 rb_hash_set_default(VALUE hash, VALUE ifnone)
 {
     rb_hash_modify(hash);
-    RHASH(hash)->ifnone = ifnone;
+    RHASH_IFNONE(hash) = ifnone;
     FL_UNSET(hash, HASH_PROC_DEFAULT);
     return ifnone;
 }
@@ -656,7 +657,7 @@
 rb_hash_default_proc(VALUE hash)
 {
     if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
-	return RHASH(hash)->ifnone;
+	return RHASH_IFNONE(hash);
     }
     return Qnil;
 }
@@ -690,7 +691,7 @@
     }
     proc = b;
     default_proc_arity_check(proc);
-    RHASH(hash)->ifnone = proc;
+    RHASH_IFNONE(hash) = proc;
     FL_SET(hash, HASH_PROC_DEFAULT);
     return proc;
 }
@@ -848,10 +849,10 @@
 	return rb_assoc_new(var.key, var.val);
     }
     else if (FL_TEST(hash, HASH_PROC_DEFAULT)) {
-	return rb_funcall(RHASH(hash)->ifnone, id_yield, 2, hash, Qnil);
+	return rb_funcall(RHASH_IFNONE(hash), id_yield, 2, hash, Qnil);
     }
     else {
-	return RHASH(hash)->ifnone;
+	return RHASH_IFNONE(hash);
     }
 }
 
@@ -1079,7 +1080,7 @@
 	RHASH(hash)->ntbl->type = RHASH(hash2)->ntbl->type;
     }
     rb_hash_foreach(hash2, replace_i, hash);
-    RHASH(hash)->ifnone = RHASH(hash2)->ifnone;
+    RHASH_IFNONE(hash) = RHASH_IFNONE(hash2);
     if (FL_TEST(hash2, HASH_PROC_DEFAULT)) {
 	FL_SET(hash, HASH_PROC_DEFAULT);
     }
@@ -1506,7 +1507,7 @@
     if (RHASH(hash1)->ntbl->type != RHASH(hash2)->ntbl->type)
 	return Qfalse;
 #if 0
-    if (!(rb_equal(RHASH(hash1)->ifnone, RHASH(hash2)->ifnone) &&
+    if (!(rb_equal(RHASH_IFNONE(hash1), RHASH_IFNONE(hash2)) &&
 	  FL_TEST(hash1, HASH_PROC_DEFAULT) == FL_TEST(hash2, HASH_PROC_DEFAULT)))
 	return Qfalse;
 #endif

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

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