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

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

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