|
From: Masao M. <mu...@hi...> - 2002-06-01 03:19:54
|
むとうです。
On Sat, 01 Jun 2002 03:50:12 +0900
Hiroshi IGARASHI <ig...@ru...> wrote:
> いがらしです。
>
> > > (1) *.defsファイルからのwrapper生成
(略)
> > ・この*.defsファイルってどこにあるんでしょうか?
> > GTK+-2.0のソースにはついてきていないような気がします....。
>
> またまたすみません。
> 2.0になってからはついてきてないみたいですね。
>
> gnome-python独自にメンテするようになってしまったみたいです。
> CVSモジュールgnome-python(GTK+2.0と同じレポジトリにあります)の
> gnome-python/pygtk/gtk/*.defsなどを見て下さい。
>
> 上記gnome-rubyのプロトタイプの*.defsは、
> gnome-pythonからぱくらせてもらったもので、
> そのフォーマットについては、このモジュール内の
> gnome-python/pygtk/codegen/README.defs
> を見て下さい。プロトタイプを作った当時よりいろいろ
> 変更されてしまっているようです。
defsファイル自体は自動生成されるものではないのですね。
> にあるような関数群のことですよね。
> 当時の*.defsには入っていませんでした。
> 現在の gnome-python/pygtk/gtk/gdk.defs には含まれています。
> 例えばGdk::Drawable#draw_rgb_32_imageなら以下の通りです。
>
> (define-method draw_rgb_32_image
> (of-object "GdkDrawable")
> (c-name "gdk_draw_rgb_32_image")
> (return-type "none")
> (parameters
> '("GdkGC*" "gc")
> '("gint" "x")
> '("gint" "y")
> '("gint" "width")
> '("gint" "height")
> '("GdkRgbDither" "dith")
> '("guchar*" "buf")
> '("gint" "rowstride")
> )
> )
っていうか、これを書かなきゃいけないってコトですよね...。
まぁ、今は、すでにgnome-pythonのがあるということでそれを流用しようと
いうことだとは思いますが、将来的には。
#gnome-pythonが未サポートなクラス・メソッドが無い場合は
#独自実装するか、自分で上記フォーマットのファイルを作ってpatchを
#gnome-pythonに送るかしないといけないってコトですよね。
これの仕様を覚えて、これを関数毎に書き、いがらしさんのツールを
メンテナンスしつつ、さらにRubyによるWrapperを書くというプロセス
を考えるのなら、従来通りC言語でプログラム書いた方が速いと思うのは
私だけでしょうか。
なんか、正直、自動生成に切り替えるメリットがわからなく
なってきました。
あ、いや、ヒューマンエラーを無くすことができるというのは
自動生成時には常に言われることなのでそれを置いておいたとして。
すでにある*.defsをgnome-pythonからもらってきて、
それからいがらしさんのツールでCのソースを生成して、
それをベースにRuby-GNOMEに無いメソッドやクラス・ライブラリ(bonoboなど)
を開発するということであれば十分使えると思うのですが。
それから、さらに生成されたソースを追ってはいるので追加質問です。
gtk_item_factory_create_items()のようにオブジェクトの配列を
渡すようなのはどうなっているのでしょうか?
defsで定義された引数が配列かどうかをどのように判別しているのか
ということと、配列の場合は引数のVALUEが配列であるとしそれを適切な
Cの型に変換する部分について知りたいです。
--
.:% Masao Mutoh<mu...@hi...>
|