module Gogyou::Extensions::Integer

Public Instance Methods

extendsign(bits) click to toggle source
# File lib/gogyou/extensions.rb, line 270
def extendsign(bits)
  n = self & Integer.bitmask(0, bits)
  if (n >> (bits - 1)) == 0
    n
  else
    n | (~0 << bits)
  end
end
extendsign_char() click to toggle source
# File lib/gogyou/extensions.rb, line 279
def extendsign_char
  ((self & 0xff) ^ 0x80) - 0x80
end
getbit(shift, bits) click to toggle source
# File lib/gogyou/extensions.rb, line 243
def getbit(shift, bits)
  (self >> shift) & Integer.bitmask(0, bits)
end
getbits(shift, bits) click to toggle source
# File lib/gogyou/extensions.rb, line 247
def getbits(shift, bits)
  getbit(shift, bits).extendsign(bits)
end
getbitset(*bitsize) click to toggle source
# File lib/gogyou/extensions.rb, line 251
def getbitset(*bitsize)
  shift = 0
  list = []
  bitsize.each do |bits|
    if bits > 0
      list << getbit(shift, bits)
      shift += bits
    else
      list << 0
    end
  end
  list
end
setbit(shift, bits, num) click to toggle source
# File lib/gogyou/extensions.rb, line 265
def setbit(shift, bits, num)
  mask = Integer.bitmask(shift, bits)
  (self & ~mask) | ((num << shift) & mask)
end
swap128() click to toggle source
# File lib/gogyou/extensions.rb, line 384
def swap128
  (swap64 << 64) | (self >> 64).swap64
end
swap128s() click to toggle source
# File lib/gogyou/extensions.rb, line 388
def swap128s
  (swap64s << 64) | (self >> 64).swap64
end
swap16() click to toggle source
# File lib/gogyou/extensions.rb, line 292
def swap16
  n = self & 0xffff
  ((n >> 8) & 0xff) | ((n & 0xff) << 8)
end
swap16s() click to toggle source
# File lib/gogyou/extensions.rb, line 297
def swap16s
  n = self & 0xffff
  ((n >> 8) & 0xff) | ((n & 0xff).extendsign_char << 8)
end
swap24() click to toggle source
# File lib/gogyou/extensions.rb, line 302
def swap24
  n = self & 0xffffff
  ((n >> 16) & 0xff) |
    (n & 0xff00) |
    ((n & 0xff) << 16)
end
swap24s() click to toggle source
# File lib/gogyou/extensions.rb, line 309
def swap24s
  n = self & 0xffffff
  ((n >> 16) & 0xff) |
    (n & 0xff00) |
    ((n & 0xff).extendsign_char << 16)
end
swap32() click to toggle source
# File lib/gogyou/extensions.rb, line 316
def swap32
  n = self & 0xffffffff
  ((n >> 24) & 0xff) |
    ((n >> 8) & 0xff00) |
    ((n & 0xff00) << 8) |
    ((n & 0xff) << 24)
end
swap32s() click to toggle source
# File lib/gogyou/extensions.rb, line 324
def swap32s
  n = self & 0xffffffff
  ((n >> 24) & 0xff) |
    ((n >> 8) & 0xff00) |
    ((n & 0xff00) << 8) |
    ((n & 0xff).extendsign_char << 24)
end
swap48() click to toggle source
# File lib/gogyou/extensions.rb, line 332
def swap48
  n = self & 0xffffffffffff
  ((n >> 40) & 0xff) |
    ((n >> 24) & 0xff00) |
    ((n >> 8) & 0xff0000) |
    ((n & 0xff0000) << 8) |
    ((n & 0xff00) << 24) |
    ((n & 0xff) << 40)
end
swap48s() click to toggle source
# File lib/gogyou/extensions.rb, line 342
def swap48s
  n = self & 0xffffffffffff
  ((n >> 40) & 0xff) |
    ((n >> 24) & 0xff00) |
    ((n >> 8) & 0xff0000) |
    ((n & 0xff0000) << 8) |
    ((n & 0xff00) << 24) |
    ((n & 0xff).extendsign_char << 40)
end
swap64() click to toggle source
# File lib/gogyou/extensions.rb, line 352
def swap64
  n = self & 0xffffffffffffffff
  ((n >> 56) & 0xff) |
    ((n >> 40) & 0xff00) |
    ((n >> 24) & 0xff0000) |
    ((n >> 8) & 0xff000000) |
    ((n & 0xff000000) << 8) |
    ((n & 0xff0000) << 24) |
    ((n & 0xff00) << 40) |
    ((n & 0xff) << 56)
end
swap64s() click to toggle source
# File lib/gogyou/extensions.rb, line 364
def swap64s
  n = self & 0xffffffffffffffff
  ((n >> 56) & 0xff) |
    ((n >> 40) & 0xff00) |
    ((n >> 24) & 0xff0000) |
    ((n >> 8) & 0xff000000) |
    ((n & 0xff000000) << 8) |
    ((n & 0xff0000) << 24) |
    ((n & 0xff00) << 40) |
    ((n & 0xff).extendsign_char << 56)
end
swap96() click to toggle source
# File lib/gogyou/extensions.rb, line 376
def swap96
  (swap48 << 48) | (self >> 48).swap48
end
swap96s() click to toggle source
# File lib/gogyou/extensions.rb, line 380
def swap96s
  (swap48s << 48) | (self >> 48).swap48
end
swapbyte(bytesize) click to toggle source
# File lib/gogyou/extensions.rb, line 283
def swapbyte(bytesize)
  num = 0
  bytesize.times do |i|
    num <<= 8
    num |= (self >> (i * 8)) & 0xff
  end
  num
end