class GirFFI::Builders::CallbackReturnValueBuilder

Implements building post-processing statements for return values of callbacks.

Public Instance Methods

post_conversion() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 11
def post_conversion
  if has_post_conversion?
    optional_outgoing_ref + base_post_conversion
  else
    []
  end
end

Private Instance Methods

base_post_conversion() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 37
def base_post_conversion
  if specialized_type_tag == :object
    ["#{post_converted_name} = #{post_convertor.conversion}.to_ptr"]
  else
    ["#{post_converted_name} = #{post_convertor.conversion}"]
  end
end
has_post_conversion?() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 21
def has_post_conversion?
  relevant? && needs_ruby_to_c_conversion?
end
needs_ruby_to_c_conversion?() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 25
def needs_ruby_to_c_conversion?
  type_info.needs_ruby_to_c_conversion_for_callbacks?
end
optional_outgoing_ref() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 29
def optional_outgoing_ref
  if outgoing_ref_needed?
    ["#{capture_variable_name}.ref"]
  else
    []
  end
end
outgoing_ref_needed?() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 49
def outgoing_ref_needed?
  ownership_transfer == :everything && specialized_type_tag == :object
end
post_convertor() click to toggle source
# File lib/gir_ffi/builders/callback_return_value_builder.rb, line 45
def post_convertor
  @post_convertor ||= RubyToCConvertor.new(type_info, capture_variable_name)
end