class Protobuf::Field::VarintField

Constants

INT32_MAX

Constants

INT32_MIN
INT64_MAX
INT64_MIN
UINT32_MAX
UINT64_MAX

Public Class Methods

default() click to toggle source

Class Methods

# File lib/protobuf/field/varint_field.rb, line 22
def self.default
  0
end
encode(value) click to toggle source
# File lib/protobuf/field/varint_field.rb, line 26
def self.encode(value)
  bytes = []
  until value < 128
    bytes << (0x80 | (value & 0x7f))
    value >>= 7
  end
  (bytes << value).pack('C*')
end

Public Instance Methods

acceptable?(val) click to toggle source

Public Instance Methods

# File lib/protobuf/field/varint_field.rb, line 39
def acceptable?(val)
  int_val = coerce!(val)
  int_val >= self.class.min && int_val <= self.class.max
rescue
  false
end
coerce!(val) click to toggle source
# File lib/protobuf/field/varint_field.rb, line 46
def coerce!(val)
  return val.to_i if val.is_a?(Numeric)
  Integer(val, 10)
end
decode(value) click to toggle source
# File lib/protobuf/field/varint_field.rb, line 51
def decode(value)
  value
end
encode(value) click to toggle source
# File lib/protobuf/field/varint_field.rb, line 55
def encode(value)
  return [value].pack('C') if value < 128

  bytes = []
  until value == 0
    bytes << (0x80 | (value & 0x7f))
    value >>= 7
  end
  bytes[-1] &= 0x7f
  bytes.pack('C*')
end
wire_type() click to toggle source
# File lib/protobuf/field/varint_field.rb, line 67
def wire_type
  ::Protobuf::WireType::VARINT
end