mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #3234 from AltimitSystems/mrb.class_under_defined
Add mrb_class_defined_under
This commit is contained in:
@@ -566,6 +566,37 @@ MRB_API mrb_bool mrb_class_defined(mrb_state *mrb, const char *name);
|
||||
*/
|
||||
MRB_API struct RClass * mrb_class_get(mrb_state *mrb, const char *name);
|
||||
|
||||
/**
|
||||
* Returns an mrb_bool. True if inner class was defined, and false if the inner class was not defined.
|
||||
*
|
||||
* Example:
|
||||
* void
|
||||
* mrb_example_gem_init(mrb_state* mrb) {
|
||||
* struct RClass *example_outer, *example_inner;
|
||||
* mrb_bool cd;
|
||||
*
|
||||
* example_outer = mrb_define_module(mrb, "ExampleOuter");
|
||||
*
|
||||
* example_inner = mrb_define_class_under(mrb, example_outer, "ExampleInner", mrb->object_class);
|
||||
* cd = mrb_class_defined_under(mrb, example_outer, "ExampleInner");
|
||||
*
|
||||
* // If mrb_class_defined_under returns 1 then puts "True"
|
||||
* // If mrb_class_defined_under returns 0 then puts "False"
|
||||
* if (cd == 1){
|
||||
* puts("True");
|
||||
* }
|
||||
* else {
|
||||
* puts("False");
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* @param [mrb_state*] mrb The current mruby state.
|
||||
* @param [struct RClass *] outer The name of the outer class.
|
||||
* @param [const char *] name A string representing the name of the inner class.
|
||||
* @return [mrb_bool] A boolean value.
|
||||
*/
|
||||
MRB_API mrb_bool mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, const char *name);
|
||||
|
||||
/**
|
||||
* Gets a child class.
|
||||
* @param [mrb_state*] mrb The current mruby state.
|
||||
|
||||
+10
@@ -271,6 +271,16 @@ mrb_class_defined(mrb_state *mrb, const char *name)
|
||||
return mrb_const_defined(mrb, mrb_obj_value(mrb->object_class), mrb_symbol(sym));
|
||||
}
|
||||
|
||||
MRB_API mrb_bool
|
||||
mrb_class_defined_under(mrb_state *mrb, struct RClass *outer, const char *name)
|
||||
{
|
||||
mrb_value sym = mrb_check_intern_cstr(mrb, name);
|
||||
if (mrb_nil_p(sym)) {
|
||||
return FALSE;
|
||||
}
|
||||
return mrb_const_defined_at(mrb, mrb_obj_value(outer), mrb_symbol(sym));
|
||||
}
|
||||
|
||||
MRB_API struct RClass *
|
||||
mrb_class_get_under(mrb_state *mrb, struct RClass *outer, const char *name)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user