Commit 2f8e9b47 authored by Jun Hiroe's avatar Jun Hiroe

Refactor mrb_ary_equal() func in array.c.

parent 997c0736
...@@ -1056,39 +1056,26 @@ static mrb_value ...@@ -1056,39 +1056,26 @@ static mrb_value
mrb_ary_equal(mrb_state *mrb, mrb_value ary1) mrb_ary_equal(mrb_state *mrb, mrb_value ary1)
{ {
mrb_value ary2; mrb_value ary2;
mrb_bool equal_p; mrb_int i;
mrb_get_args(mrb, "o", &ary2); mrb_get_args(mrb, "o", &ary2);
if (mrb_obj_equal(mrb, ary1, ary2)) { if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value();
equal_p = 1; if (mrb_special_const_p(ary2)) return mrb_false_value();
} if (!mrb_array_p(ary2)) {
else if (mrb_special_const_p(ary2)) {
equal_p = 0;
}
else if (!mrb_array_p(ary2)) {
if (!mrb_respond_to(mrb, ary2, mrb_intern2(mrb, "to_ary", 6))) { if (!mrb_respond_to(mrb, ary2, mrb_intern2(mrb, "to_ary", 6))) {
equal_p = 0; return mrb_false_value();
} }
else { else {
equal_p = mrb_equal(mrb, ary2, ary1); return mrb_bool_value(mrb_equal(mrb, ary2, ary1));
} }
} }
else if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) { if (RARRAY_LEN(ary1) != RARRAY_LEN(ary2)) return mrb_false_value();
equal_p = 0; for (i=0; i<RARRAY_LEN(ary1); i++) {
} if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
else { return mrb_false_value();
mrb_int i;
equal_p = 1;
for (i=0; i<RARRAY_LEN(ary1); i++) {
if (!mrb_equal(mrb, ary_elt(ary1, i), ary_elt(ary2, i))) {
equal_p = 0;
break;
}
} }
} }
return mrb_true_value();
return mrb_bool_value(equal_p);
} }
/* 15.2.12.5.34 (x) */ /* 15.2.12.5.34 (x) */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment