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

ruby-changes:20763

From: naruse <ko1@a...>
Date: Tue, 2 Aug 2011 16:35:32 +0900 (JST)
Subject: [ruby-changes:20763] naruse:r32811 (trunk): * encoding.c (str_to_encoding): rename from to_encoding and

naruse	2011-08-02 16:35:21 +0900 (Tue, 02 Aug 2011)

  New Revision: 32811

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

  Log:
    * encoding.c (str_to_encoding): rename from to_encoding and
      use str_to_encindex.
    
    * encoding.c (str_to_encindex): split from to_encoding.
    
    * encoding.c (rb_to_encoding): use str_to_encoding.
    
    * encoding.c (rb_obj_encoding): don't bypass rb_encoding*.
      If it uses rb_encoding*, it bypass encindex. If it uses encindex,
      it doesn't bypass.
    
    * encoding.c (enc_find): add shortcut for encoding object, use
      str_to_encindex, and avoid bypass rb_encoding*.

  Modified files:
    trunk/ChangeLog
    trunk/encoding.c

Index: encoding.c
===================================================================
--- encoding.c	(revision 32810)
+++ encoding.c	(revision 32811)
@@ -159,8 +159,8 @@
     return rb_enc_find_index(StringValueCStr(enc));
 }
 
-static rb_encoding *
-to_encoding(VALUE enc)
+static int
+str_to_encindex(VALUE enc)
 {
     int idx;
 
@@ -172,14 +172,20 @@
     if (idx < 0) {
 	rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(enc));
     }
-    return rb_enc_from_index(idx);
+    return idx;
 }
 
+static rb_encoding *
+str_to_encoding(VALUE enc)
+{
+    return rb_enc_from_index(str_to_encindex(enc));
+}
+
 rb_encoding *
 rb_to_encoding(VALUE enc)
 {
     if (enc_check_encoding(enc) >= 0) return RDATA(enc)->data;
-    return to_encoding(enc);
+    return str_to_encoding(enc);
 }
 
 void
@@ -823,11 +829,11 @@
 VALUE
 rb_obj_encoding(VALUE obj)
 {
-    rb_encoding *enc = rb_enc_get(obj);
-    if (!enc) {
+    int idx = rb_enc_get_index(obj);
+    if (idx < 0) {
 	rb_raise(rb_eTypeError, "unknown encoding");
     }
-    return rb_enc_from_encoding(enc);
+    return rb_enc_from_encoding_index(idx);
 }
 
 int
@@ -1045,7 +1051,9 @@
 static VALUE
 enc_find(VALUE klass, VALUE enc)
 {
-    return rb_enc_from_encoding(rb_to_encoding(enc));
+    if (!SPECIAL_CONST_P(enc) && BUILTIN_TYPE(enc) == T_DATA && is_data_encoding(enc))
+	return enc;
+    return rb_enc_from_encoding_index(str_to_encindex(enc));
 }
 
 /*
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32810)
+++ ChangeLog	(revision 32811)
@@ -1,3 +1,19 @@
+Tue Aug  2 15:53:37 2011  NARUSE, Yui  <naruse@r...>
+
+	* encoding.c (str_to_encoding): rename from to_encoding and
+	  use str_to_encindex.
+
+	* encoding.c (str_to_encindex): split from to_encoding.
+
+	* encoding.c (rb_to_encoding): use str_to_encoding.
+
+	* encoding.c (rb_obj_encoding): don't bypass rb_encoding*.
+	  If it uses rb_encoding*, it bypass encindex. If it uses encindex,
+	  it doesn't bypass.
+
+	* encoding.c (enc_find): add shortcut for encoding object, use
+	  str_to_encindex, and avoid bypass rb_encoding*.
+
 Tue Aug  2 12:03:16 2011  Nobuyoshi Nakada  <nobu@r...>
 
 	* hash.c (recursive_hash): hash value of emptied hash should be

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

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