|
From: Masahiro S. <s01...@sf...> - 2002-06-12 20:48:19
|
さかいです。
From: Masao Mutoh <mu...@hi...>
Subject: [ruby-gnome2-devel-ja] GLib2
Date: Wed, 12 Jun 2002 07:57:04 +0900
> さかいさん:
> ある程度GLib2周りが落ち着いたら、ここにアナウンスしてください。
> 途中でも結構です。
とりあえず現状の報告(と、自分用メモ)
- これまでgtk.soで行っていた、型とクラスの管理をglib.soに移しました。
私の趣味で若干名前が変更されていたりしますが、
本質的な変更はしてないはずです。
- signalはGClosureを使って実装してみました。
GClosureを使って実装するという方向は正しいと思うけど、
この辺りは良く理解していないので不安。
- ここでの、Ruby<=>glib(GValue) のデータの変換は、
変換用の関数を rbgobj_register_r2g_func() と
rbgobj_register_g2r_func() で登録するようにしてみました。
もっと良い方法がありそう……
- gtk-2.0では、gdkの幾つかの構造体がGObjectを継承したオブジェクトに
なっているので、それへの対応が必要なのですが、まだ作業していません。
- gtk-2.0では、gdkの(オブジェクトになっていない)幾つかの構造体は、
GValueへ格納されるときはGBoxedのサブタイプとして格納されるのですが、
これについてもまだです。
もっと先の事。
細かい事は全然考えてない。(ただの妄想ともいう)
- g_class_list_properties(), g_set_property(), g_get_property()という
関数があるので、これを使うとsetter/getterを手書きする必要がなくなりそう。
- GTypeInterfaceは何に使うのだろう?
- 「(GObject以下の)GType → Rubyのクラス」の写像が単射になるようにした方が、
setter/getterを自動定義する事や、他の色々な事に都合が良いかも。
具体的な実装方法としては
- この写像を実現する関数は、対応するRubyのクラスがまだ存在しない場合に
対応するクラスを無名クラスとして再帰的に作成/登録して、それを返す。
- これまでrb_define_class_under()を使ってクラスを定義していた部分は、
この関数を使って得たクラスで定数を束縛するコードに置き換える。
とか……
> それと、いきなりでなんですが、
> ひとまず、lib/gtk2.rbは今のところrequireだけなので、
> rbgtk.cでrb_require("glib2");して、gtk2.rb自体は削除しませんか。
むとうさんの所ではそれで動いてるんですか?
僕のとこだと、あらかじめglib2.soがロードされていないと、
rubyがgtk2.soのdlopen()自体に失敗してしまいます。
-- さかい
|