ruby-changes:2260
From: ko1@a...
Date: 22 Oct 2007 11:03:21 +0900
Subject: [ruby-changes:2260] nobu - Ruby:r13751 (trunk): * encoding.c (enc_check_encoding): returns index now.
nobu 2007-10-22 11:03:10 +0900 (Mon, 22 Oct 2007) New Revision: 13751 Modified files: trunk/ChangeLog trunk/encoding.c Log: * encoding.c (enc_check_encoding): returns index now. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13751&r2=13750 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/encoding.c?r1=13751&r2=13750 Index: encoding.c =================================================================== --- encoding.c (revision 13750) +++ encoding.c (revision 13751) @@ -56,36 +56,39 @@ return enc; } -static rb_encoding * +static int enc_check_encoding(VALUE obj) { + int index; if (SPECIAL_CONST_P(obj) || BUILTIN_TYPE(obj) != T_DATA || RDATA(obj)->dmark != enc_mark) { - return 0; + return -1; } - return RDATA(obj)->data; + index = rb_enc_get_index(obj); + if (rb_enc_from_index(index) != RDATA(obj)->data) + return -1; + return index; } static rb_encoding * enc_get_encoding(VALUE obj) { - rb_encoding *enc = enc_check_encoding(obj); - if (!enc) { + if (enc_check_encoding(obj) < 0) { rb_raise(rb_eTypeError, "wrong argument type %s (expected Encoding)", rb_obj_classname(obj)); } - return enc; + return RDATA(obj)->data; } int rb_to_encoding_index(VALUE enc) { - rb_encoding *encoding; + int idx; if (NIL_P(enc)) return 0; - encoding = enc_check_encoding(enc); - if (encoding) { - return rb_enc_to_index(encoding); + idx = enc_check_encoding(enc); + if (idx >= 0) { + return index; } else { return rb_enc_find_index(StringValueCStr(enc)); @@ -99,8 +102,8 @@ int idx; if (NIL_P(enc)) return rb_enc_from_index(0); - encoding = enc_check_encoding(enc); - if (encoding) return encoding; + idx = enc_check_encoding(enc); + if (idx >= 0) return RDATA(obj)->data; if ((idx = rb_enc_find_index(StringValueCStr(enc))) < 0) { rb_raise(rb_eArgError, "unknown encoding name - %s", RSTRING_PTR(enc)); } Index: ChangeLog =================================================================== --- ChangeLog (revision 13750) +++ ChangeLog (revision 13751) @@ -1,5 +1,7 @@ -Mon Oct 22 10:57:07 2007 Nobuyoshi Nakada <nobu@r...> +Mon Oct 22 11:03:09 2007 Nobuyoshi Nakada <nobu@r...> + * encoding.c (enc_check_encoding): returns index now. + * encoding.c (rb_enc_compatible): check if two objects have compatible encodings. -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml