class GObject::Closure

Overrides for GClosure, GObject’s base class for closure objects.

To create Closure objects wrapping Ruby code, use {RubyClosure}.

Public Instance Methods

invoke(return_value, param_values) click to toggle source

@override

This override of invoke ensures the return value location can be passed in as the first argument, which is needed to ensure the GValue is initialized with the proper type.

@param [GObject::Value] return_value The GValue to store the return

value, or nil if no return value is expected.

@param [Array] param_values the closure parameters.

# File lib/ffi-gobject/closure.rb, line 31
def invoke(return_value, param_values)
  rval = Value.from(return_value)
  n_params = param_values.length
  params = GirFFI::SizedArray.from(Value, -1, param_values)
  Lib.g_closure_invoke self, rval, n_params, params, nil
  rval.get_value
end
set_marshal(marshal) click to toggle source

@override

@param [Proc] marshal The marshaller to use for this closure object

# File lib/ffi-gobject/closure.rb, line 17
def set_marshal(marshal)
  callback = ClosureMarshal.from marshal
  Lib.g_closure_set_marshal self, callback
end
store_pointer(ptr) click to toggle source
Calls superclass method
# File lib/ffi-gobject/closure.rb, line 39
def store_pointer(ptr)
  # NOTE: Call C functions directly to avoid extra argument conversion
  Lib.g_closure_ref ptr
  Lib.g_closure_sink ptr
  super
end