class GirFFI::Builders::FieldBuilder::GetterArgumentBuilder
Convertor for fields for field getters. Used when building getter methods.
Attributes
Public Class Methods
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
Calls superclass method
GirFFI::Builders::BaseArgumentBuilder::new
Public Instance Methods
Source
# File lib/gir_ffi/builders/field_builder.rb, line 34 def capture_variable_name nil end
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
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
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
Source
# File lib/gir_ffi/builders/field_builder.rb, line 46 def return_value_name post_converted_name end
Private Instance Methods
Source
# File lib/gir_ffi/builders/field_builder.rb, line 77 def bare_value @bare_value ||= @var_gen.new_var end
Source
# File lib/gir_ffi/builders/field_builder.rb, line 65 def field_offset @field_info.offset end
Source
# File lib/gir_ffi/builders/field_builder.rb, line 69 def field_ptr @field_ptr ||= @var_gen.new_var end
Source
# File lib/gir_ffi/builders/field_builder.rb, line 85 def field_type @field_type ||= @field_info.field_type end
Source
# File lib/gir_ffi/builders/field_builder.rb, line 81 def field_type_tag @field_type_tag ||= field_type.tag_or_class end
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
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
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
Source
# File lib/gir_ffi/builders/field_builder.rb, line 73 def typed_ptr @typed_ptr ||= @var_gen.new_var end