class Google::Protobuf::EnumDescriptor
Attributes
Public Class Methods
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 31 def from_native(enum_def, _) return nil if enum_def.nil? or enum_def.null? file_def = Google::Protobuf::FFI.get_message_file_def enum_def descriptor_from_file_def(file_def, enum_def) end
@param enum_def [::FFI::Pointer] EnumDef pointer to be wrapped @param _ [Object] Unused
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 143 def self.lookup(number) descriptor.lookup_value number end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 125 def self.lookup_name(enum_def, name) enum_value = Google::Protobuf::FFI.enum_value_by_name(enum_def, name.to_s, name.size) if enum_value.null? nil else Google::Protobuf::FFI.enum_number(enum_value) end end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 116 def self.lookup_value(enum_def, number) enum_value = Google::Protobuf::FFI.enum_value_by_number(enum_def, number) if enum_value.null? nil else Google::Protobuf::FFI.enum_name(enum_value).to_sym end end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 38 def self.new(*arguments, &block) raise "Descriptor objects may not be created from Ruby." end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 104 def initialize(enum_def, descriptor_pool) @descriptor_pool = descriptor_pool @enum_def = enum_def @module = nil end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 110 def self.private_constructor(enum_def, descriptor_pool) instance = allocate instance.send(:initialize, enum_def, descriptor_pool) instance end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 147 def self.resolve(name) descriptor.lookup_name name end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 24 def to_native(value, _) value.instance_variable_get(:@enum_def) || ::FFI::Pointer::NULL end
@param value [EnumDescriptor] EnumDescriptor
to convert to an FFI
native type @param _ [Object] Unused
Public Instance Methods
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 66 def each &block n = Google::Protobuf::FFI.enum_value_count(self) 0.upto(n - 1) do |i| enum_value = Google::Protobuf::FFI.enum_value_by_index(self, i) yield(Google::Protobuf::FFI.enum_name(enum_value).to_sym, Google::Protobuf::FFI.enum_number(enum_value)) end nil end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 75 def enummodule if @module.nil? @module = build_enum_module end @module end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 42 def file_descriptor @descriptor_pool.send(:get_file_descriptor, Google::Protobuf::FFI.get_enum_file_descriptor(self)) end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 54 def inspect "#{self.class.name}: #{name}" end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 58 def lookup_name(name) self.class.send(:lookup_name, self, name) end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 62 def lookup_value(number) self.class.send(:lookup_value, self, number) end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 46 def name Google::Protobuf::FFI.get_enum_fullname(self) end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 82 def options @options ||= begin size_ptr = ::FFI::MemoryPointer.new(:size_t, 1) temporary_arena = Google::Protobuf::FFI.create_arena buffer = Google::Protobuf::FFI.enum_options(self, size_ptr, temporary_arena) opts = Google::Protobuf::EnumOptions.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze) opts.clear_features() opts.freeze end end
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 93 def to_proto @to_proto ||= begin size_ptr = ::FFI::MemoryPointer.new(:size_t, 1) temporary_arena = Google::Protobuf::FFI.create_arena buffer = Google::Protobuf::FFI.enum_to_proto(self, size_ptr, temporary_arena) Google::Protobuf::EnumDescriptorProto.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze) end end
Private Instance Methods
Source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 134 def build_enum_module descriptor = self dynamic_module = Module.new do @descriptor = descriptor class << self attr_accessor :descriptor end def self.lookup(number) descriptor.lookup_value number end def self.resolve(name) descriptor.lookup_name name end end self.each do |name, value| if name[0] < 'A' || name[0] > 'Z' if name[0] >= 'a' and name[0] <= 'z' name = name[0].upcase + name[1..-1] # auto capitalize else warn( "Enum value '#{name}' does not start with an uppercase letter " + "as is required for Ruby constants.") next end end dynamic_module.const_set(name.to_sym, value) end dynamic_module end