From: hiroshi h. <cos...@gm...> - 2014-09-27 11:04:09
|
畑ケです。 >> 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を参照するよ > うなマクロを定義するのがよいと思います。 なるほど、RUBY_T_XXXの方が新しかったんですね…。 RUBY_T_XXXを定義するように…、とやろうとしました。 ですが、どうせならRubiniusのupstreamへこの辺りのenum事情を報告して、 取り込んでもらったほうが良いかな、と思ったのでプルリクを投げてみました。 https://github.com/rubinius/rubinius/pull/3141 丁度Rubiniusにも過去にglib2のgemのビルドに失敗するというIssue https://github.com/rubinius/rubinius/issues/1988 が上がっていたことも あったので、 治せるならRubinius側で対処できるような形式でした方がお互いにとって良いこ とだと思ったからです。 # 問題を治すのはできる限りupstreamで、可能ならパッチも添えて、ですよね :) >> ここまでは良いんですが、FL_TEST, FL_SINGLETONと言った内部のフラグ周りま >> では追ったことがまだないので、 >> この辺りで力尽きました…。 > ここ、常にsuperclass呼んじゃっていいんじゃないですかねぇ。。。 > singleton classかどうかで場合分けせずに。。。 > こちらはsingleton classの場合分けを削除したコミットをmasterにしました! |