diff options
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -419,25 +419,29 @@ rb_define_method(klass, name, func, argc) VALUE (*func)(); int argc; { - rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PUBLIC); + ID id = rb_intern(name); + + rb_add_method(klass, id, NEW_CFUNC(func, argc), + (name[0] == 'i' && id == rb_intern("initialize"))? + NOEX_PRIVATE:NOEX_PUBLIC); } void -rb_undef_method(klass, name) +rb_define_private_method(klass, name, func, argc) VALUE klass; char *name; + VALUE (*func)(); + int argc; { - rb_add_method(klass, rb_intern(name), 0, NOEX_PUBLIC); + rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PRIVATE); } void -rb_define_private_method(klass, name, func, argc) +rb_undef_method(klass, name) VALUE klass; char *name; - VALUE (*func)(); - int argc; { - rb_add_method(klass, rb_intern(name), NEW_CFUNC(func, argc), NOEX_PRIVATE); + rb_add_method(klass, rb_intern(name), 0, NOEX_PUBLIC); } VALUE |