From: Yugui Date: 2012-06-15T21:41:32+09:00 Subject: [ruby-dev:45750] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult 2012/6/15 U.Nakamura : > こんにちは、なかむら(う)です。 > > In message "[ruby-dev:45748] Re: [ruby-changes:24028] yugui:r36079 (trunk): Embedding CRuby interpreter without internal headers has been difficult" > on Jun.15,2012 17:29:57, wrote: >> > 何でvoid*なのか一瞬考えたことがあったので、明示するのは悪くないと思います。 >> > 混ざってるならそれは見落としですね。 >> >>  個人的には,opaque ってなんじゃらと混乱しましたので,よくわからんポイ >> ンタだとわかる void * のほうが好きなのですが.hoge_opaque_t ってのは,よ >> く知られた表現なんですかね? >> >>  この辺は,bikeshed になるでしょうか.どうしたもんですかね. > > どう考えてもbikeshedだよなあ、と思いますが、敢えて参戦します。 > まず、rb_opaque_tというのは何も「明示」してないので、void *と > 比べてマシになっているとは思えません。 > 名前の付けられない何かであるということを明示したいのなら、 > void *で十分と思います。 > > 実際には、rb_opaque_tを返す関数を見る限りでは、これはコンパイ > ル結果であろうことは容易に推察できます。 > また、rb_opaque_tを受け取る関数を見る限りでは、これはnodeなの > であろうということも推察できます。 > というわけで、「コンパイル結果でありnodeである」ということを > 示す名前をつけるのが妥当ではないでしょうか。 > あんまりいい名前ではないですが、rb_compiled_node_tとか。 NODEじゃないんですよね実は。受け取る関数の名前は単なる1.8時代の名残であって現在はiseqです。 こんな風に、APIレベルでは中身について詮索すると幸せにならないのでopaque dataとしてあつかってほしい訳です。 void*でもruby_opaque_tでも変わらないよ、というのは一つの意見としてあり得ますが、今更nodeというのはないと思います。 > > > それでは。 > -- > U.Nakamura > > -- Yuki Sonoda (Yugui) yugui@yugui.jp http://yugui.jp