summaryrefslogtreecommitdiffhomepage
path: root/src/compar.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-05-09 22:06:16 +0900
committerYukihiro Matsumoto <[email protected]>2012-05-09 22:06:16 +0900
commit6a0c30d038172a238eb22ef259d835123cb117c9 (patch)
treed8a01678d651048ead9931d6d72be0f0c89465cd /src/compar.c
parentdb96db6a8079f8e578acaa77890ddcb49de9fc7d (diff)
downloadmruby-6a0c30d038172a238eb22ef259d835123cb117c9.tar.gz
mruby-6a0c30d038172a238eb22ef259d835123cb117c9.zip
move body of Comparison from compar.c to compar.rb
Diffstat (limited to 'src/compar.c')
-rw-r--r--src/compar.c104
1 files changed, 1 insertions, 103 deletions
diff --git a/src/compar.c b/src/compar.c
index bcd77867e..1502d450b 100644
--- a/src/compar.c
+++ b/src/compar.c
@@ -15,7 +15,6 @@ mrb_cmperr(mrb_state *mrb, mrb_value x, mrb_value y)
if (SPECIAL_CONST_P(y)) {
y = mrb_inspect(mrb, y);
- //classname = StringValuePtr(y);
classname = mrb_string_value_ptr(mrb, y);
}
else {
@@ -42,109 +41,8 @@ mrb_cmpint(mrb_state *mrb, mrb_value val, mrb_value a, mrb_value b)
return 0;
}
-static mrb_value
-cmp_equal(mrb_state *mrb, mrb_value x)
-{
- mrb_value y, c;
-
- /* *** TEMPORAL IMPLEMENT *** */
-
- mrb_get_args(mrb, "o", &y);
- if (mrb_obj_equal(mrb, x, y)) return mrb_true_value();
-
- c = mrb_funcall(mrb, x, "<=>", 1, y);
-
- if (mrb_cmpint(mrb, c, x, y) == 0) return mrb_true_value();
- return mrb_false_value();
-}
-
-#include <stdio.h>
-static mrb_value
-cmp_gt(mrb_state *mrb, mrb_value x, mrb_value y)
-{
- mrb_value c;
-
- c = mrb_funcall(mrb, x, "<=>", 1, y);
-
- if (mrb_cmpint(mrb, c, x, y) > 0) return mrb_true_value();
- return mrb_false_value();
-}
-
-static mrb_value
-cmp_gt_m(mrb_state *mrb, mrb_value x)
-{
- mrb_value y;
-
- mrb_get_args(mrb, "o", &y);
- return cmp_gt(mrb, x, y);
-}
-
-static mrb_value
-cmp_ge_m(mrb_state *mrb, mrb_value x)
-{
- mrb_value y, c;
-
- mrb_get_args(mrb, "o", &y);
- c = mrb_funcall(mrb, x, "<=>", 1, y);
-
- if (mrb_cmpint(mrb, c, x, y) >= 0) return mrb_true_value();
- return mrb_false_value();
-}
-
-static mrb_value
-cmp_lt(mrb_state *mrb, mrb_value x, mrb_value y)
-{
- mrb_value c;
-
- c = mrb_funcall(mrb, x, "<=>", 1, y);
-
- if (mrb_cmpint(mrb, c, x, y) < 0) return mrb_true_value();
- return mrb_false_value();
-}
-
-static mrb_value
-cmp_lt_m(mrb_state *mrb, mrb_value x)
-{
- mrb_value y;
-
- mrb_get_args(mrb, "o", &y);
- return cmp_lt(mrb, x, y);
-}
-
-static mrb_value
-cmp_le_m(mrb_state *mrb, mrb_value x)
-{
- mrb_value y, c;
-
- mrb_get_args(mrb, "o", &y);
- c = mrb_funcall(mrb, x, "<=>", 1, y);
-
- if (mrb_cmpint(mrb, c, x, y) <= 0) return mrb_true_value();
- return mrb_false_value();
-}
-
-static mrb_value
-cmp_between(mrb_state *mrb, mrb_value x)
-{
- mrb_value min, max;
-
- mrb_get_args(mrb, "oo", &min, &max);
-
- if (mrb_test(cmp_lt(mrb, x, min))) return mrb_false_value();
- if (mrb_test(cmp_gt(mrb, x, max))) return mrb_false_value();
- return mrb_true_value();
-}
-
void
mrb_init_comparable(mrb_state *mrb)
{
- struct RClass *comp;
-
- comp = mrb_define_module(mrb, "Comparable");
- mrb_define_method(mrb, comp, "<", cmp_lt_m, ARGS_REQ(1)); /* 15.3.3.2.1 */
- mrb_define_method(mrb, comp, "<=", cmp_le_m, ARGS_REQ(1)); /* 15.3.3.2.2 */
- mrb_define_method(mrb, comp, "==", cmp_equal, ARGS_REQ(1)); /* 15.3.3.2.3 */
- mrb_define_method(mrb, comp, ">", cmp_gt_m, ARGS_REQ(1)); /* 15.3.3.2.4 */
- mrb_define_method(mrb, comp, ">=", cmp_ge_m, ARGS_REQ(1)); /* 15.3.3.2.5 */
- mrb_define_method(mrb, comp, "between?", cmp_between, ARGS_REQ(2)); /* 15.3.3.2.6 */
+ mrb_define_module(mrb, "Comparable");
}