diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-23 07:00:50 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-11-23 07:00:50 +0000 |
commit | e5b80d58446ab6882e5d45d5b737e9a6ea70d890 (patch) | |
tree | 766be5e92103ecf3001063b0ff5a703f95bfc3b9 /struct.c | |
parent | de110ffd3c2c39ffda9b91e2da351c3dc4e877db (diff) | |
download | ruby-e5b80d58446ab6882e5d45d5b737e9a6ea70d890.tar.gz ruby-e5b80d58446ab6882e5d45d5b737e9a6ea70d890.tar.xz ruby-e5b80d58446ab6882e5d45d5b737e9a6ea70d890.zip |
* struct.c (rb_struct_alloc_noinit): new function.
(rb_struct_define_without_accessor): add allocator to the arguments.
* range.c (range_alloc): re-introduced using rb_struct_alloc_noinit.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'struct.c')
-rw-r--r-- | struct.c | 13 |
1 files changed, 11 insertions, 2 deletions
@@ -218,7 +218,13 @@ make_struct(VALUE name, VALUE members, VALUE klass) } VALUE -rb_struct_define_without_accessor(char *class_name, VALUE super, ...) +rb_struct_alloc_noinit(VALUE klass) +{ + return struct_alloc(klass); +} + +VALUE +rb_struct_define_without_accessor(char *class_name, VALUE super, rb_alloc_func_t alloc, ...) { VALUE klass; va_list ar; @@ -247,7 +253,10 @@ rb_struct_define_without_accessor(char *class_name, VALUE super, ...) rb_iv_set(klass, "__size__", LONG2NUM(RARRAY_LEN(members))); rb_iv_set(klass, "__members__", members); - rb_define_alloc_func(klass, struct_alloc); + if (alloc) + rb_define_alloc_func(klass, alloc); + else + rb_define_alloc_func(klass, struct_alloc); return klass; } |