class GirFFI::Builders::ReturnValueBuilder

Implements building post-processing statements for return values.

Public Instance Methods

has_post_conversion?() click to toggle source
# File lib/gir_ffi/builders/return_value_builder.rb, line 19
def has_post_conversion?
  user_data? || needs_c_to_ruby_conversion?
end
needs_c_to_ruby_conversion?() click to toggle source
# File lib/gir_ffi/builders/return_value_builder.rb, line 23
def needs_c_to_ruby_conversion?
  type_info.needs_c_to_ruby_conversion_for_functions?
end
post_conversion() click to toggle source
# File lib/gir_ffi/builders/return_value_builder.rb, line 11
def post_conversion
  result = []
  if has_post_conversion?
    result << "#{post_converted_name} = #{post_convertor.conversion}"
  end
  result
end

Private Instance Methods

length_argument_name() click to toggle source
# File lib/gir_ffi/builders/return_value_builder.rb, line 41
def length_argument_name
  length_arg&.post_converted_name
end
post_convertor() click to toggle source
# File lib/gir_ffi/builders/return_value_builder.rb, line 29
def post_convertor
  @post_convertor ||=
    if user_data?
      ClosureConvertor.new(capture_variable_name)
    else
      FullCToRubyConvertor.new(type_info,
                               capture_variable_name,
                               length_argument_name,
                               ownership_transfer: arginfo.ownership_transfer)
    end
end