summaryrefslogtreecommitdiff
path: root/integer.rb
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2020-06-27 10:07:47 -0700
committerGitHub <noreply@github.com>2020-06-27 10:07:47 -0700
commit0703e014713ae92f4c8a2b31e385718dc2452eac (patch)
tree12bb9303b135f8c907d7ca002114620eabd4caf9 /integer.rb
parent247dd8743e153eb31d31472c81dfb64da25d7600 (diff)
Mark some Integer methods as inline (#3264)
Notes
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
Diffstat (limited to 'integer.rb')
-rw-r--r--integer.rb78
1 files changed, 78 insertions, 0 deletions
diff --git a/integer.rb b/integer.rb
index cc2e58948f..fe1e8a0560 100644
--- a/integer.rb
+++ b/integer.rb
@@ -1,4 +1,82 @@
class Integer
+ def abs
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_abs(self)'
+ end
+
+ def bit_length
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_bit_length(self)'
+ end
+
+ # call-seq:
+ # int.even? -> true or false
+ #
+ # Returns +true+ if +int+ is an even number.
+ def even?
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'int_even_p(self)'
+ end
+
+ # call-seq:
+ # int.integer? -> true
+ #
+ # Since +int+ is already an Integer, this always returns +true+.
+ def integer?
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'Qtrue'
+ end
+
+ def magnitude
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_abs(self)'
+ end
+
+ # call-seq:
+ # int.odd? -> true or false
+ #
+ # Returns +true+ if +int+ is an odd number.
+ def odd?
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_odd_p(self)'
+ end
+
+ # call-seq:
+ # int.ord -> self
+ #
+ # Returns the +int+ itself.
+ #
+ # 97.ord #=> 97
+ #
+ # This method is intended for compatibility to character literals
+ # in Ruby 1.9.
+ #
+ # For example, <code>?a.ord</code> returns 97 both in 1.8 and 1.9.
+ def ord
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'self'
+ end
+
+ # call-seq:
+ # int.to_i -> integer
+ #
+ # Since +int+ is already an Integer, returns +self+.
+ #
+ # #to_int is an alias for #to_i.
+ def to_i
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'self'
+ end
+
+ # call-seq:
+ # int.to_int -> integer
+ #
+ # Since +int+ is already an Integer, returns +self+.
+ def to_int
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'self'
+ end
+
# call-seq:
# int.zero? -> true or false
#