From: Masao M. <mu...@hi...> - 2006-12-05 17:29:48
|
むとうです。 On Tue, 05 Dec 2006 23:56:41 +0900 (JST) Kouhei Sutou <ko...@co...> wrote: > 須藤です. > > In <200...@hi...> > "Re: [ruby-gnome2-devel-ja] Ruby/GLib2でglib-mkenumsを使いたい" on Tue, 5 Dec 2006 02:26:21 +0900, > Masao Mutoh <mu...@hi...> wrote: > > > > ただ,Ruby/GLib2はGObjectに依存しているので,Ruby/GLib2側で > > > GLibのヘッダーファイルからglib-mkenumsを用いてGTypeを作って > > > も問題なさそうに思います.私は,Ruby/GLib2内でGLibのenumを定 > > > 義するためにG_DEF_CONSTANTSを使いたいので,こんなパッチを当 > > > ててもいいですか? > > > > なるほど。便利ですね。当ててくださいませ。 > > #ただ、これ、当てた後、既存のコード部分で定数を使っている > > #ところも修正が必要じゃないですか? > > RVAL2GENUM()がIntegerの場合でも頑張って動いてくれるので大丈 > 夫だと思います. まぁ、そうですね。ま、せっかくですので、おいおい対応していきましょうか。 > > ただ、せっかくですので、pkg-config.rbのように、 > > glib/src/lib/glib-mkenums.rb というファイルを作って、 > > 他のライブラリからも呼び出すことができるようにして > > いただけるとさらにうれしいです ;)。 > > そうしました. この際なので、ちと、API整理しちゃっていいですか? 現在: module GLib def mkenums(prefix, files, g_type_prefix, include_files) def mkenums_c(prefix, files, include_files) def mkenums_h(prefix, files, g_type_prefix) def run_mkenums(output, config, files) end module GLibMkenums def exist?(pkg) def libs(pkg) def libs_only_L(pkg) def libs_only_l(pkg) def cflags(pkg) def cflags_only_I(pkg) def cflags_only_other(pkg) def variable(pkg, var) def modversion(pkg) def version def list_all def name(pkg) def description(pkg) def provides(pkg) def requires(pkg) def check_version?(pkg, major = 0, minor = 0, micro = 0) def have_package(pkg, major = nil, minor = 0, micro = 0) end 変更案: module GLibMkenums def create(prefix, files, g_type_prefix, include_files) #was mkenums def create_c(prefix, files, include_files) #was mkenum_c def create_h(prefix, files, g_type_prefix) #was mkenum_h def run(output, config, files) #was run_mkenums def exist?(pkg) def libs(pkg) def libs_only_L(pkg) def libs_only_l(pkg) def cflags(pkg) def cflags_only_I(pkg) def cflags_only_other(pkg) def variable(pkg, var) def modversion(pkg) def version def list_all def name(pkg) def description(pkg) def provides(pkg) def requires(pkg) def check_version?(pkg, major = 0, minor = 0, micro = 0) def have_package(pkg, major = nil, minor = 0, micro = 0) end ・GLib直下にメソッドを作らずにGLibMkenumsにまとめる。 →GLibMkenumsはGlib::Mkenumsの方が良いかもしれませんね。 ・GLib直下に配置していたメソッド名はcreate_, runと変えてみました。 create_, run以外でもexecuteとかでもいいかもしれません。 exist?以下の配置を見るとClassにしても良いかなぁ、 とちょっと思いました。 PKGconfigも同じ構成なんですよねぇ。まぁ、歴史的な経緯もあるので それはひとまず棚にあげて。 module GLib class Mkenums def self.create(prefix, files, g_type_prefix, include_files) #was mkenums def self.create_c(prefix, files, include_files) #was mkenum_c def self.create_h(prefix, files, g_type_prefix) #was mkenum_h def self.run(output, config, files) #was run_mkenums def self.version def self.list_all def initialize(pkg) def exist? def libs def libs_only_L def libs_only_l def cflags def cflags_only_I def cflags_only_other def variable(var) def modversion def name def description def provides def requires def check_version?(major = 0, minor = 0, micro = 0) def have_package(major = nil, minor = 0, micro = 0) end end 例: mkenums = GLib::Mkenums.new(pkg) mkenums.cflags mkenums.libs って。こっちはちょっとやりすぎですかね? まぁ、GLib直下にメソッドを作らなければModuleでもClassでも いいかなぁ、と思いますが、どうでしょう。 |