Project

General

Profile

Feature #7047

Add new C API: rb_newobj_with

Added by authorNari (Narihiro Nakamura) almost 8 years ago. Updated over 7 years ago.

Status:
Closed
Priority:
Normal
Target version:
[ruby-dev:46159]

Description

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以外)があれば教
えてもらえると嬉しいです。


Related issues

Has duplicate Ruby master - Feature #7177: Proposal of a new C APIClosedauthorNari (Narihiro Nakamura)10/17/2012Actions

Also available in: Atom PDF