class GirFFI::Builders::MappingMethodBuilder

Implements the creation mapping method for a callback or vfunc handler. This method converts arguments from C to Ruby, and the result from Ruby to C.

Public Class Methods

for_callback(info) click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 16
def self.for_callback(info)
  new nil, info, CallbackArgumentBuilder
end
for_vfunc(receiver_info, info) click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 20
def self.for_vfunc(receiver_info, info)
  new receiver_info, info, VFuncArgumentBuilder
end
new(receiver_info, info, builder_class) click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 24
def initialize(receiver_info, info, builder_class)
  super(info, CallbackReturnValueBuilder,
        receiver_info: receiver_info,
        argument_builder_class: builder_class)
end

Public Instance Methods

invocation() click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 41
def invocation
  "_proc.call(#{call_argument_list})"
end
method_arguments() click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 36
def method_arguments
  @method_arguments ||=
    argument_builder_collection.method_argument_names.dup.unshift("_proc")
end
method_name() click to toggle source

Methods used by MethodTemplate

# File lib/gir_ffi/builders/mapping_method_builder.rb, line 32
def method_name
  "call_with_argument_mapping"
end
result() click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 45
def result
  if (name = argument_builder_collection.return_value_name)
    ["return #{name}"]
  else
    []
  end
end
singleton_method?() click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 53
def singleton_method?
  true
end

Private Instance Methods

call_argument_list() click to toggle source
# File lib/gir_ffi/builders/mapping_method_builder.rb, line 59
def call_argument_list
  argument_builder_collection.call_argument_names.join(", ")
end