From 6f017366adc1ad465057f9945c24d15c2c3a2106 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 31 May 2013 02:58:45 +0000 Subject: vm_method.c: extract set_visibility * vm_method.c (set_visibility): extract from rb_mod_public(), rb_mod_protected() and rb_mod_private(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_method.c | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) (limited to 'vm_method.c') diff --git a/vm_method.c b/vm_method.c index fe0df18af5..be2224fa63 100644 --- a/vm_method.c +++ b/vm_method.c @@ -1290,6 +1290,19 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex) rb_clear_cache_by_class(self); } +static VALUE +set_visibility(int argc, VALUE *argv, VALUE module, int visi) +{ + secure_visibility(module); + if (argc == 0) { + SCOPE_SET(visi); + } + else { + set_method_visibility(module, argc, argv, visi); + } + return module; +} + /* * call-seq: * public -> self @@ -1305,14 +1318,7 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex) static VALUE rb_mod_public(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PUBLIC); - } - else { - set_method_visibility(module, argc, argv, NOEX_PUBLIC); - } - return module; + return set_visibility(argc, argv, module, NOEX_PUBLIC); } /* @@ -1330,14 +1336,7 @@ rb_mod_public(int argc, VALUE *argv, VALUE module) static VALUE rb_mod_protected(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PROTECTED); - } - else { - set_method_visibility(module, argc, argv, NOEX_PROTECTED); - } - return module; + return set_visibility(argc, argv, module, NOEX_PROTECTED); } /* @@ -1364,14 +1363,7 @@ rb_mod_protected(int argc, VALUE *argv, VALUE module) static VALUE rb_mod_private(int argc, VALUE *argv, VALUE module) { - secure_visibility(module); - if (argc == 0) { - SCOPE_SET(NOEX_PRIVATE); - } - else { - set_method_visibility(module, argc, argv, NOEX_PRIVATE); - } - return module; + return set_visibility(argc, argv, module, NOEX_PRIVATE); } /* -- cgit v1.2.3