diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-04-02 13:31:42 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-04-02 13:31:42 +0000 |
commit | f67f196b1d89753af958249ffe7458aa2e3f42b6 (patch) | |
tree | 0e96191bdac427b1848b10a4775eca3d37453e76 /rational.c | |
parent | 339dca41fc7e4b0203e0d916eab84693f2a4187e (diff) |
* rational.c (nurat_int_check): function for DRY integer check.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15886 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'rational.c')
-rw-r--r-- | rational.c | 73 |
1 files changed, 19 insertions, 54 deletions
diff --git a/rational.c b/rational.c index 3451fc65e5..dd5cd1046c 100644 --- a/rational.c +++ b/rational.c @@ -427,6 +427,18 @@ f_rational_new_bang2(VALUE klass, VALUE x, VALUE y) #define f_unify_p(klass) rb_const_defined(klass, id_Unify) +static inline void +nurat_int_check(VALUE num) +{ + switch (TYPE(num)) { + case T_FIXNUM: + case T_BIGNUM: + break; + default: + rb_raise(rb_eArgError, "not an integer"); + } +} + inline static VALUE nurat_s_canonicalize_internal(VALUE klass, VALUE num, VALUE den) { @@ -487,21 +499,8 @@ nurat_s_canonicalize(int argc, VALUE *argv, VALUE klass) break; } - switch (TYPE(num)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } - - switch (TYPE(den)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } + nurat_int_check(num); + nurat_int_check(den); return nurat_s_canonicalize_internal(klass, num, den); } @@ -518,21 +517,8 @@ nurat_s_new(int argc, VALUE *argv, VALUE klass) break; } - switch (TYPE(num)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } - - switch (TYPE(den)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } + nurat_int_check(num); + nurat_int_check(den); return nurat_s_canonicalize_internal(klass, num, den); } @@ -1223,42 +1209,21 @@ nurat_marshal_load(VALUE self, VALUE a) VALUE rb_gcd(VALUE self, VALUE other) { - switch (TYPE(other)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } - + nurat_int_check(other); return f_gcd(self, other); } VALUE rb_lcm(VALUE self, VALUE other) { - switch (TYPE(other)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } - + nurat_int_check(other); return f_lcm(self, other); } VALUE rb_gcdlcm(VALUE self, VALUE other) { - switch (TYPE(other)) { - case T_FIXNUM: - case T_BIGNUM: - break; - default: - rb_raise(rb_eArgError, "not an integer"); - } - + nurat_int_check(other); return rb_assoc_new(f_gcd(self, other), f_lcm(self, other)); } |