@@ -563,6 +563,24 @@ mrb_mod_instance_methods(mrb_state *mrb, mrb_value mod)
563563 return mod_instance_methods (mrb , mod , MT_NOPRIV );
564564}
565565
566+ static mrb_value
567+ mrb_mod_public_instance_methods (mrb_state * mrb , mrb_value mod )
568+ {
569+ return mod_instance_methods (mrb , mod , MT_PUBLIC );
570+ }
571+
572+ static mrb_value
573+ mrb_mod_private_instance_methods (mrb_state * mrb , mrb_value mod )
574+ {
575+ return mod_instance_methods (mrb , mod , MT_PRIVATE );
576+ }
577+
578+ static mrb_value
579+ mrb_mod_protected_instance_methods (mrb_state * mrb , mrb_value mod )
580+ {
581+ return mod_instance_methods (mrb , mod , MT_PROTECTED );
582+ }
583+
566584static int
567585undefined_method_i (mrb_state * mrb , mrb_sym mid , mrb_method_t m , void * p )
568586{
@@ -683,6 +701,9 @@ mrb_mruby_metaprog_gem_init(mrb_state* mrb)
683701 mrb_define_method_id (mrb , mod , MRB_SYM (class_variable_set ), mrb_mod_cvar_set , MRB_ARGS_REQ (2 )); /* 15.2.2.4.18 */
684702 mrb_define_method_id (mrb , mod , MRB_SYM (included_modules ), mrb_mod_included_modules , MRB_ARGS_NONE ()); /* 15.2.2.4.30 */
685703 mrb_define_method_id (mrb , mod , MRB_SYM (instance_methods ), mrb_mod_instance_methods , MRB_ARGS_ANY ()); /* 15.2.2.4.33 */
704+ mrb_define_method_id (mrb , mod , MRB_SYM (public_instance_methods ), mrb_mod_public_instance_methods , MRB_ARGS_OPT (1 ));
705+ mrb_define_method_id (mrb , mod , MRB_SYM (private_instance_methods ), mrb_mod_private_instance_methods , MRB_ARGS_OPT (1 ));
706+ mrb_define_method_id (mrb , mod , MRB_SYM (protected_instance_methods ), mrb_mod_protected_instance_methods , MRB_ARGS_OPT (1 ));
686707 mrb_define_method_id (mrb , mod , MRB_SYM (undefined_instance_methods ), mrb_mod_undefined_methods , MRB_ARGS_NONE ());
687708 mrb_define_method_id (mrb , mod , MRB_SYM (remove_method ), mrb_mod_remove_method , MRB_ARGS_ANY ()); /* 15.2.2.4.41 */
688709 mrb_define_method_id (mrb , mod , MRB_SYM (method_removed ), mrb_f_nil , MRB_ARGS_REQ (1 ));
0 commit comments