class ObjectFramework::Protobuf::Enum
Immutable proto3 enum declaration. Its first value must be zero, and names and numeric values must be unique and valid for proto3.
Attributes
Public Class Methods
Source
# File lib/object_framework/protobuf.rb, line 67 def initialize(name, **values) @name, @values = Protobuf.name(name), values.dup.freeze raise ConfigurationError, "A proto3 enum must begin with zero" unless values.values.first == 0 raise ConfigurationError, "Duplicate enum value" unless values.values.uniq.size == values.size values.each { |key, value| Protobuf.name(key); raise ConfigurationError, "Invalid enum value" unless value.is_a?(Integer) && value.between?(-(2**31), 2**31 - 1) } freeze end
Public Instance Methods
Source
# File lib/object_framework/protobuf.rb, line 75 def definition "enum #{name} {\n" + values.map { |key, value| " #{key} = #{value};\n" }.join + "}\n" end