Method

GObjectObjectreplace_qdata

Declaration

gboolean
g_object_replace_qdata (
  GObject* object,
  GQuark quark,
  gpointer oldval,
  gpointer newval,
  GDestroyNotify destroy,
  GDestroyNotify* old_destroy
)

Description

Compares the user data for the key quark on object with oldval, and if they are the same, replaces oldval with newval.

This is like a typical atomic compare-and-exchange operation, for user data on an object.

If the previous value was replaced then ownership of the old value (oldval) is passed to the caller, including the registered destroy notify for it (passed out in old_destroy). It’s up to the caller to free this as needed, which may or may not include using old_destroy as sometimes replacement should not destroy the object in the normal way.

Available since:2.34

Parameters

quark GQuark
 

A GQuark, naming the user data pointer.

oldval gpointer
 

The old value to compare against.

newval gpointer
 

The new value.

destroy GDestroyNotify
 

A destroy notify for the new value.

old_destroy GDestroyNotify
 

Destroy notify for the existing value.

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

Return value

Returns: gboolean
 

TRUE if the existing value for quark was replaced by newval, FALSE otherwise.