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