class Google::Protobuf::OneofDescriptor

Attributes

descriptor_pool[RW]

Public Class Methods

from_native(oneof_def, _ = nil) click to toggle source

@param oneof_def [::FFI::Pointer] OneofDef pointer to be wrapped @param _ [Object] Unused

# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 31
def from_native(oneof_def, _ = nil)
  return nil if oneof_def.nil? or oneof_def.null?
  message_descriptor = Google::Protobuf::FFI.get_oneof_containing_type oneof_def
  raise RuntimeError.new "Message Descriptor is nil" if message_descriptor.nil?
  file_def = Google::Protobuf::FFI.get_message_file_def message_descriptor.to_native
  descriptor_from_file_def(file_def, oneof_def)
end
new(*arguments, &block) click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 40
def self.new(*arguments, &block)
  raise "OneofDescriptor objects may not be created from Ruby."
end
new(oneof_def, descriptor_pool) click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 69
def initialize(oneof_def, descriptor_pool)
  @descriptor_pool = descriptor_pool
  @oneof_def = oneof_def
end
to_native(value, _ = nil) click to toggle source

@param value [OneofDescriptor] FieldDescriptor to convert to an FFI native type @param _ [Object] Unused

# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 24
def to_native(value, _ = nil)
  value.instance_variable_get(:@oneof_def) || ::FFI::Pointer::NULL
end

Private Class Methods

private_constructor(oneof_def, descriptor_pool) click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 74
def self.private_constructor(oneof_def, descriptor_pool)
  instance = allocate
  instance.send(:initialize, oneof_def, descriptor_pool)
  instance
end

Public Instance Methods

each() { |get_oneof_field_by_index| ... } click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 48
def each &block
  n = Google::Protobuf::FFI.get_oneof_field_count(self)
  0.upto(n-1) do |i|
    yield(Google::Protobuf::FFI.get_oneof_field_by_index(self, i))
  end
  nil
end
name() click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 44
def name
  Google::Protobuf::FFI.get_oneof_name(self)
end
options() click to toggle source
# File lib/google/protobuf/ffi/oneof_descriptor.rb, line 56
def options
  @options ||= begin
    size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
    temporary_arena = Google::Protobuf::FFI.create_arena
    buffer = Google::Protobuf::FFI.oneof_options(self, size_ptr, temporary_arena)
    opts = Google::Protobuf::OneofOptions.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze)
    opts.clear_features()
    opts.freeze
 end
end