module Strum::Internal::Patches
Author: Patrick “Sickday” W. Date: 1/3/2020 Rev: 2/13/2020
# refinements that make changes to Ruby Core objects.
Public Instance Methods
adjust(num, exponent = 31)
click to toggle source
# File lib/strum/internal/patches.rb, line 60 def adjust(num, exponent = 31) integer = num bits = (Math.log(2**exponent) / Math.log(2)).to_i + 1 over_flow = (2**bits) - 1 integer < -2**exponent ? integer & over_flow : integer integer > 2**exponent - 1 ? -1 * (-integer & over_flow) : integer end
nibble()
click to toggle source
# File lib/strum/internal/patches.rb, line 55 def nibble adjust(self.to_i & 0xf, 4) end
signed(type)
click to toggle source
Return signed
# File lib/strum/internal/patches.rb, line 37 def signed(type) case type when :Byte || :byte || :b || :B adjust(self.to_i, 7) when :Short || :short || :s || :S adjust(self.to_i, 15) when :Integer || :Int || :int || :integer || :i || :I adjust(self.to_i) when :Long || :long || :l || :L adjust(self.to_i, 64) else adjust(self) end end
Also aliased as: s
unsigned(type)
click to toggle source
Returned unsigned
# File lib/strum/internal/patches.rb, line 16 def unsigned(type) 0 unless self.positive? case type when :Byte || :byte || :b || :B adjust(self.to_i & 0xff, 8) when :Short || :short || :s || :S adjust(self.to_i & 0xffff, 16) when :Integer || :Int || :int || :integer || :i || :I adjust(self.to_i & 0xffffffff) when :Long || :long || :l || :L adjust(self.to_i & 0xffffffffffffffff, 64) else adjust(self.to_i & 0xffffffff) end end
Also aliased as: u