class GirFFI::Builders::FunctionBuilder

Implements the creation of a Ruby function definition out of a GIR IFunctionInfo.

Public Class Methods

new(info) click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 11
def initialize(info)
  super(info, ReturnValueBuilder)
end

Public Instance Methods

function_call_arguments() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 31
def function_call_arguments
  ca = argument_builder_collection.call_argument_names.dup
  ca.unshift receiver_call_argument if @info.method?
  ca
end
method_name() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 15
def method_name
  @info.safe_name
end
result() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 19
def result
  if argument_builder_collection.has_return_values?
    ["return #{argument_builder_collection.return_value_names.join(', ')}"]
  else
    []
  end
end
singleton_method?() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 27
def singleton_method?
  !@info.method?
end

Private Instance Methods

container_info() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 49
def container_info
  @container_info ||= @info.container
end
receiver_call_argument() click to toggle source
# File lib/gir_ffi/builders/function_builder.rb, line 39
def receiver_call_argument
  container_type_info = ReceiverTypeInfo.new(container_info)
  if @info.instance_ownership_transfer == :everything &&
      container_type_info.flattened_tag == :object
    "self.ref"
  else
    "self"
  end
end