From: Kouhei S. <ko...@co...> - 2014-09-27 09:05:23
|
須藤です。 In <542...@gm...> "[ruby-gnome2-devel-ja] Rubinius非互換なマクロ(RUBY_T_XXX)について" on Sat, 27 Sep 2014 14:19:54 +0900, hiroshi hatake <cos...@gm...> wrote: > Ruby-GNOME2でRUBY_T_XXX形式のマクロを使っている理由は何かあるんでしょうか? それがCRubyの最新のAPIだからです。 (マクロじゃなくてenumですね。) > ruby/ruby.hをみても > https://github.com/ruby/ruby/blob/445086e56b4c847610506cf6bb072ef928329355/include/ruby/ruby.h#L457-L482 > > のようにRUBY_T_XXXをT_XXXへ定義しなおしているようで、 > T_XXXを使ったほうがCRuby以外でも対応しやすくなるんじゃないかなぁと思いま > した。 これは後方互換性のためです。(と私は思っています。) Ruby用のシンボルなのにプレフィックスを付けずに使っているのは 行儀が悪いのでRUBY_をつけるようになったんだと私は思っていま す。で、名前を変えると既存の拡張ライブラリーが動かなくなるの でご完成のためにT_XXXという別名を提供しているんだと思います。 なので、RUBY_T_XXXがないときはRUBY_T_XXXでT_XXXを参照するよ うなマクロを定義するのがよいと思います。 > ここまでは良いんですが、FL_TEST, FL_SINGLETONと言った内部のフラグ周りま > では追ったことがまだないので、 > この辺りで力尽きました…。 ここ、常にsuperclass呼んじゃっていいんじゃないですかねぇ。。。 singleton classかどうかで場合分けせずに。。。 |