static mrb_value mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod) { mrb_sym id; mrb_bool defined_p; mrb_get_args(mrb, "n", &id); check_cv_name(mrb, id); defined_p = mrb_cv_defined(mrb, mod, id); return mrb_bool_value(defined_p); }
static mrb_value mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod) { mrb_value id; mrb_bool defined_p; id = get_sym_or_str_arg(mrb); if (mrb_symbol_p(id)) { check_cv_name_sym(mrb, mrb_symbol(id)); defined_p = mrb_cv_defined(mrb, mod, mrb_symbol(id)); } else { mrb_value sym; check_cv_name_str(mrb, id); sym = mrb_check_intern_str(mrb, id); if (mrb_nil_p(sym)) { defined_p = FALSE; } else { defined_p = mrb_cv_defined(mrb, mod, mrb_symbol(sym)); } } return mrb_bool_value(defined_p); }
mrb_value mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod) { mrb_value val; mrb_sym id; mrb_get_args(mrb, "n", &id); check_cv_name_sym(mrb, id); val = mrb_iv_remove(mrb, mod, id); if (!mrb_undef_p(val)) return val; if (mrb_cv_defined(mrb, mod, id)){ mrb_name_error(mrb, id, "cannot remove %S for %S", mrb_sym2str(mrb, id), mod); } mrb_name_error(mrb, id, "class variable %S not defined for %S", mrb_sym2str(mrb, id), mod); /* not reached */ return mrb_nil_value(); }