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(info)
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 15 def self.for_signal(info) container_info = info.container container_type_info = ReceiverTypeInfo.new(container_info) receiver_info = ReceiverArgumentInfo.new(container_type_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 22 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 46 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 34 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 30 def method_name "marshaller" end
preparation()
click to toggle source
# File lib/gir_ffi/builders/marshalling_method_builder.rb, line 38 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 50 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 58 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 64 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 68 def param_names @param_names ||= @argument_builder_collection.method_argument_names end