class GirFFI::Builders::MarshallingMethodBuilder
Implements the creation mapping method for a signal handler. This method converts arguments from C to Ruby, and the result from Ruby to C.
Public Class Methods
for_signal(receiver_info, info)
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 15 def self.for_signal(receiver_info, info) new receiver_info, info end
new(receiver_info, info)
click to toggle source
Calls superclass method
GirFFI::Builders::BaseMethodBuilder::new
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 19 def initialize(receiver_info, info) super(info, ClosureReturnValueBuilder, receiver_info: receiver_info, argument_builder_class: ClosureArgumentBuilder) end
Public Instance Methods
invocation()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 43 def invocation "wrap(closure.to_ptr).invoke_block(#{call_argument_list})" end
method_arguments()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 31 def method_arguments %w(closure return_value param_values _invocation_hint _marshal_data) end
method_name()
click to toggle source
Methods used by MethodTemplate
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 27 def method_name "marshaller" end
preparation()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 35 def preparation if param_names.size == 1 ["#{param_names.first} = param_values.first.get_value_plain"] else ["#{param_names.join(', ')} = param_values.map(&:get_value_plain)"] end end
result()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 47 def result if (name = @argument_builder_collection.return_value_name) ["return_value.set_value #{name}"] else [] end end
singleton_method?()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 55 def singleton_method? true end
Private Instance Methods
call_argument_list()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 61 def call_argument_list @argument_builder_collection.call_argument_names.join(", ") end
param_names()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 65 def param_names @param_names ||= @argument_builder_collection.method_argument_names end