From: kjana@... (YANAGAWA Kazuhisa) Date: 2000-06-22T21:42:24+09:00 Subject: [ruby-list:23467] Re: IO#read with prepared buffer (was Re: IO.foreach) In message <200005121430.XAA68768@mail2.os.xaxon.ne.jp> kjana@os.xaxon.ne.jp writes: > 考えてたのは > > buf = "\0"*256 > inf.read_with_buf(buf) > > がほぼ > > fread(RSTRING(buf)->ptr, 1, RSTRING(buf)->len, inf); > > になるというもの.返り値は実際に読み込んだバイト数. (略) > だもんで,一度作ったオブジェクトが必ずそのまま使いまわされる,と.もち > ろんこれはループ中で何度も同じ大きさのブロックの読み込まないといきてこ > ないので,だいぶ特定用途向けになってしまいます. とりあえず拡張ライブラリで書いてみました.興味のある方は http://www.os.xaxon.ne.jp/~kjana/ruby/read_in.tar.gz として置いときますのでどうぞ.ドキュメントも何もないですが,まあなんと なくわかるでしょう :-) # IO#read_in を上記のように使う.EOF にあたると nil を返すとこだけ違う # のかな. io.c で定義されている関数一つとマクロ二つをコピーして使っています.関 数の方はいかにも内部用,という感じですが,マクロの方は公開しても良いの ではないでしょうか? # io_fread(),READ_DATA_PENDING,READ_CHECK. あれは要するに非同期 IO を実現するのに使っている,と思って良いのですよ ね? IO のメソッドにしたので,組み込みのメソッドとそれなりに動作をあわ せようとして利用しているのですが. -- 柳川和久 @ 東大阪市 . 大阪府 June 22, 2000 依存の終わり 依存への依存の終わり それは個の誕生