diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | numeric.c | 21 |
2 files changed, 26 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Tue Jan 30 13:24:06 2007 Yukihiro Matsumoto <matz@ruby-lang.org> + + * numeric.c (int_pred): add Integer#pred corresponding + Integer#succ. [RCR#5] + Tue Jan 30 12:05:35 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> * mkconfig.rb: autoconf 2.61 support. [ruby-core:10016] @@ -1768,6 +1768,26 @@ int_succ(VALUE num) /* * call-seq: + * int.pred => integer + * + * Returns the <code>Integer</code> equal to <i>int</i> - 1. + * + * 1.pred #=> 0 + * (-1).pred #=> -2 + */ + +static VALUE +int_pred(VALUE num) +{ + if (FIXNUM_P(num)) { + long i = FIX2LONG(num) - 1; + return LONG2NUM(i); + } + return rb_funcall(num, '-', 1, INT2FIX(1)); +} + +/* + * call-seq: * int.chr => string * * Returns a string containing the ASCII character represented by the @@ -2948,6 +2968,7 @@ Init_Numeric(void) rb_include_module(rb_cInteger, rb_mPrecision); rb_define_method(rb_cInteger, "succ", int_succ, 0); rb_define_method(rb_cInteger, "next", int_succ, 0); + rb_define_method(rb_cInteger, "pred", int_pred, 0); rb_define_method(rb_cInteger, "chr", int_chr, 0); rb_define_method(rb_cInteger, "to_i", int_to_i, 0); rb_define_method(rb_cInteger, "to_int", int_to_i, 0); |