class GirFFI::Builders::FieldBuilder::GetterArgumentBuilder

Convertor for fields for field getters. Used when building getter methods.

Public Class Methods

new(var_gen, field_argument_info, field_info, options = {}) click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 12
def initialize(var_gen, field_argument_info, field_info, options = {})
  super(var_gen, field_argument_info)
  @field_info = field_info
  @length_arg = options.fetch(:length_argument) { NullArgumentBuilder.new }
end

Public Instance Methods

capture_variable_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 26
def capture_variable_name
  nil
end
post_conversion() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 42
def post_conversion
  if has_post_conversion?
    ["#{post_converted_name} = #{post_convertor.conversion}"]
  else
    []
  end
end
post_converted_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 30
def post_converted_name
  @post_converted_name ||= if has_post_conversion?
                             new_variable
                           else
                             bare_value
                           end
end
pre_conversion() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 18
def pre_conversion
  [
    "#{field_ptr} = @struct.to_ptr + #{field_offset}",
    "#{typed_ptr} = GirFFI::InOutPointer.new(#{field_type_tag}, #{field_ptr})",
    "#{bare_value} = #{typed_ptr}.to_value"
  ]
end
return_value_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 38
def return_value_name
  post_converted_name
end

Private Instance Methods

bare_value() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 64
def bare_value
  @bare_value ||= @var_gen.new_var
end
field_offset() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 52
def field_offset
  @field_info.offset
end
field_ptr() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 56
def field_ptr
  @field_ptr ||= @var_gen.new_var
end
field_type() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 72
def field_type
  @field_type ||= @field_info.field_type
end
field_type_tag() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 68
def field_type_tag
  @field_type_tag ||= @field_info.field_type.tag_or_class.inspect
end
has_post_conversion?() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 76
def has_post_conversion?
  type_info.needs_c_to_ruby_conversion_for_functions?
end
post_convertor() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 80
def post_convertor
  @post_convertor ||= CToRubyConvertor.new(type_info,
                                           bare_value,
                                           length_arg.post_converted_name)
end
typed_ptr() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 60
def typed_ptr
  @typed_ptr ||= @var_gen.new_var
end