class GirFFI::Builders::FieldBuilder::GetterArgumentBuilder

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

Attributes

array_length_idx[R]

Public Class Methods

new(var_gen, field_argument_info, field_info, array_length_idx: -1) click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 19
def initialize(var_gen, field_argument_info, field_info,
               array_length_idx: -1)
  super(var_gen, field_argument_info)
  @field_info = field_info
  @length_arg = NullArgumentBuilder.new
  @array_length_idx = array_length_idx
end

Public Instance Methods

capture_variable_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 34
def capture_variable_name
  nil
end
post_conversion() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 50
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 38
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 27
def pre_conversion
  [
    "#{field_ptr} = @struct.to_ptr",
    "#{bare_value} = #{pointer_to_value_conversion}"
  ]
end
return_value_name() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 46
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 77
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 65
def field_offset
  @field_info.offset
end
field_ptr() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 69
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 85
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 81
def field_type_tag
  @field_type_tag ||= field_type.tag_or_class
end
has_post_conversion?() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 89
def has_post_conversion?
  type_info.needs_c_to_ruby_conversion_for_functions?
end
pointer_to_value_conversion() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 60
def pointer_to_value_conversion
  PointerValueConvertor.new(field_type_tag)
    .pointer_to_value(field_ptr, field_offset)
end
post_convertor() click to toggle source
# File lib/gir_ffi/builders/field_builder.rb, line 93
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 73
def typed_ptr
  @typed_ptr ||= @var_gen.new_var
end