Class: GObject::Closure

Inherits:
Object
  • Object
show all
Defined in:
lib/ffi-gobject/closure.rb

Overview

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

To create Closure objects wrapping Ruby code, use RubyClosure.

Direct Known Subclasses

RubyClosure

Instance Method Summary collapse

Instance Method Details

#invoke(return_value, param_values) ⇒ Object

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.

Parameters:

  • return_value (GObject::Value)

    The GValue to store the return value, or nil if no return value is expected.

  • param_values (Array)

    the closure parameters.



31
32
33
34
35
36
37
# 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) ⇒ Object

Parameters:

  • marshal (Proc)

    The marshaller to use for this closure object



17
18
19
20
# 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) ⇒ Object



39
40
41
42
43
44
# 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