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

ruby-changes:7044

From: akr <ko1@a...>
Date: Wed, 13 Aug 2008 15:09:14 +0900 (JST)
Subject: [ruby-changes:7044] Ruby:r18562 (trunk): * transcode.c (econv_init): make flags argument optional.

akr	2008-08-13 15:08:56 +0900 (Wed, 13 Aug 2008)

  New Revision: 18562

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

  Log:
    * transcode.c (econv_init): make flags argument optional.
      (econv_primitive_convert): ditto.

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_econv.rb
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18561)
+++ ChangeLog	(revision 18562)
@@ -1,3 +1,8 @@
+Wed Aug 13 15:08:04 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (econv_init): make flags argument optional.
+	  (econv_primitive_convert): ditto.
+
 Wed Aug 13 14:55:27 2008  Akinori MUSHA  <knu@i...>
 
 	* common.mk (realclean-local): Remove parse.h as well.
Index: test/ruby/test_econv.rb
===================================================================
--- test/ruby/test_econv.rb	(revision 18561)
+++ test/ruby/test_econv.rb	(revision 18562)
@@ -4,10 +4,10 @@
   def assert_econv(ret_expected, dst_expected, src_expected, to, from, src, opt={})
     opt[:obuf_len] ||= 100
     src = src.dup
-    ec = Encoding::Converter.new(from, to, 0)
+    ec = Encoding::Converter.new(from, to)
     dst = ''
     while true
-      ret = ec.primitive_convert(src, dst2="", opt[:obuf_len], 0)
+      ret = ec.primitive_convert(src, dst2="", opt[:obuf_len])
       dst << dst2
       #p [ret, dst, src]
       break if ret != :obuf_full
@@ -35,17 +35,17 @@
   end
 
   def test_errors
-    ec = Encoding::Converter.new("UTF-16BE", "EUC-JP", 0)
+    ec = Encoding::Converter.new("UTF-16BE", "EUC-JP")
     src = "\xFF\xFE\x00A\xDC\x00"
-    ret = ec.primitive_convert(src, dst="", 10, 0)
+    ret = ec.primitive_convert(src, dst="", 10)
     assert_equal("", src)
     assert_equal("", dst)
     assert_equal(:undefined_conversion, ret) # \xFF\xFE is not representable in EUC-JP
-    ret = ec.primitive_convert(src, dst="", 10, 0)
+    ret = ec.primitive_convert(src, dst="", 10)
     assert_equal("", src)
     assert_equal("A", dst)
     assert_equal(:invalid_input, ret) # \xDC\x00 is invalid as UTF-16BE
-    ret = ec.primitive_convert(src, dst="", 10, 0)
+    ret = ec.primitive_convert(src, dst="", 10)
     assert_equal("", src)
     assert_equal("", dst)
     assert_equal(:finished, ret)
@@ -67,13 +67,13 @@
 
   def test_crlf_newline
     ec = Encoding::Converter.new("UTF-8", "EUC-JP", Encoding::Converter::CRLF_NEWLINE)
-    ret = ec.primitive_convert(src="abc\ndef", dst="", 50, 0)
+    ret = ec.primitive_convert(src="abc\ndef", dst="", 50)
     assert_equal([:finished, "", "abc\r\ndef"], [ret, src, dst])
   end
 
   def test_cr_newline
     ec = Encoding::Converter.new("UTF-8", "EUC-JP", Encoding::Converter::CR_NEWLINE)
-    ret = ec.primitive_convert(src="abc\ndef", dst="", 50, 0)
+    ret = ec.primitive_convert(src="abc\ndef", dst="", 50)
     assert_equal([:finished, "", "abc\rdef"], [ret, src, dst])
   end
 end
Index: transcode.c
===================================================================
--- transcode.c	(revision 18561)
+++ transcode.c	(revision 18562)
@@ -1290,15 +1290,21 @@
 }
 
 static VALUE
-econv_init(VALUE self, VALUE from_encoding, VALUE to_encoding, VALUE flags_v)
+econv_init(int argc, VALUE *argv, VALUE self)
 {
+    VALUE from_encoding, to_encoding, flags_v;
     const char *from_e, *to_e;
     rb_trans_t *ts;
     int flags;
 
+    rb_scan_args(argc, argv, "21", &from_encoding, &to_encoding, &flags_v);
+
     StringValue(from_encoding);
     StringValue(to_encoding);
-    flags = NUM2INT(flags_v);
+    if (flags_v == Qnil)
+        flags = 0;
+    else
+        flags = NUM2INT(flags_v);
 
     from_e = RSTRING_PTR(from_encoding);
     to_e = RSTRING_PTR(to_encoding);
@@ -1331,8 +1337,9 @@
 }
 
 static VALUE
-econv_primitive_convert(VALUE self, VALUE input, VALUE output, VALUE output_size_v, VALUE flags_v)
+econv_primitive_convert(int argc, VALUE *argv, VALUE self)
 {
+    VALUE input, output, output_size_v, flags_v;
     rb_trans_t *ts = check_econv(self);
     rb_trans_result_t res;
     const unsigned char *ip, *is;
@@ -1340,8 +1347,13 @@
     long output_size;
     int flags;
 
+    rb_scan_args(argc, argv, "31", &input, &output, &output_size_v, &flags_v);
+
     output_size = NUM2LONG(output_size_v);
-    flags = NUM2INT(flags_v);
+    if (flags_v == Qnil)
+        flags = 0;
+    else
+        flags = NUM2INT(flags_v);
     StringValue(output);
     StringValue(input);
     rb_str_modify(output);
@@ -1397,8 +1409,8 @@
 
     rb_cEncodingConverter = rb_define_class_under(rb_cEncoding, "Converter", rb_cData);
     rb_define_alloc_func(rb_cEncodingConverter, econv_s_allocate);
-    rb_define_method(rb_cEncodingConverter, "initialize", econv_init, 3);
-    rb_define_method(rb_cEncodingConverter, "primitive_convert", econv_primitive_convert, 4);
+    rb_define_method(rb_cEncodingConverter, "initialize", econv_init, -1);
+    rb_define_method(rb_cEncodingConverter, "primitive_convert", econv_primitive_convert, -1);
     rb_define_method(rb_cEncodingConverter, "max_output", econv_max_output, 0);
     rb_define_const(rb_cEncodingConverter, "PARTIAL_INPUT", INT2FIX(PARTIAL_INPUT));
     rb_define_const(rb_cEncodingConverter, "UNIVERSAL_NEWLINE", INT2FIX(UNIVERSAL_NEWLINE));

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

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