From: Masao M. <mu...@hi...> - 2004-08-22 14:17:44
|
むとうです。 On Tue, 17 Aug 2004 23:05:15 +0900 Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > ちと、GError周りの実装について再考してみました。 > > 現在、GError周りは以下のような実装になっていることが多いです。 > 以下のように仕様変更したいと考えています。 > > class > GConf::Error > > public methods > GConf::Error#message > GConf::Error#code > # GConf::Error#code returns > > constants > GConf::Error::FAILED > GConf::Error::NO_SERVER > GConf::Error::NO_PERMISION > : > : > : > > とりあえず、GLibあたりから手を着けていこうかと > 思っているのですが、何かご意見ありますでしょうか? 特に反対意見も無かったので、上記を実装しました。 以下の2つのマクロを追加しています。 G_DEF_ERROR(domain_quark, name, module, parent, enum_type) G_DEF_ERROR2(domain_quark, name, module, parent) GEnumなエラー用定数値を持つ場合は前者を使ってください。 これで、RAISE_GERROR()を使うと、適切なエラークラスの インスタンスを生成して例外をあげるようになります。 登録されていないエラークラスの場合はGLib::Errorクラスの インスタンスを作りますので、今すぐにG_DEF_ERRORしないと 今までのものが動かなくなると言うわけではないです。 そうそう、今回の修正でABIが損なわれてしまいました。 make clean; make; make installでお願いします。 余談ですが。 もともと、GEnumな値はGLib::Enumのサブクラスにしようかとも 思ったのですが、Integerな値にしました。 #もともと、GLib::Enumなクラスのサブクラスにするためのクラス名 #を適切にすることが思いつかなかったからです。 -- .:% Masao Mutoh<mu...@hi...> |