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 21 def self.default 0 end
encode(value)
click to toggle source
# File lib/protobuf/field/varint_field.rb, line 25 def self.encode(value) ::Protobuf::Varint.encode(value) end
Public Instance Methods
acceptable?(val)
click to toggle source
Public Instance Methods
# File lib/protobuf/field/varint_field.rb, line 32 def acceptable?(val) int_val = if val.is_a?(Integer) return true if val >= 0 && val < INT32_MAX # return quickly for smallest integer size, hot code path val elsif val.is_a?(Numeric) val.to_i else Integer(val, 10) end 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 47 def coerce!(val) if val.is_a?(Integer) && val >= 0 && val <= INT32_MAX val else fail TypeError, "Expected value of type '#{type_class}' for field #{name}, but got '#{val.class}'" unless acceptable?(val) if val.is_a?(Integer) || val.is_a?(Numeric) val.to_i else Integer(val, 10) end end rescue ArgumentError fail TypeError, "Expected value of type '#{type_class}' for field #{name}, but got '#{val.class}'" end
decode(value)
click to toggle source
# File lib/protobuf/field/varint_field.rb, line 63 def decode(value) value end
encode(value)
click to toggle source
# File lib/protobuf/field/varint_field.rb, line 67 def encode(value) ::Protobuf::Field::VarintField.encode(value) end
wire_type()
click to toggle source
# File lib/protobuf/field/varint_field.rb, line 71 def wire_type ::Protobuf::WireType::VARINT end