class Google::Protobuf::EnumDescriptor
Attributes
descriptor[RW]
descriptor_pool[RW]
Public Class Methods
from_native(enum_def, _)
click to toggle source
@param enum_def [::FFI::Pointer] EnumDef pointer to be wrapped @param _ [Object] Unused
# 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
new(*arguments, &block)
click to toggle 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
new(enum_def, descriptor_pool)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 95 def initialize(enum_def, descriptor_pool) @descriptor_pool = descriptor_pool @enum_def = enum_def @module = nil end
to_native(value, _)
click to toggle source
@param value [EnumDescriptor] EnumDescriptor
to convert to an FFI
native type @param _ [Object] Unused
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 24 def to_native(value, _) value.instance_variable_get(:@enum_def) || ::FFI::Pointer::NULL end
Private Class Methods
lookup(number)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 134 def self.lookup(number) descriptor.lookup_value number end
lookup_name(enum_def, name)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 116 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
lookup_value(enum_def, number)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 107 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
private_constructor(enum_def, descriptor_pool)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 101 def self.private_constructor(enum_def, descriptor_pool) instance = allocate instance.send(:initialize, enum_def, descriptor_pool) instance end
resolve(name)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 138 def self.resolve(name) descriptor.lookup_name name end
Public Instance Methods
each() { |enum_name.to_sym, enum_number| ... }
click to toggle 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
enummodule()
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 75 def enummodule if @module.nil? @module = build_enum_module end @module end
file_descriptor()
click to toggle 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
inspect()
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 54 def inspect "#{self.class.name}: #{name}" end
lookup_name(name)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 58 def lookup_name(name) self.class.send(:lookup_name, self, name) end
lookup_value(number)
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 62 def lookup_value(number) self.class.send(:lookup_value, self, number) end
name()
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 46 def name Google::Protobuf::FFI.get_enum_fullname(self) end
options()
click to toggle 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
to_s()
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 50 def to_s inspect end
Private Instance Methods
build_enum_module()
click to toggle source
# File lib/google/protobuf/ffi/enum_descriptor.rb, line 125 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