Method
GObjectObjectreplace_qdata
since: 2.34
Declaration [src]
gboolean
g_object_replace_qdata (
GObject* object,
GQuark quark,
gpointer oldval,
gpointer newval,
GDestroyNotify destroy,
GDestroyNotify* old_destroy
)
Description [src]
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
This method is not directly available to language bindings.
Parameters
quark
-
Type:
GQuark
A
GQuark
, naming the user data pointer. oldval
-
Type:
gpointer
The old value to compare against.
The argument can be NULL
.The data is owned by the caller of the method. newval
-
Type:
gpointer
The new value.
The argument can be NULL
.The data is owned by the caller of the method. destroy
-
Type:
GDestroyNotify
A destroy notify for the new value.
The argument can be NULL
. old_destroy
-
Type:
GDestroyNotify
Destroy notify for the existing value.
The argument will be set by the function. The argument can be NULL
.The returned data is owned by the instance.