むとうです。
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...>
|