Class: BareTypes::Int

Inherits:
BarePrimitive show all
Defined in:
lib/types.rb

Overview

region Primitives

Instance Method Summary collapse

Methods inherited from BarePrimitive

#==, #finalize_references, #to_schema

Methods inherited from BaseType

#cycle_search, #initialize

Constructor Details

This class inherits a constructor from BareTypes::BaseType

Instance Method Details

#decode(msg) ⇒ Object



162
163
164
165
166
# File 'lib/types.rb', line 162

def decode(msg)
  value, rest = Uint.new.decode(msg)
  value = value.odd? ? (value + 1) / -2 : value / 2
  return value, rest
end

#encode(msg, buffer) ⇒ Object

developers.google.com/protocol-buffers/docs/encoding Easy to just convert to signed and re-use uint code



157
158
159
160
# File 'lib/types.rb', line 157

def encode(msg, buffer)
  mappedInteger = msg < 0 ? -2 * msg - 1 : msg * 2
  Uint.new.encode(mappedInteger, buffer)
end