From: Masahiro S. ()
<sa...@to...> - 2003-07-10 15:30:57
|
さかいです。 From: Masao Mutoh <mu...@hi...> Subject: Re: [ruby-gnome2-devel-ja] Accept rb_cObject as G_TYPE_POINTER? Date: Thu, 10 Jul 2003 23:03:24 +0900 > むとうです。 > > 正しいVALUEかどうかわからないポインタにrb_obj_is_kind_of()を適用するのは > > 危険ではないでしょうか? > > rbgobj_gvalue_to_rvalue()に渡されるGValue値でgpointerに渡される > VALUE以外の値は無いんじゃないのかなぁ、と思いそのようにしました。 > あったらバグかなと。 例えば、GCされたVALUEが渡って来る可能性はどうでしょうか? > 一部、シグナル等でgpointerが返ってくるのがあるのですが、それは呼び出し元 > で適切なオブジェクトに独自に変換しますよね。 > そういうのはrbgobj_gvalue_to_rvalue()を使いませんし。 > > ex) > gtk/src/rbgtknotebook.cのsignal_g2r_func(num, values) そのような変換を必ず実装しなくてはいけなくなるのは 個人的には結構嫌です。 > つまり、GLib::Pointerっていらないんじゃないかなと。 > GLib::Pointerのまま返されてもRuby側では使えないですしね。 RubyレベルからはOpaqueだというだけで、 その値を使ってGLibやGtkの機能を呼び出せるのであれば、 存在意義はあるのではないかと思います。 > 実は、上記も、あえてrbobj_ptr_newを残しましたが、それもいらないん > じゃないかなぁと思うのですが、どうでしょうか。 もし仮にptrが常に正しいVALUEならば、 rb_obj_is_kind_of(ptr, rb_cObject) は恒真なので、そういう意味では要らないでしょう。 -- 酒井 政裕 / Masahiro Sakai |