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/