mrb_raisef(): new function. Same as previou version of mrb_raise().

mrb_raise(): API modified. It cannot treat variable arguments.
This commit is contained in:
Masaki Muranaka
2012-10-23 09:42:22 +09:00
parent e05bbd45bb
commit 6069a33089
14 changed files with 67 additions and 59 deletions
+6 -6
View File
@@ -70,7 +70,7 @@ mrb_struct_members(mrb_state *mrb, mrb_value s)
mrb_value members = mrb_struct_s_members(mrb, mrb_obj_value(mrb_obj_class(mrb, s)));
if (mrb_type(s) == MRB_TT_STRUCT) {
if (RSTRUCT_LEN(s) != RARRAY_LEN(members)) {
mrb_raise(mrb, E_TYPE_ERROR, "struct size differs (%ld required %ld given)",
mrb_raisef(mrb, E_TYPE_ERROR, "struct size differs (%ld required %ld given)",
RARRAY_LEN(members), RSTRUCT_LEN(s));
}
}
@@ -595,10 +595,10 @@ mrb_struct_aref_n(mrb_state *mrb, mrb_value s, mrb_value idx)
i = mrb_fixnum(idx);
if (i < 0) i = RSTRUCT_LEN(s) + i;
if (i < 0)
mrb_raise(mrb, E_INDEX_ERROR, "offset %ld too small for struct(size:%ld)",
mrb_raisef(mrb, E_INDEX_ERROR, "offset %ld too small for struct(size:%ld)",
i, RSTRUCT_LEN(s));
if (RSTRUCT_LEN(s) <= i)
mrb_raise(mrb, E_INDEX_ERROR, "offset %ld too large for struct(size:%ld)",
mrb_raisef(mrb, E_INDEX_ERROR, "offset %ld too large for struct(size:%ld)",
i, RSTRUCT_LEN(s));
return RSTRUCT_PTR(s)[i];
}
@@ -622,7 +622,7 @@ mrb_struct_aset_id(mrb_state *mrb, mrb_value s, mrb_sym id, mrb_value val)
len = RARRAY_LEN(members);
mrb_struct_modify(s);
if (RSTRUCT_LEN(s) != len) {
mrb_raise(mrb, E_TYPE_ERROR, "struct size differs (%ld required %ld given)",
mrb_raisef(mrb, E_TYPE_ERROR, "struct size differs (%ld required %ld given)",
len, RSTRUCT_LEN(s));
}
ptr = RSTRUCT_PTR(s);
@@ -675,11 +675,11 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s)
i = mrb_fixnum(idx);
if (i < 0) i = RSTRUCT_LEN(s) + i;
if (i < 0) {
mrb_raise(mrb, E_INDEX_ERROR, "offset %ld too small for struct(size:%ld)",
mrb_raisef(mrb, E_INDEX_ERROR, "offset %ld too small for struct(size:%ld)",
i, RSTRUCT_LEN(s));
}
if (RSTRUCT_LEN(s) <= i) {
mrb_raise(mrb, E_INDEX_ERROR, "offset %ld too large for struct(size:%ld)",
mrb_raisef(mrb, E_INDEX_ERROR, "offset %ld too large for struct(size:%ld)",
i, RSTRUCT_LEN(s));
}
mrb_struct_modify(s);