Feature #7177
closedProposal of a new C API
Description
Hi.
We uses rb_newobj() in CRuby when we allocates any object.
However, this function has no arguments, so we can not change a
internal allocate method depending klass and flags of any object.
So I propose to add following new C APIs.
- VALUE rb_newobj_of(VALUE klass, VALUE flags);
- #define NEWOBJ_OF(obj,type,klass,flags)
A patch is here.
https://github.com/authorNari/ruby/compare/trunk...rb_newobj2
rb_newobj_of() is named by Matz. I think it's a fitting name.
Please let me know if you have more good name.
Thanks.
Updated by authorNari (Narihiro Nakamura) about 12 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r37275.
Narihiro, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
-
include/ruby/ruby.h: add C APIs.
VALUE rb_newobj_of(VALUE klass, VALUE flags)
#define NEWOBJ_OF(obj,type,klass,flags)
These allow to change a allocation strategy depending on klass
or flags. -
gc.c: ditto
-
array.c: use new C API.
-
bignum.c: ditto
-
class.c: ditto
-
complex.c: ditto
-
ext/socket/ancdata.c: ditto
-
ext/socket/option.c: ditto
-
hash.c: ditto
-
io.c: ditto
-
marshal.c: ditto
-
numeric.c: ditto
-
object.c: ditto
-
random.c: ditto
-
range.c: ditto
-
rational.c: ditto
-
re.c: ditto
-
string.c: ditto