いがらしです。いつもdelayが大きくてごめんなさい。

At Sun, 14 May 2000 23:19:18 -0400,
in [ruby-ext:01076] Re: Gtk::Window#set_geometry_hints,
Yasushi Shoji <yashi / yashi.com> wrote:
> 
> > > +static VALUE
> > > +gwin_set_geometry_hints(self, geometry_widget, geometry, geom_mask)
> > > +    VALUE self, geometry_widget, geometry, geom_mask;
> > 
> > そしてこれなんですが、CレベルでのGdkGeometryとGdkWindowHints
> > (ここでは変数geometry, geom_mask)は、RubyではHash1つで
> > 表現できますね。
> > 他にGdkGeometryの使い道はなく、setter/getter以外にメソッドも
> > 不要なので、新たにクラスを定義する必要はないのかも知れません。
> 
> hashでとは、どんな感じででしょうか?

なんか寝惚けてたみたいです。
考えていたことはnamed argumentsとさほど違いません。

named argumentsが使えるようになったとしたら、例えばCで
    GdkWindow *window;
    /* ... */
    GdkGeometry geom;
    geom.min_width = 100;
    geom.min_height = 100;
    geom.max_width = 200;
    geom.max_height = 200;
    gdk_set_geometry_hints(window, &geom, GDK_HINT_MIN_SIZE|GDK_HINT_MAX_SIZE);
のようなコードをRubyで
    window.set_geometry_hints(min_size: [100, 100], max_size: [200, 200])
な感じですよね。Cで実装されるメソッドにどう渡ってくるのかは
分かりませんが。

で、これはHashを受け取れるようにして
    window.set_geometry_hints({:min_size=>[100, 100], :max_size=>[200, 200]})
とするのと実質等価かなと。
width/heightはセットで指定しなくてはいけないので、
そのチェックを入れなくてはいけないです。

あとこうしてみてみると、利用する側もあんまり楽にならないような
気がしてきました。やすしさんのパッチのままでいいかな。

--
五十嵐  宏  (Hiroshi IGARASHI)