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
s(type)

Shorthand

Alias for: signed
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
u(type)

Shorthand

Alias for: unsigned
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