Function

GObjectClosurenew_simple

Declaration

GClosure*
g_closure_new_simple (
  guint sizeof_closure,
  gpointer data
)

Description

Allocates a struct of the given size and initializes the initial part as a GClosure.

This function is mainly useful when implementing new types of closures:

typedef struct _MyClosure MyClosure;
struct _MyClosure
{
  GClosure closure;
  // extra data goes here
};

static void
my_closure_finalize (gpointer  notify_data,
                     GClosure *closure)
{
  MyClosure *my_closure = (MyClosure *)closure;

  // free extra data here
}

MyClosure *my_closure_new (gpointer data)
{
  GClosure *closure;
  MyClosure *my_closure;

  closure = g_closure_new_simple (sizeof (MyClosure), data);
  my_closure = (MyClosure *) closure;

  // initialize extra data here

  g_closure_add_finalize_notifier (closure, notify_data,
                                   my_closure_finalize);
  return my_closure;
}

Parameters

sizeof_closure

Type: guint

The size of the structure to allocate, must be at least sizeof (GClosure)

data

Type: gpointer

Data to store in the data field of the newly allocated GClosure.

The argument can be NULL.
The data is owned by the caller of the function.

Return value

Type: GClosure

A floating reference to a new GClosure.

The caller of the function takes ownership of the data, and is responsible for freeing it.