Module: GirFFI::InfoExt::ISignalInfo
- Included in:
- GObjectIntrospection::ISignalInfo
- Defined in:
- lib/gir_ffi/info_ext/i_signal_info.rb
Overview
Extensions for GObjectIntrospection::ISignalInfo needed by GirFFI
Instance Method Summary collapse
- #argument_types ⇒ Object
- #arguments_to_gvalues(instance, arguments) ⇒ Object
- #gvalue_for_return_value ⇒ Object
-
#wrap_in_closure(&block) ⇒ GObject::RubyClosure
Create a signal hander closure.
Instance Method Details
#argument_types ⇒ Object
31 32 33 |
# File 'lib/gir_ffi/info_ext/i_signal_info.rb', line 31 def argument_types @argument_types ||= args.map(&:argument_type) end |
#arguments_to_gvalues(instance, arguments) ⇒ Object
19 20 21 22 23 24 25 |
# File 'lib/gir_ffi/info_ext/i_signal_info.rb', line 19 def arguments_to_gvalues(instance, arguments) arg_g_values = argument_types.zip(arguments).map do |type, arg| type.make_g_value.tap { |it| it.set_value arg } end arg_g_values.unshift GObject::Value.wrap_instance(instance) end |
#gvalue_for_return_value ⇒ Object
27 28 29 |
# File 'lib/gir_ffi/info_ext/i_signal_info.rb', line 27 def gvalue_for_return_value return_type.make_g_value end |
#wrap_in_closure(&block) ⇒ GObject::RubyClosure
Create a signal hander closure. Wraps the given block in a custom descendent of RubyClosure with a marshaller tailored for this signal.
14 15 16 17 |
# File 'lib/gir_ffi/info_ext/i_signal_info.rb', line 14 def wrap_in_closure(&block) bldr = Builders::SignalClosureBuilder.new(self) bldr.build_class.new(&block) end |