module Protobuf::VarintPure
Constants
- CACHE_LIMIT
Public Instance Methods
cached_varint(value)
click to toggle source
# File lib/protobuf/varint_pure.rb, line 5 def cached_varint(value) @_varint_cache ||= {} (@_varint_cache[value] ||= encode(value, false)).dup end
decode(stream)
click to toggle source
# File lib/protobuf/varint_pure.rb, line 10 def decode(stream) value = index = 0 begin byte = stream.readbyte value |= (byte & 0x7f) << (7 * index) index += 1 end while (byte & 0x80).nonzero? value end
encode(value, use_cache = true)
click to toggle source
# File lib/protobuf/varint_pure.rb, line 20 def encode(value, use_cache = true) return cached_varint(value) if use_cache && value >= 0 && value <= CACHE_LIMIT bytes = [] until value < 128 bytes << (0x80 | (value & 0x7f)) value >>= 7 end (bytes << value).pack('C*') end