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
Calls superclass method
GirFFI::Builders::BaseArgumentBuilder.new
# 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