こんばんは、伊達です。
うーむ。何だかボケてますね、恥ずかしい。。。

> File のインスタンスに対して GetOpenFile() して GetReadFile() とか
> GetWriteFile() とかでファイルディスクリプタが得られますけど,それじゃ
> だめ?
>
> # see rubyio.h,io.c.

良く考えるまでもなくファイルディスクリプタってストリームでしたね。
それをファイルに繋げるか、標準入出力と繋げるかの違いで
File か IO(STDIN/STDOUT) と。
しかし、GetOpenFile は Ruby/libpng の
作り始めの時に使おうとしたものの良く分からずに挫折した覚えがあります。
早分かり OpenFile みたいなソースないですか?

> こっちは特にいいアイディアありません.っていうか,これ,本当にどうにか
> なるもんだと思います? データはバイト列としてしか読み書きできないんだし,
> そうすると String で受渡しするのはこの上なく自然に見えるんですけど.

考えていたイメージはこんな感じです。
Ruby/libpng を使ってPNG ビュワーを作るとします。
ビュワーは自分の環境に合わせた画像データを得るために PNG::Reader に指示を送
ります。
(オーダーをBGRにしたりガンマ値を設定する関数が libpng には用意されていま
す)
PNG::Reader は加工した画像データを PNG::Image として吐き出します。
ただ表示するだけならビュワーは PNG::Image から生の画像データを取り出すだけで
す。
さらに縮小拡大などの加工をしたい場合には例えば Graphics::Manipulator に
PNG::Image を渡してやると。

ってグラフィックスライブラリを作らなきゃいけないですね。
余計なことを考えずに String にしておきます(^^;

| DATE Ken
| Software Engineering Lab. Meiji Univ.