class Protobuf::Field::SignedIntegerField

Public Instance Methods

decode(value) click to toggle source

Public Instance Methods

# File lib/protobuf/field/signed_integer_field.rb, line 11
def decode(value)
  if (value & 1).zero?
    value >> 1   # positive value
  else
    ~value >> 1  # negative value
  end
end
encode(value) click to toggle source
# File lib/protobuf/field/signed_integer_field.rb, line 19
def encode(value)
  if value >= 0
    VarintField.encode(value << 1)
  else
    VarintField.encode(~(value << 1))
  end
end