Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhanced RDoc for Integer #5134

Merged
merged 2 commits into from
Nov 17, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 156 additions & 85 deletions numeric.c
Original file line number Diff line number Diff line change
Expand Up @@ -3934,12 +3934,15 @@ fix_div(VALUE x, VALUE y)
* call-seq:
* self / numeric -> numeric_result
*
* Performs division:
* Performs division; for integer +numeric+, truncates the result to an integer:
*
* 4 / 3 # => 1
* 4 / -3 # => -2
* -4 / 3 # => -2
* -4 / -3 # => 1
*
* For other +numeric+, returns non-integer result:
*
* 4 / 3.0 # => 1.3333333333333333
* 4 / Rational(3, 1) # => (4/3)
* 4 / Complex(3, 0) # => ((4/3)+0i)
Expand Down Expand Up @@ -4309,19 +4312,6 @@ rb_num_pow(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#==
* Document-method: Integer#===
* call-seq:
* int == other -> true or false
*
* Returns +true+ if +int+ equals +other+ numerically.
* Contrast this with Integer#eql?, which requires +other+ to be an Integer.
*
* 1 == 2 #=> false
* 1 == 1.0 #=> true
*/

static VALUE
fix_equal(VALUE x, VALUE y)
{
Expand All @@ -4338,6 +4328,21 @@ fix_equal(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self == other -> true or false
*
* Returns +true+ if +self+ is numerically equal to +other+; +false+ otherwise.
*
* 1 == 2 #=> false
* 1 == 1.0 #=> true
*
* Related: Integer#eql? (requires +other+ to be an \Integer).
*
* Integer#=== is an alias for Integer#==.
*
*/

VALUE
rb_int_equal(VALUE x, VALUE y)
{
Expand All @@ -4350,19 +4355,6 @@ rb_int_equal(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#<=>
* call-seq:
* int <=> numeric -> -1, 0, +1, or nil
*
* Comparison---Returns -1, 0, or +1 depending on whether +int+ is
* less than, equal to, or greater than +numeric+.
*
* This is the basis for the tests in the Comparable module.
*
* +nil+ is returned if the two values are incomparable.
*/

static VALUE
fix_cmp(VALUE x, VALUE y)
{
Expand All @@ -4387,6 +4379,32 @@ fix_cmp(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self <=> other -> -1, 0, +1, or nil
*
* Returns:
*
* - -1, if +self+ is less than +other+.
* - 0, if +self+ is equal to +other+.
* - 1, if +self+ is greater then +other+.
* - +nil+, if +self+ and +other+ are incomparable.
*
* Examples:
*
* 1 <=> 2 # => -1
* 1 <=> 1 # => 0
* 1 <=> 0 # => 1
* 1 <=> 'foo' # => nil
*
* 1 <=> 1.0 # => 0
* 1 <=> Rational(1, 1) # => 0
* 1 <=> Complex(1, 0) # => 0
*
* This method is the basis for comparisons in module Comparable.
*
*/

VALUE
rb_int_cmp(VALUE x, VALUE y)
{
Expand All @@ -4401,14 +4419,6 @@ rb_int_cmp(VALUE x, VALUE y)
}
}

/*
* Document-method: Integer#>
* call-seq:
* int > real -> true or false
*
* Returns +true+ if the value of +int+ is greater than that of +real+.
*/

static VALUE
fix_gt(VALUE x, VALUE y)
{
Expand All @@ -4426,6 +4436,22 @@ fix_gt(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self > other -> true or false
*
* Returns +true+ if the value of +self+ is greater than that of +other+:
*
* 1 > 0 # => true
* 1 > 1 # => false
* 1 > 2 # => false
* 1 > 0.5 # => true
* 1 > Rational(1, 2) # => true
*
* Raises an exception if the comparison cannot be made.
*
*/

VALUE
rb_int_gt(VALUE x, VALUE y)
{
Expand All @@ -4438,15 +4464,6 @@ rb_int_gt(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#>=
* call-seq:
* int >= real -> true or false
*
* Returns +true+ if the value of +int+ is greater than or equal to that of
* +real+.
*/

static VALUE
fix_ge(VALUE x, VALUE y)
{
Expand All @@ -4465,6 +4482,23 @@ fix_ge(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self >= real -> true or false
*
* Returns +true+ if the value of +self+ is greater than or equal to
* that of +other+:
*
* 1 >= 0 # => true
* 1 >= 1 # => true
* 1 >= 2 # => false
* 1 >= 0.5 # => true
* 1 >= Rational(1, 2) # => true
*
* Raises an exception if the comparison cannot be made.
*
*/

VALUE
rb_int_ge(VALUE x, VALUE y)
{
Expand All @@ -4477,14 +4511,6 @@ rb_int_ge(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#<
* call-seq:
* int < real -> true or false
*
* Returns +true+ if the value of +int+ is less than that of +real+.
*/

static VALUE
fix_lt(VALUE x, VALUE y)
{
Expand All @@ -4502,6 +4528,22 @@ fix_lt(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self < other -> true or false
*
* Returns +true+ if the value of +self+ is less than that of +other+:
*
* 1 < 0 # => false
* 1 < 1 # => false
* 1 < 2 # => true
* 1 < 0.5 # => false
* 1 < Rational(1, 2) # => false
*
* Raises an exception if the comparison cannot be made.
*
*/

static VALUE
int_lt(VALUE x, VALUE y)
{
Expand All @@ -4514,15 +4556,6 @@ int_lt(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#<=
* call-seq:
* int <= real -> true or false
*
* Returns +true+ if the value of +int+ is less than or equal to that of
* +real+.
*/

static VALUE
fix_le(VALUE x, VALUE y)
{
Expand All @@ -4541,6 +4574,23 @@ fix_le(VALUE x, VALUE y)
}
}

/*
* call-seq:
* self <= real -> true or false
*
* Returns +true+ if the value of +self+ is less than or equal to
* that of +other+:
*
* 1 <= 0 # => false
* 1 <= 1 # => true
* 1 <= 2 # => true
* 1 <= 0.5 # => false
* 1 <= Rational(1, 2) # => false
*
* Raises an exception if the comparison cannot be made.
*
*/

static VALUE
int_le(VALUE x, VALUE y)
{
Expand Down Expand Up @@ -4600,14 +4650,6 @@ rb_num_coerce_bit(VALUE x, VALUE y, ID func)
return ret;
}

/*
* Document-method: Integer#&
* call-seq:
* int & other_int -> integer
*
* Bitwise AND.
*/

static VALUE
fix_and(VALUE x, VALUE y)
{
Expand All @@ -4623,6 +4665,21 @@ fix_and(VALUE x, VALUE y)
return rb_num_coerce_bit(x, y, '&');
}

/*
* call-seq:
* self & other -> integer
*
* Bitwise AND; each bit in the result is 1 if both corresponding bits
* in +self+ and +other+ are 1, 0 otherwise:
*
* "%04b" % (0b0101 & 0b0110) # => "0100"
*
* Raises an exception if +other+ is not an \Integer.
*
* Related: Integer#| (bitwise OR), Integer#^ (bitwise EXCLUSIVE OR).
*
*/

VALUE
rb_int_and(VALUE x, VALUE y)
{
Expand All @@ -4635,14 +4692,6 @@ rb_int_and(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#|
* call-seq:
* int | other_int -> integer
*
* Bitwise OR.
*/

static VALUE
fix_or(VALUE x, VALUE y)
{
Expand All @@ -4658,6 +4707,21 @@ fix_or(VALUE x, VALUE y)
return rb_num_coerce_bit(x, y, '|');
}

/*
* call-seq:
* self | other -> integer
*
* Bitwise OR; each bit in the result is 1 if either corresponding bit
* in +self+ or +other+ is 1, 0 otherwise:
*
* "%04b" % (0b0101 | 0b0110) # => "0111"
*
* Raises an exception if +other+ is not an \Integer.
*
* Related: Integer#& (bitwise AND), Integer#^ (bitwise EXCLUSIVE OR).
*
*/

static VALUE
int_or(VALUE x, VALUE y)
{
Expand All @@ -4670,14 +4734,6 @@ int_or(VALUE x, VALUE y)
return Qnil;
}

/*
* Document-method: Integer#^
* call-seq:
* int ^ other_int -> integer
*
* Bitwise EXCLUSIVE OR.
*/

static VALUE
fix_xor(VALUE x, VALUE y)
{
Expand All @@ -4693,6 +4749,21 @@ fix_xor(VALUE x, VALUE y)
return rb_num_coerce_bit(x, y, '^');
}

/*
* call-seq:
* self ^ other -> integer
*
* Bitwise EXCLUSIVE OR; each bit in the result is 1 if the corresponding bits
* in +self+ and +other+ are different, 0 otherwise:
*
* "%04b" % (0b0101 ^ 0b0110) # => "0011"
*
* Raises an exception if +other+ is not an \Integer.
*
* Related: Integer#& (bitwise AND), Integer#| (bitwise OR).
*
*/

static VALUE
int_xor(VALUE x, VALUE y)
{
Expand Down