永井@知能.九工大です.

From: Koji Arai <JCA02266 / nifty.ne.jp>
Subject: [ruby-dev:8678] Re: [PATCH] Ruby/Tk
Date: Tue, 21 Dec 1999 05:47:54 +0900
Message-ID: <199912202047.FAA05653 / smtp2.nifty.ne.jp>
JCA02266> 第4弾です。しくしく。

たくさん修正していただいて感謝しています.(_O_)

JCA02266> 1点迷っているのが TkWinfo.id と Tk::Wm#frame が現状通り文字
JCA02266> 列"0xXXXXXX" を返した方が都合がいいような気がすることです。
JCA02266> パッチで実装したTkWinfo.visualsavailable の仕様もちょっと気
JCA02266> になる。
JCA02266> どう思います?>永井さん(指名するやつ ^^;)

呼ばれてしまった.(^_^)

window id については,私も文字列の方が都合が良さそうに感じます.
得られた情報を Tk の中で使い回す限りにおいては,
形式を意識する必要はないはずです.
その場合においては,内部的な扱いだけの問題となるため,
無理に数値化しても Tk に渡す際の再度変換という手間が増えるだけでしょう.
socket 等を使ってアプリケーション間で window id の情報交換をする場合も
かえって文字列の方が都合が良さそうに思えます.
というわけで,私の意見としては,「文字列で返す」を選択します.

TkWinfo.visualsavailable の仕様ですが,
Tk が返してくるのはリストのリストですから,
配列の配列を返すのはいいだろうと思います.
が,includeids をデフォルトで付けてしまうのは反対です.
というのも,例えば,

% toplevel .t1 -visual {toplevel}

と

% toplevel .t2 -visual {toplevel 16}

とは OK ですが,

% toplevel .t3 -visual {toplevel 16 0x22}

は error になりますよね.
includeids が付いていない場合の配列要素は

["toplevel", 16] => "toplevel 16" 

というようになるのでそのままオプションで渡せますが,
余計な id 情報が付くと配列要素を加工しなければならなくなります.
includeids はメソッド呼出時のオプションとするのが良さそうです.

いかがでしょうか?
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp