[#29374] nil.to_s — Shugo Maeda <shugo@...>

前田です。

59 messages 2006/09/01
[#29375] Re: nil.to_s — "U.Nakamura" <usa@...> 2006/09/01

こんにちは、なかむら(う)です。

[#29380] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29387] Re: nil.to_s — Shugo Maeda <shugo@...> 2006/09/01

前田です。

[#29390] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29398] Re: nil.to_s — "NARUSE, Yui" <naruse@...> 2006/09/01

成瀬です。

[#29400] Re: nil.to_s — Yukihiro Matsumoto <matz@...> 2006/09/01

まつもと ゆきひろです

[#29491] symbol and string — Tanaka Akira <akr@...>

open-uri で :proxy=>nil という指定を行うと、以下のようにエラーになります。

33 messages 2006/09/05
[#29499] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/05

まつもと ゆきひろです

[#29500] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/05

In article <1157470154.047826.13379.nullmailer@x31.priv.netlab.jp>,

[#29503] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29504] Re: symbol and string — Tanaka Akira <akr@...> 2006/09/06

In article <1157505538.340126.8472.nullmailer@x31.priv.netlab.jp>,

[#29507] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/06

まつもと ゆきひろです

[#29512] Re: symbol and string — keiju@... (石塚圭樹) 2006/09/06

けいじゅ@いしつかです.

[#29529] Re: symbol and string — SASADA Koichi <ko1@...> 2006/09/08

 ささだです。

[#29530] Re: symbol and string — Yukihiro Matsumoto <matz@...> 2006/09/08

まつもと ゆきひろです

[ruby-dev:29473] ext/tk/tkutil

From: nobu@...
Date: 2006-09-04 14:34:41 UTC
List: ruby-dev #29473
なかだです。

1.9でext/tk/tkutilがコンパイルエラーになります。とりあえず機械
的に変換したパッチです。

ちなみに、rb_str_set_len()はあるようですが、rb_ary_set_len()は
追加されないんでしょうか。


Index: ext/tk/tkutil/tkutil.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/tk/tkutil/tkutil.c,v
retrieving revision 1.15
diff -p -U 2 -r1.15 tkutil.c
--- ext/tk/tkutil/tkutil.c	31 Aug 2006 11:56:41 -0000	1.15
+++ ext/tk/tkutil/tkutil.c	4 Sep 2006 14:27:49 -0000
@@ -268,9 +268,9 @@ ary2list(ary, enc_flag, self)
     }
 
-    /* size = RARRAY(ary)->len; */
+    /* size = RARRAY_LEN(ary); */
     size = 0;
-    for(idx = 0; idx < RARRAY(ary)->len; idx++) {
-        if (TYPE(RARRAY(ary)->ptr[idx]) == T_HASH) {
-            size += 2 * RHASH(RARRAY(ary)->ptr[idx])->tbl->num_entries;
+    for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
+        if (TYPE(RARRAY_PTR(ary)[idx]) == T_HASH) {
+            size += 2 * RHASH(RARRAY_PTR(ary)[idx])->tbl->num_entries;
         } else {
             size++;
@@ -279,12 +279,11 @@ ary2list(ary, enc_flag, self)
 
     dst = rb_ary_new2(size);
-    RARRAY(dst)->len = 0;
-    for(idx = 0; idx < RARRAY(ary)->len; idx++) {
-        val = RARRAY(ary)->ptr[idx];
+    for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
+        val = RARRAY_PTR(ary)[idx];
         str_val = Qnil;
         switch(TYPE(val)) {
         case T_ARRAY:
             str_val = ary2list(val, enc_flag, self);
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+            rb_ary_push(dst, str_val);
 
             if (req_chk_flag) {
@@ -304,5 +303,5 @@ ary2list(ary, enc_flag, self)
 
         case T_HASH:
-            /* RARRAY(dst)->ptr[RARRAY(dst)->len++] = hash2list(val, self); */
+	    /* rb_ary_push(dst, hash2list(val, self)); */
             if (RTEST(enc_flag)) {
                 val = hash2kv_enc(val, Qnil, self);
@@ -310,11 +309,11 @@ ary2list(ary, enc_flag, self)
                 val = hash2kv(val, Qnil, self);
             }
-            size2 = RARRAY(val)->len;
+            size2 = RARRAY_LEN(val);
             for(idx2 = 0; idx2 < size2; idx2++) {
-                val2 = RARRAY(val)->ptr[idx2];
+                val2 = RARRAY_PTR(val)[idx2];
                 switch(TYPE(val2)) {
                 case T_ARRAY:
                     str_val = ary2list(val2, enc_flag, self);
-                    RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+                    rb_ary_push(dst, str_val);
                     break;
 
@@ -325,5 +324,5 @@ ary2list(ary, enc_flag, self)
                         str_val = hash2list(val2, self);
                     }
-                    RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+                    rb_ary_push(dst, str_val);
                     break;
 
@@ -331,5 +330,5 @@ ary2list(ary, enc_flag, self)
                     if (val2 != TK_None) {
                         str_val = get_eval_string_core(val2, enc_flag, self);
-                        RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+                        rb_ary_push(dst, str_val);
                     }
                 }
@@ -353,5 +352,5 @@ ary2list(ary, enc_flag, self)
             if (val != TK_None) {
                 str_val = get_eval_string_core(val, enc_flag, self);
-                RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+                rb_ary_push(dst, str_val);
 
                 if (req_chk_flag) {
@@ -372,6 +371,6 @@ ary2list(ary, enc_flag, self)
 
     if (RTEST(dst_enc) && !NIL_P(sys_enc)) {
-        for(idx = 0; idx < RARRAY(dst)->len; idx++) {
-            str_val = RARRAY(dst)->ptr[idx];
+        for(idx = 0; idx < RARRAY_LEN(dst); idx++) {
+            str_val = RARRAY_PTR(dst)[idx];
             if (rb_obj_respond_to(self, ID_toUTF8, Qtrue)) {
                 str_val = rb_funcall(self, ID_toUTF8, 1, str_val);
@@ -379,5 +378,5 @@ ary2list(ary, enc_flag, self)
                 str_val = rb_funcall(cTclTkLib, ID_toUTF8, 1, str_val);
             }
-            RARRAY(dst)->ptr[idx] = str_val;
+            RARRAY_PTR(dst)[idx] = str_val;
         }
         val = rb_apply(cTclTkLib, ID_merge_tklist, dst);
@@ -422,9 +421,8 @@ ary2list2(ary, enc_flag, self)
     }
 
-    size = RARRAY(ary)->len;
+    size = RARRAY_LEN(ary);
     dst = rb_ary_new2(size);
-    RARRAY(dst)->len = 0;
-    for(idx = 0; idx < RARRAY(ary)->len; idx++) {
-        val = RARRAY(ary)->ptr[idx];
+    for(idx = 0; idx < RARRAY_LEN(ary); idx++) {
+        val = RARRAY_PTR(ary)[idx];
         str_val = Qnil;
         switch(TYPE(val)) {
@@ -448,5 +446,5 @@ ary2list2(ary, enc_flag, self)
 
         if (!NIL_P(str_val)) {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = str_val;
+            rb_ary_push(dst, str_val);
 
             if (req_chk_flag) {
@@ -466,6 +464,6 @@ ary2list2(ary, enc_flag, self)
 
     if (RTEST(dst_enc) && !NIL_P(sys_enc)) {
-        for(idx = 0; idx < RARRAY(dst)->len; idx++) {
-            str_val = RARRAY(dst)->ptr[idx];
+        for(idx = 0; idx < RARRAY_LEN(dst); idx++) {
+            str_val = RARRAY_PTR(dst)[idx];
             if (rb_obj_respond_to(self, ID_toUTF8, Qtrue)) {
                 str_val = rb_funcall(self, ID_toUTF8, 1, str_val);
@@ -473,5 +471,5 @@ ary2list2(ary, enc_flag, self)
                 str_val = rb_funcall(cTclTkLib, ID_toUTF8, 1, str_val);
             }
-            RARRAY(dst)->ptr[idx] = str_val;
+            RARRAY_PTR(dst)[idx] = str_val;
         }
         val = rb_apply(cTclTkLib, ID_merge_tklist, dst);
@@ -504,21 +502,20 @@ assoc2kv(assoc, ary, self)
     volatile VALUE pair;
     volatile VALUE val;
-    volatile VALUE dst = rb_ary_new2(2 * RARRAY(assoc)->len);
+    volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
 
-    len = RARRAY(assoc)->len;
+    len = RARRAY_LEN(assoc);
 
     for(i = 0; i < len; i++) {
-        pair = RARRAY(assoc)->ptr[i];
+        pair = RARRAY_PTR(assoc)[i];
         if (TYPE(pair) != T_ARRAY) {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = key2keyname(pair);
+            rb_ary_push(dst, key2keyname(pair));
             continue;
         }
-        switch(RARRAY(assoc)->len) {
+        switch(RARRAY_LEN(assoc)) {
         case 2:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = RARRAY(pair)->ptr[2];
+            rb_ary_push(dst, RARRAY_PTR(pair)[2]);
 
         case 1:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = key2keyname(RARRAY(pair)->ptr[0]);
+            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
 
         case 0:
@@ -526,14 +523,12 @@ assoc2kv(assoc, ary, self)
 
         default:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = key2keyname(RARRAY(pair)->ptr[0]);
+            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
 
-            val = rb_ary_new2(RARRAY(pair)->len - 1);
-            RARRAY(val)->len = 0;
-            for(j = 1; j < RARRAY(pair)->len; j++) {
-                RARRAY(val)->ptr[RARRAY(val)->len++] = RARRAY(pair)->ptr[j];
+            val = rb_ary_new2(RARRAY_LEN(pair) - 1);
+            for(j = 1; j < RARRAY_LEN(pair); j++) {
+                rb_ary_push(val, RARRAY_PTR(pair)[j]);
             }
 
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = val;
+            rb_ary_push(dst, val);
         }
     }
@@ -555,22 +550,20 @@ assoc2kv_enc(assoc, ary, self)
     volatile VALUE pair;
     volatile VALUE val;
-    volatile VALUE dst = rb_ary_new2(2 * RARRAY(assoc)->len);
+    volatile VALUE dst = rb_ary_new2(2 * RARRAY_LEN(assoc));
 
-    len = RARRAY(assoc)->len;
+    len = RARRAY_LEN(assoc);
 
     for(i = 0; i < len; i++) {
-        pair = RARRAY(assoc)->ptr[i];
+        pair = RARRAY_PTR(assoc)[i];
         if (TYPE(pair) != T_ARRAY) {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = key2keyname(pair);
+            rb_ary_push(dst, key2keyname(pair));
             continue;
         }
-        switch(RARRAY(assoc)->len) {
+        switch(RARRAY_LEN(assoc)) {
         case 2:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = get_eval_string_core(RARRAY(pair)->ptr[2], Qtrue, self);
+            rb_ary_push(dst, get_eval_string_core(RARRAY_PTR(pair)[2], Qtrue, self));
 
         case 1:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = key2keyname(RARRAY(pair)->ptr[0]);
+            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
 
         case 0:
@@ -578,15 +571,12 @@ assoc2kv_enc(assoc, ary, self)
 
         default:
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = key2keyname(RARRAY(pair)->ptr[0]);
+            rb_ary_push(dst, key2keyname(RARRAY_PTR(pair)[0]));
 
-            val = rb_ary_new2(RARRAY(pair)->len - 1);
-            RARRAY(val)->len = 0;
-            for(j = 1; j < RARRAY(pair)->len; j++) {
-                RARRAY(val)->ptr[RARRAY(val)->len++] = RARRAY(pair)->ptr[j];
+            val = rb_ary_new2(RARRAY_LEN(pair) - 1);
+            for(j = 1; j < RARRAY_LEN(pair); j++) {
+                rb_ary_push(val, RARRAY_PTR(pair)[j]);
             }
 
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = get_eval_string_core(val, Qtrue, self);
+            rb_ary_push(dst, get_eval_string_core(val, Qtrue, self));
         }
     }
@@ -607,5 +597,5 @@ push_kv(key, val, args)
     volatile VALUE ary;
 
-    ary = RARRAY(args)->ptr[0];
+    ary = RARRAY_PTR(args)[0];
 
     if (key == Qundef) return ST_CONTINUE;
@@ -614,10 +604,9 @@ push_kv(key, val, args)
     if (val != TK_None) rb_ary_push(ary, val);
 #endif
-    RARRAY(ary)->ptr[RARRAY(ary)->len++] = key2keyname(key);
+    rb_ary_push(ary, key2keyname(key));
 
     if (val == TK_None) return ST_CHECK;
 
-    RARRAY(ary)->ptr[RARRAY(ary)->len++]
-        = get_eval_string_core(val, Qnil, RARRAY(args)->ptr[1]);
+    rb_ary_push(ary, get_eval_string_core(val, Qnil, RARRAY_PTR(args)[1]));
 
     return ST_CHECK;
@@ -630,12 +619,7 @@ hash2kv(hash, ary, self)
     VALUE self;
 {
-    volatile VALUE args = rb_ary_new2(2);
     volatile VALUE dst = rb_ary_new2(2 * RHASH(hash)->tbl->num_entries);
+    volatile VALUE args = rb_ary_new3(2, dst, self);
 
-    RARRAY(dst)->len = 0;
-
-    RARRAY(args)->ptr[0] = dst;
-    RARRAY(args)->ptr[1] = self;
-    RARRAY(args)->len = 2;
     st_foreach(RHASH(hash)->tbl, push_kv, args);
 
@@ -655,5 +639,5 @@ push_kv_enc(key, val, args)
     volatile VALUE ary;
 
-    ary = RARRAY(args)->ptr[0];
+    ary = RARRAY_PTR(args)[0];
 
     if (key == Qundef) return ST_CONTINUE;
@@ -662,13 +646,12 @@ push_kv_enc(key, val, args)
     if (val != TK_None) {
         rb_ary_push(ary, get_eval_string_core(val, Qtrue, 
-                                              RARRAY(args)->ptr[1]));
+                                              RARRAY_PTR(args)[1]));
     }
 #endif
-    RARRAY(ary)->ptr[RARRAY(ary)->len++] = key2keyname(key);
+    rb_ary_push(ary, key2keyname(key));
 
     if (val == TK_None) return ST_CHECK;
 
-    RARRAY(ary)->ptr[RARRAY(ary)->len++] 
-        = get_eval_string_core(val, Qtrue, RARRAY(args)->ptr[1]);
+    rb_ary_push(ary, get_eval_string_core(val, Qtrue, RARRAY_PTR(args)[1]));
 
     return ST_CHECK;
@@ -681,12 +664,7 @@ hash2kv_enc(hash, ary, self)
     VALUE self;
 {
-    volatile VALUE args = rb_ary_new2(2);
     volatile VALUE dst = rb_ary_new2(2 * RHASH(hash)->tbl->num_entries);
+    volatile VALUE args = rb_ary_new3(2, dst, self);
 
-    RARRAY(dst)->len = 0;
-
-    RARRAY(args)->ptr[0] = dst;
-    RARRAY(args)->ptr[1] = self;
-    RARRAY(args)->len = 2;
     st_foreach(RHASH(hash)->tbl, push_kv_enc, args);
 
@@ -923,5 +901,4 @@ tk_conv_args(argc, argv, self)
     /* dst = rb_ary_new2(argc - 2); */
     dst = rb_ary_new2(size);
-    RARRAY(dst)->len = 0;
     for(idx = 2; idx < argc; idx++) {
         if (TYPE(argv[idx]) == T_HASH) {
@@ -932,6 +909,5 @@ tk_conv_args(argc, argv, self)
             }
         } else if (argv[idx] != TK_None) {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = get_eval_string_core(argv[idx], argv[1], self);
+            rb_ary_push(dst, get_eval_string_core(argv[idx], argv[1], self));
         }
     }
@@ -1302,9 +1278,9 @@ cbsubst_get_subst_key(self, str)
     list = rb_funcall(cTclTkLib, ID_split_tklist, 1, str);
 
-    len = RARRAY(list)->len;
+    len = RARRAY_LEN(list);
     buf = ALLOC_N(char, len + 1);
 
     for(i = 0; i < len; i++) {
-        ptr = RSTRING_PTR(RARRAY(list)->ptr[i]);
+        ptr = RSTRING_PTR(RARRAY_PTR(list)[i]);
         if (*ptr == '%' && *(ptr + 2) == '\0') {
             *(buf + i) = *(ptr + 1);
@@ -1357,5 +1333,5 @@ cbsubst_table_setup(self, key_inf, proc_
     struct cbsubst_info *subst_inf;
     int idx;
-    int len = RARRAY(key_inf)->len;
+    int len = RARRAY_LEN(key_inf);
     int real_len = 0;
     char *key = ALLOC_N(char, len + 1);
@@ -1382,8 +1358,8 @@ cbsubst_table_setup(self, key_inf, proc_
      */
     for(idx = 0; idx < len; idx++) {
-        inf = RARRAY(key_inf)->ptr[idx];
+        inf = RARRAY_PTR(key_inf)[idx];
         if (TYPE(inf) != T_ARRAY) continue;
-        *(key  + real_len) = (char)NUM2INT(RARRAY(inf)->ptr[0]);
-        *(type + real_len) = (char)NUM2INT(RARRAY(inf)->ptr[1]);
+        *(key  + real_len) = (char)NUM2INT(RARRAY_PTR(inf)[0]);
+        *(type + real_len) = (char)NUM2INT(RARRAY_PTR(inf)[1]);
 
         *(ivar + real_len) 
@@ -1391,9 +1367,9 @@ cbsubst_table_setup(self, key_inf, proc_
                 RSTRING_PTR(
                   rb_str_cat2(rb_str_new2("@"), 
-                              rb_id2name(SYM2ID(RARRAY(inf)->ptr[2])))
+                              rb_id2name(SYM2ID(RARRAY_PTR(inf)[2])))
                 )
               );
 
-        rb_attr(self, SYM2ID(RARRAY(inf)->ptr[2]), 1, 0, Qtrue);
+        rb_attr(self, SYM2ID(RARRAY_PTR(inf)[2]), 1, 0, Qtrue);
         real_len++;
     }
@@ -1407,9 +1383,9 @@ cbsubst_table_setup(self, key_inf, proc_
      *         proc  ==> proc/method/obj (must respond to 'call')
      */
-    len = RARRAY(proc_inf)->len;
+    len = RARRAY_LEN(proc_inf);
     for(idx = 0; idx < len; idx++) {
-        inf = RARRAY(proc_inf)->ptr[idx];
+        inf = RARRAY_PTR(proc_inf)[idx];
         if (TYPE(inf) != T_ARRAY) continue;
-        rb_hash_aset(proc, RARRAY(inf)->ptr[0], RARRAY(inf)->ptr[1]);
+        rb_hash_aset(proc, RARRAY_PTR(inf)[0], RARRAY_PTR(inf)[1]);
     }
 
@@ -1436,5 +1412,5 @@ cbsubst_scan_args(self, arg_key, val_ary
     struct cbsubst_info *inf;
     int idx;
-    int len = RARRAY(val_ary)->len;
+    int len = RARRAY_LEN(val_ary);
     char c;
     char *ptr;
@@ -1452,5 +1428,4 @@ cbsubst_scan_args(self, arg_key, val_ary
                     struct cbsubst_info, inf);
 
-    RARRAY(dst)->len = 0;
     for(idx = 0; idx < len; idx++) {
         if (idx >= RSTRING_LEN(arg_key)) {
@@ -1469,8 +1444,7 @@ cbsubst_scan_args(self, arg_key, val_ary
 
         if (NIL_P(proc)) {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] = RARRAY(val_ary)->ptr[idx];
+            rb_ary_push(dst, RARRAY_PTR(val_ary)[idx]);
         } else {
-            RARRAY(dst)->ptr[RARRAY(dst)->len++] 
-                = rb_funcall(proc, ID_call, 1, RARRAY(val_ary)->ptr[idx]);
+            rb_ary_push(dst, rb_funcall(proc, ID_call, 1, RARRAY_PTR(val_ary)[idx]));
         }
     }


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next