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.



29
30
31
32
33
34
35
# File 'lib/ffi-gobject/closure.rb', line 29

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



15
16
17
18
# File 'lib/ffi-gobject/closure.rb', line 15

def set_marshal(marshal)
  callback = ClosureMarshal.from marshal
  Lib.g_closure_set_marshal self, callback
end

#store_pointer(ptr) ⇒ Object



37
38
39
40
41
42
# File 'lib/ffi-gobject/closure.rb', line 37

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