class BareTypes::Uint

Public Instance Methods

decode(msg) click to toggle source
# File lib/types.rb, line 319
def decode(msg)
  ints = msg.unpack("CCCCCCCC")
  relevantInts = []
  i = 0
  while ints[i] & 0b10000000 == 128
    relevantInts << ints[i] % 128
    i += 1
  end
  relevantInts << ints[i]
  sum = 0
  relevantInts.each_with_index do |int, idx|
    sum += int << (idx * 7)
  end
  return sum, msg[(i + 1)..msg.size]
end
encode(msg) click to toggle source
# File lib/types.rb, line 302
def encode(msg)
  bytes = "".b
  _get_next_7_bits_as_byte(msg, 128) do |byte|
    bytes << byte
  end
  (bytes.size - 1).downto(0) do |i|
    if bytes.bytes[i] == 128 && bytes.size > 1
      bytes = bytes.chop
    else
      break
    end
  end
  bytes[bytes.size - 1] = [bytes.bytes[bytes.size - 1] & 127].pack('C')[0]
  raise MaximumSizeError("Maximum u/int allowed is 64 bit precision") if bytes.size > 9
  return bytes
end
finalize_references(schema) click to toggle source
# File lib/types.rb, line 299
def finalize_references(schema)
end