[#15625] rb_hash_initialize — Takaaki Tateishi <ttate@...>
立石です.
22 messages
2002/01/04
[#15627] Re: rb_hash_initialize
— matz@... (Yukihiro Matsumoto)
2002/01/04
まつもと ゆきひろです
[#15628] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/04
立石です.
[#15632] Re: rb_hash_initialize
— matz@... (Yukihiro Matsumoto)
2002/01/04
まつもと ゆきひろです
[#15634] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/04
立石です.
[#15636] Re: rb_hash_initialize
— kjana@...4lab.to (YANAGAWA Kazuhisa)
2002/01/05
In message <200201042027.g04KR9VI015833@smtp16.dti.ne.jp>
[#15639] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/05
At Sat, 5 Jan 2002 12:06:04 +0900,
[#15640] Re: rb_hash_initialize
— nobu.nakada@...
2002/01/05
なかだです。
[#15641] Re: rb_hash_initialize
— Takaaki Tateishi <ttate@...>
2002/01/05
At Sat, 5 Jan 2002 13:52:55 +0900,
[#15645] Enumerable#to_hash (Re: [ruby-talk:30339] Re: OT: Re: Sorting a Hash by value of integer stored in the Hash) — nobu.nakada@...
なかだです。
4 messages
2002/01/06
[#15649] Re: Enumerable#to_hash (Re: [ruby-talk:30339] Re: OT: Re: Sorting a Hash by value of integer stored in the Hash)
— matz@... (Yukihiro Matsumoto)
2002/01/07
まつもと ゆきひろです
[#15668] Re: [ruby-cvs] ruby, ruby/win32: * win32/resource.rb: Modify copyright in resource script. — nobu.nakada@...
なかだです。
7 messages
2002/01/10
[#15672] Re: [ruby-cvs] ruby, ruby/win32: * win32/resource.rb: Modify copyright in resource script.
— Takahiro Kambe <taca@...>
2002/01/10
余談です。
[#15685] undefined method `inherited' for false (NameError) — WATANABE Hirofumi <eban@...>
わたなべです。
13 messages
2002/01/15
[#15686] Re: undefined method `inherited' for false (NameError)
— nobu.nakada@...
2002/01/15
なかだです。
[#15688] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15689] Re: undefined method `inherited' for false (NameError)
— matz@... (Yukihiro Matsumoto)
2002/01/16
まつもと ゆきひろです
[#15690] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15691] Re: undefined method `inherited' for false (NameError)
— nobu.nakada@...
2002/01/16
なかだです。
[#15692] Re: undefined method `inherited' for false (NameError)
— WATANABE Hirofumi <eban@...>
2002/01/16
わたなべです。
[#15693] Re: undefined method `inherited' for false (NameError)
— matz@... (Yukihiro Matsumoto)
2002/01/16
まつもと ゆきひろです
[#15700] method cache — Takaaki Tateishi <ttate@...>
立石です.
9 messages
2002/01/17
[#15701] Re: method cache
— matz@... (Yukihiro Matsumoto)
2002/01/17
まつもと ゆきひろです
[#15704] Re: method cache
— Takaaki Tateishi <ttate@...>
2002/01/17
At Thu, 17 Jan 2002 18:23:40 +0900,
[#15703] SIG_IGN がひきつがれない — akira yamada / やまだあきら <akira@...>
8 messages
2002/01/17
[#15708] Re: SIG_IGN がひきつがれない
— matz@... (Yukihiro Matsumoto)
2002/01/17
まつもと ゆきひろです
[#15711] clearing method cache in rb_eval() — "K.Kosako" <kosako@...>
rb_eval()の中のNODE_CLASS, NODE_SCLASSの部分で、
5 messages
2002/01/18
[#15733] Win32API enhancement — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
7 messages
2002/01/21
[#15745] Win32OLE — Masaki Suketa <masaki.suketa@...>
助田です。
5 messages
2002/01/21
[#15757] 文字列→整数変換 — nobu.nakada@...
なかだです。
30 messages
2002/01/25
[#15758] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/25
まつもと ゆきひろです
[#15779] Re: 文字列→整数変換
— nobu.nakada@...
2002/01/27
なかだです。
[#15780] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/28
まつもと ゆきひろです
[#15781] Re: 文字列→整数変換
— nobu.nakada@...
2002/01/28
なかだです。
[#15782] Re: 文字列→整数変換
— matz@... (Yukihiro Matsumoto)
2002/01/28
まつもと ゆきひろです
[#15795] [PATCH] improve on \G — nobu.nakada@...
なかだです。
11 messages
2002/01/29
[#15801] Re: [PATCH] improve on \G
— matz@... (Yukihiro Matsumoto)
2002/01/29
まつもと ゆきひろです
[#15796] GC after load — Minero Aoki <aamine@...>
あおきです。
13 messages
2002/01/29
[#15799] Re: GC after load
— Minero Aoki <aamine@...>
2002/01/29
あおきです。舌足らずでした。
[#15802] Re: GC after load
— matz@... (Yukihiro Matsumoto)
2002/01/29
まつもと ゆきひろです
[#15806] Re: GC after load
— Minero Aoki <aamine@...>
2002/01/30
あおきです。
[#15807] Re: GC after load
— matz@... (Yukihiro Matsumoto)
2002/01/30
まつもと ゆきひろです
[#15810] racc fails on alpha-freebsd — Minero Aoki <aamine@...>
あおきです。
12 messages
2002/01/30
[#15812] Re: racc fails on alpha-freebsd
— matz@... (Yukihiro Matsumoto)
2002/01/30
まつもと ゆきひろです
[#15819] Re: racc fails on alpha-freebsd
— Minero Aoki <aamine@...>
2002/01/31
あおきです。
[#15830] [ 提案 ] puts, print 等を IO から分離 — UENO Katsuhiro <unnie@...>
うえのです。
14 messages
2002/01/31
[#15833] Re: [ 提案 ] puts, print 等を IO から分離
— matz@... (Yukihiro Matsumoto)
2002/02/01
まつもと ゆきひろです
[#15837] Re: [ 提案 ] puts, print 等を IO から分離
— Tanaka Akira <akr@...17n.org>
2002/02/01
In article <1012537417.431157.12483.nullmailer@ev.netlab.jp>,
[ruby-dev:15830] [ 提案 ] puts, print 等を IO から分離
From:
UENO Katsuhiro <unnie@...>
Date:
2002-01-31 19:15:58 UTC
List:
ruby-dev #15830
うえのです。
以前 [ruby-list:23284] で提案したことと同じですが、Ruby/zlib のような
IO クラスに似せたインターフェースを持つクラスを書くにあたって、
write メソッドから puts や print 等を定義するモジュールがあると
嬉しいです。
現状の IO#puts, IO#print, IO#printf, IO#<< は rb_io_write から
自分自身の write メソッドを呼び出すことで書き込みを実現していますから、
これらを IO から分離して Writable というモジュールを丁稚上げてみました。
# 欲しいのは割と複雑な仕様の puts と print で、<< と printf は
# 言ってしまえばオマケです。
こんな感じで分離して頂けると、IO が変更される度に手で GzipWriter を
IO に同期させる必要が無くなるのですが、いかがでしょうか。
なお、read から gets 等を定義するモジュール (Readable?) も考えられる
のですが、抽象化と最適化のトレードオフを考えるとデメリットのほうが
大きいと思われますので、こちらは敢えて要求しません。
Index: io.c
===================================================================
RCS file: /src/ruby/io.c,v
retrieving revision 1.109
diff -u -r1.109 io.c
--- io.c 2002/01/23 07:30:39 1.109
+++ io.c 2002/01/31 18:53:35
@@ -83,6 +83,7 @@
VALUE rb_cIO;
VALUE rb_eEOFError;
VALUE rb_eIOError;
+VALUE rb_mWritable;
VALUE rb_stdin, rb_stdout, rb_stderr, rb_defout;
static VALUE orig_stdin, orig_stdout, orig_stderr;
@@ -281,7 +282,7 @@
}
static VALUE
-rb_io_addstr(io, str)
+rb_writable_addstr(io, str)
VALUE io, str;
{
rb_io_write(io, str);
@@ -2111,7 +2112,7 @@
}
static VALUE
-rb_io_printf(argc, argv, out)
+rb_writable_printf(argc, argv, out)
int argc;
VALUE argv[];
VALUE out;
@@ -2142,7 +2143,7 @@
}
static VALUE
-rb_io_print(argc, argv, out)
+rb_writable_print(argc, argv, out)
int argc;
VALUE *argv;
VALUE out;
@@ -2181,7 +2182,7 @@
int argc;
VALUE *argv;
{
- rb_io_print(argc, argv, rb_defout);
+ rb_writable_print(argc, argv, rb_defout);
return Qnil;
}
@@ -2214,10 +2215,10 @@
return rb_io_putc(rb_defout, ch);
}
-static VALUE rb_io_puts _((int, VALUE*, VALUE));
+static VALUE rb_writable_puts _((int, VALUE*, VALUE));
static VALUE
-io_puts_ary(ary, out)
+writable_puts_ary(ary, out)
VALUE ary, out;
{
VALUE tmp;
@@ -2228,13 +2229,13 @@
if (rb_inspecting_p(tmp)) {
tmp = rb_str_new2("[...]");
}
- rb_io_puts(1, &tmp, out);
+ rb_writable_puts(1, &tmp, out);
}
return Qnil;
}
static VALUE
-rb_io_puts(argc, argv, out)
+rb_writable_puts(argc, argv, out)
int argc;
VALUE *argv;
VALUE out;
@@ -2254,7 +2255,7 @@
else {
line = rb_check_convert_type(argv[i], T_ARRAY, "Array", "to_ary");
if (!NIL_P(line)) {
- rb_protect_inspect(io_puts_ary, line, out);
+ rb_protect_inspect(writable_puts_ary, line, out);
continue;
}
line = rb_obj_as_string(argv[i]);
@@ -2273,7 +2274,7 @@
int argc;
VALUE *argv;
{
- rb_io_puts(argc, argv, rb_defout);
+ rb_writable_puts(argc, argv, rb_defout);
return Qnil;
}
@@ -3530,6 +3531,12 @@
rb_define_global_function("p", rb_f_p, -1);
rb_define_method(rb_mKernel, "display", rb_obj_display, -1);
+ rb_mWritable = rb_define_module("Writable");
+ rb_define_method(rb_mWritable, "puts", rb_writable_puts, -1);
+ rb_define_method(rb_mWritable, "print", rb_writable_print, -1);
+ rb_define_method(rb_mWritable, "printf", rb_writable_printf, -1);
+ rb_define_method(rb_mWritable, "<<", rb_writable_addstr, 1);
+
rb_cIO = rb_define_class("IO", rb_cObject);
rb_include_module(rb_cIO, rb_mEnumerable);
@@ -3563,10 +3570,8 @@
rb_define_method(rb_cIO, "clone", rb_io_clone, 0);
rb_define_method(rb_cIO, "reopen", rb_io_reopen, -1);
- rb_define_method(rb_cIO, "print", rb_io_print, -1);
+ rb_include_module(rb_cIO, rb_mWritable);
rb_define_method(rb_cIO, "putc", rb_io_putc, 1);
- rb_define_method(rb_cIO, "puts", rb_io_puts, -1);
- rb_define_method(rb_cIO, "printf", rb_io_printf, -1);
rb_define_method(rb_cIO, "each", rb_io_each_line, -1);
rb_define_method(rb_cIO, "each_line", rb_io_each_line, -1);
@@ -3595,7 +3600,6 @@
rb_define_method(rb_cIO, "getc", rb_io_getc, 0);
rb_define_method(rb_cIO, "readchar", rb_io_readchar, 0);
rb_define_method(rb_cIO, "ungetc",rb_io_ungetc, 1);
- rb_define_method(rb_cIO, "<<", rb_io_addstr, 1);
rb_define_method(rb_cIO, "flush", rb_io_flush, 0);
rb_define_method(rb_cIO, "tell", rb_io_tell, 0);
rb_define_method(rb_cIO, "seek", rb_io_seek_m, -1);
Index: ruby.h
===================================================================
RCS file: /src/ruby/ruby.h,v
retrieving revision 1.57
diff -u -r1.57 ruby.h
--- ruby.h 2001/12/21 07:20:23 1.57
+++ ruby.h 2002/01/31 18:53:37
@@ -535,6 +535,7 @@
EXTERN VALUE rb_mGC;
EXTERN VALUE rb_mMath;
EXTERN VALUE rb_mProcess;
+EXTERN VALUE rb_mWritable;
EXTERN VALUE rb_cObject;
EXTERN VALUE rb_cArray;
-- ---- - - - -- -
うえの かつひろ <unnie@blue.sky.or.jp>