mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
use mrb_get_args("n") instead of decomposing each time
This commit is contained in:
+31
-52
@@ -600,9 +600,14 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
|
||||
if (mrb_type(ss) == MRB_TT_SYMBOL) {
|
||||
*symp = mrb_symbol(ss);
|
||||
}
|
||||
else {
|
||||
else if (mrb_string_p(ss)) {
|
||||
*symp = mrb_intern_str(mrb, to_str(mrb, ss));
|
||||
}
|
||||
else {
|
||||
mrb_value obj = mrb_funcall(mrb, ss, "inspect", 0);
|
||||
mrb_raisef(mrb, E_TYPE_ERROR, "%s is not a symbol",
|
||||
mrb_string_value_ptr(mrb, obj));
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -1453,20 +1458,6 @@ mod_define_method(mrb_state *mrb, mrb_value self)
|
||||
return blk;
|
||||
}
|
||||
|
||||
static mrb_sym
|
||||
mrb_sym_value(mrb_state *mrb, mrb_value val)
|
||||
{
|
||||
if (mrb_string_p(val)) {
|
||||
return mrb_intern_str(mrb, val);
|
||||
}
|
||||
else if(!mrb_symbol_p(val)) {
|
||||
mrb_value obj = mrb_funcall(mrb, val, "inspect", 0);
|
||||
mrb_raisef(mrb, E_TYPE_ERROR, "%s is not a symbol",
|
||||
mrb_string_value_ptr(mrb, obj));
|
||||
}
|
||||
return mrb_symbol(val);
|
||||
}
|
||||
|
||||
static void
|
||||
check_cv_name(mrb_state *mrb, mrb_sym id)
|
||||
{
|
||||
@@ -1497,13 +1488,10 @@ check_cv_name(mrb_state *mrb, mrb_sym id)
|
||||
static mrb_value
|
||||
mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym;
|
||||
mrb_sym id;
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
|
||||
id = mrb_sym_value(mrb,sym);
|
||||
check_cv_name(mrb, id);
|
||||
|
||||
if(mrb_cv_defined(mrb, mod, id))
|
||||
return mrb_true_value();
|
||||
return mrb_false_value();
|
||||
@@ -1527,11 +1515,9 @@ mrb_mod_cvar_defined(mrb_state *mrb, mrb_value mod)
|
||||
static mrb_value
|
||||
mrb_mod_cvar_get(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym;
|
||||
mrb_sym id;
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
|
||||
id = mrb_sym_value(mrb,sym);
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
check_cv_name(mrb, id);
|
||||
return mrb_cv_get(mrb, mod, id);
|
||||
}
|
||||
@@ -1557,12 +1543,10 @@ mrb_mod_cvar_get(mrb_state *mrb, mrb_value mod)
|
||||
static mrb_value
|
||||
mrb_mod_cvar_set(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym, value;
|
||||
mrb_value value;
|
||||
mrb_sym id;
|
||||
mrb_get_args(mrb, "oo", &sym, &value);
|
||||
|
||||
id = mrb_sym_value(mrb,sym);
|
||||
|
||||
mrb_get_args(mrb, "no", &id, &value);
|
||||
check_cv_name(mrb, id);
|
||||
mrb_cv_set(mrb, mod, id, value);
|
||||
return value;
|
||||
@@ -1594,16 +1578,13 @@ mrb_mod_cvar_set(mrb_state *mrb, mrb_value mod)
|
||||
mrb_value
|
||||
mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym, val;
|
||||
mrb_value val;
|
||||
mrb_sym id;
|
||||
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
|
||||
id = mrb_sym_value(mrb,sym);
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
check_cv_name(mrb, id);
|
||||
|
||||
val = mrb_iv_remove(mrb, mod, id);
|
||||
|
||||
if (!mrb_undef_p(val)) return val;
|
||||
|
||||
if (mrb_cv_defined(mrb, mod, id)){
|
||||
@@ -1648,12 +1629,9 @@ mrb_mod_remove_cvar(mrb_state *mrb, mrb_value mod)
|
||||
static mrb_value
|
||||
mrb_mod_method_defined(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym;
|
||||
mrb_sym id;
|
||||
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
id = mrb_sym_value(mrb,sym);
|
||||
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
if (mrb_obj_respond_to(mrb_class_ptr(mod), id)) {
|
||||
return mrb_true_value();
|
||||
}
|
||||
@@ -1717,11 +1695,11 @@ check_const_name(mrb_state *mrb, mrb_sym id)
|
||||
mrb_value
|
||||
mrb_mod_const_defined(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym;
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
mrb_sym id;
|
||||
|
||||
check_const_name(mrb, mrb_sym_value(mrb,sym));
|
||||
if(mrb_const_defined(mrb, mod, mrb_sym_value(mrb, sym))) {
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
check_const_name(mrb, id);
|
||||
if(mrb_const_defined(mrb, mod, id)) {
|
||||
return mrb_true_value();
|
||||
}
|
||||
return mrb_false_value();
|
||||
@@ -1730,35 +1708,36 @@ mrb_mod_const_defined(mrb_state *mrb, mrb_value mod)
|
||||
mrb_value
|
||||
mrb_mod_const_get(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym;
|
||||
mrb_get_args(mrb, "o", &sym);
|
||||
mrb_sym id;
|
||||
|
||||
check_const_name(mrb, mrb_sym_value(mrb,sym));
|
||||
return mrb_const_get(mrb, mod, mrb_sym_value(mrb, sym));
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
check_const_name(mrb, id);
|
||||
return mrb_const_get(mrb, mod, id);
|
||||
}
|
||||
|
||||
mrb_value
|
||||
mrb_mod_const_set(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_value sym, value;
|
||||
mrb_get_args(mrb, "oo", &sym, &value);
|
||||
mrb_sym id;
|
||||
mrb_value value;
|
||||
|
||||
check_const_name(mrb, mrb_sym_value(mrb,sym));
|
||||
mrb_const_set(mrb, mod, mrb_sym_value(mrb, sym), value);
|
||||
mrb_get_args(mrb, "no", &id, &value);
|
||||
check_const_name(mrb, id);
|
||||
mrb_const_set(mrb, mod, id, value);
|
||||
return value;
|
||||
}
|
||||
|
||||
mrb_value
|
||||
mrb_mod_remove_const(mrb_state *mrb, mrb_value mod)
|
||||
{
|
||||
mrb_sym sym;
|
||||
mrb_sym id;
|
||||
mrb_value val;
|
||||
|
||||
mrb_get_args(mrb, "n", &sym);
|
||||
check_const_name(mrb, sym);
|
||||
val = mrb_iv_remove(mrb, mod, sym);
|
||||
mrb_get_args(mrb, "n", &id);
|
||||
check_const_name(mrb, id);
|
||||
val = mrb_iv_remove(mrb, mod, id);
|
||||
if (mrb_undef_p(val)) {
|
||||
mrb_name_error(mrb, sym, "instance variable %s not defined", mrb_sym2name(mrb, sym));
|
||||
mrb_name_error(mrb, id, "instance variable %s not defined", mrb_sym2name(mrb, id));
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user