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/