Closures
Functions as first-class objects
@closure:
@cl:
@cclosure:
@f:
@in_marshal:
@is_invalid: Indicates whether the closure has been invalidated by g_closure_invalidate()
The #GType for #GClosure.
@closure:
@callback:
@closure:
@return_value:
@n_param_values:
@param_values:
@invocation_hint:
@marshal_data:
@data:
@closure:
@data:
@notify:
@callback_func:
@user_data:
@destroy_data:
@Returns:
@callback_func:
@user_data:
@destroy_data:
@Returns:
@callback_func:
@object:
@Returns:
@callback_func:
@object:
@Returns:
@sizeof_closure:
@object:
@Returns:
Increment the reference count on a closure to force it staying
alive while the caller holds a pointer to it.
@closure: #GClosure to increment the reference count on
@Returns: The @closure passed in, for convenience
Take over the initial ownership of a closure.
When closures are newly created, they get an initial reference count
of 1, eventhough no caller has yet invoked g_closure_ref() on the @closure.
Code entities that store closures for notification purposes are supposed
to call this function, for example like this:
static GClosure *notify_closure = NULL;
void
foo_notify_set_closure (GClosure *closure)
{
if (notify_closure)
g_closure_unref (notify_closure);
notify_closure = closure;
if (notify_closure)
{
g_closure_ref (notify_closure);
g_closure_sink (notify_closure);
}
}
Because g_closure_sink() may decrement the reference count of a closure
(if it hasn't been called on @closure yet) just like g_closure_unref(),
g_closure_ref() should be called prior to this function.
@closure: #GClosure to decrement the initial reference count on, if it's
still being held
Decrement the reference count of a closure after it was
previously incremented by the same caller. The closure
will most likely be destroyed and freed after this function
returns.
@closure: #GClosure to decrement the reference count on
@closure:
@return_value:
@n_param_values:
@param_values:
@invocation_hint:
This function sets a flag on the closure to indicate that it's
calling environment has become invalid, and thus causes any future
invocations of g_closure_invoke() on this @closure to be ignored.
Also, invalidation notifiers installed on the closure will be called
at this point, and since invalidation notifiers may unreference
the closure, @closure should be considered an invalidated pointer
atfer this function, unles g_closure_ref() was called beforehand.
@closure: GClosure to invalidate
@closure:
@notify_data:
@notify_func:
@closure:
@notify_data:
@notify_func:
@closure:
@notify_data:
@notify_func:
@closure:
@notify_data:
@notify_func:
@sizeof_closure:
@data:
@Returns:
@closure:
@marshal:
@closure:
@pre_marshal_data:
@pre_marshal_notify:
@post_marshal_data:
@post_marshal_notify:
@closure:
@marshal_data:
@meta_marshal:
Set the callback for a source as a #GClosure.
If the source is not one of the standard GLib types, the @closure_callback
and @closure_marshal fields of the GSourceFuncs structure must have been
filled in with pointers to appropriate functions.
@source: the source
@closure: a #GClosure
The #GType for #GIOChannel.
The #GType for #GIOCondition.