class Protobuf::Field::EnumField

Public Class Methods

default() click to toggle source

Class Methods

# File lib/protobuf/field/enum_field.rb, line 11
def self.default
  fail NoMethodError, "#{self}.#{__method__} must be called on an instance"
end

Public Instance Methods

acceptable?(val) click to toggle source
# File lib/protobuf/field/enum_field.rb, line 28
def acceptable?(val)
  !type_class.fetch(val).nil?
end
coerce!(value) click to toggle source
# File lib/protobuf/field/enum_field.rb, line 36
def coerce!(value)
  type_class.fetch(value) || fail(TypeError, "Invalid Enum value: #{value.inspect} for #{name}")
end
decode(value) click to toggle source
# File lib/protobuf/field/enum_field.rb, line 23
def decode(value)
  value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000).nonzero?
  value if acceptable?(value)
end
encode(value) click to toggle source

Public Instance Methods

# File lib/protobuf/field/enum_field.rb, line 18
def encode(value)
  # original Google's library uses 64bits integer for negative value
  ::Protobuf::Field::VarintField.encode(value.to_i & 0xffff_ffff_ffff_ffff)
end
enum?() click to toggle source
# File lib/protobuf/field/enum_field.rb, line 32
def enum?
  true
end

Private Instance Methods

typed_default_value() click to toggle source

Private Instance Methods

# File lib/protobuf/field/enum_field.rb, line 46
def typed_default_value
  if default.is_a?(Symbol)
    type_class.const_get(default)
  else
    type_class.fetch(default) || type_class.enums.first
  end
end