示例#1
0
文件: class.c 项目: bearmini/mruby
mrb_value
mrb_mod_const_defined(mrb_state *mrb, mrb_value mod)
{
  mrb_value id;
  mrb_bool const_defined_p;

  id = get_sym_or_str_arg(mrb);
  if (mrb_type(id) == MRB_TT_SYMBOL) {
    check_const_name_sym(mrb, mrb_symbol(id));
    const_defined_p = mrb_const_defined(mrb, mod, mrb_symbol(id));
  }
  else {
    mrb_value sym;
    check_const_name_str(mrb, id);
    sym = mrb_check_intern_str(mrb, id);
    if (mrb_nil_p(sym)) {
      const_defined_p = FALSE;
    }
    else {
      const_defined_p = mrb_const_defined(mrb, mod, mrb_symbol(sym));
    }
  }

  return mrb_bool_value(const_defined_p);
}
示例#2
0
mrb_value
mrb_mod_const_get(mrb_state *mrb, mrb_value mod)
{
  mrb_sym id;

  mrb_get_args(mrb, "n", &id);
  check_const_name_sym(mrb, id);
  return mrb_const_get(mrb, mod, id);
}
示例#3
0
mrb_value
mrb_mod_const_set(mrb_state *mrb, mrb_value mod)
{
  mrb_sym id;
  mrb_value value;

  mrb_get_args(mrb, "no", &id, &value);
  check_const_name_sym(mrb, id);
  mrb_const_set(mrb, mod, id, value);
  return value;
}
示例#4
0
mrb_value
mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
{
  mrb_sym id;
  mrb_value val;

  mrb_get_args(mrb, "n", &id);
  check_const_name_sym(mrb, id);
  val = mrb_iv_remove(mrb, mod, id);
  if (mrb_undef_p(val)) {
    mrb_name_error(mrb, id, "constant %S not defined", mrb_sym2str(mrb, id));
  }
  return val;
}