From: "authorNari (Narihiro Nakamura)" <authorNari@...> Date: 2012-10-01T13:15:49+09:00 Subject: [ruby-dev:46181] [ruby-trunk - Feature #7047] Add new C API: rb_newobj_with Issue #7047 has been updated by authorNari (Narihiro Nakamura). ko1 (Koichi Sasada) wrote: > (2012/09/26 22:22), authorNari (Narihiro Nakamura) wrote: > > rb_newobj_with(klass, VALUE flags) でパッチを修正しました。 > > flags を取るようにしたので,rb_newobj_with_flags でどうでしょうか. > 何かしら,マクロで隠蔽して,実質こいつは呼ばない,となると,長い名前でも > 良いのではないか,と思うのですが(別に長くてもいいか?). > まつもとさんに直接意見を聞いてみました。 with_flagsでもいいと思うんだけど、引数としてはflagsもklassも、どちらも 何かしらのタイプを受け取るので、 rb_newobj_of(xxx) がいいのじゃないか、 とおっしゃってました。new obj of class みたいな意味で。 * rb_newobj_of(klass, VALUE flags) * NEWOBJ_OF(obj,type,klass,flags) 反対意見がでなければこれで進めようかと思うのですが、いかがでしょうか? # あとでruby-coreの方にも聞いてみます。 ---------------------------------------- Feature #7047: Add new C API: rb_newobj_with https://bugs.ruby-lang.org/issues/7047#change-29816 Author: authorNari (Narihiro Nakamura) Status: Open Priority: Normal Assignee: Category: Target version: 2.0.0 nariです。 現在のCRubyではオブジェクトを割り当てる際に rb_newobj() という関数を利 用していますが、引数にtypeやklassがないため、たとえばT_STRINGだけ違うと ころに割り当てるなどの特別な処理がやりづらくなっています。 そこで以下のC APIの追加を提案します。 * VALUE rb_newobj_with(VALUE, enum ruby_value_type); * #define NEWOBJ_WITH(obj,type,klass,flags) ruby内部でrb_newobj()を使っているところはrb_newobj_with()に置き換えたい と考えています。互換性のためにrb_newobj・NEWOBJ・OBJSETUP自体は残します が、将来的には消したいですね。ただ2.0では難しそうです。 パッチは以下のとおりです。 https://github.com/authorNari/ruby/compare/trunk...rb_newobj2.patch また、rb_newobj_withという名前よりよい名前(rb_newobj2以外)があれば教 えてもらえると嬉しいです。 -- http://bugs.ruby-lang.org/