Skip to content

Commit 9e3e7b2

Browse files
committed
mruby-metaprog: add 3 new methods to retrieve instance method names
- public_instance_methods - private_instance_methods - protected_instance_methods
1 parent 9229da1 commit 9e3e7b2

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

mrbgems/mruby-metaprog/src/metaprog.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
566584
static int
567585
undefined_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

Comments
 (0)