ObjectG.replaceQdata

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.

class ObjectG
bool
replaceQdata
(
GQuark quark
,
void* oldval
,
void* newval
,
GDestroyNotify destroy
,
out GDestroyNotify oldDestroy
)

Parameters

quark GQuark

a #GQuark, naming the user data pointer

oldval void*

the old value to compare against

newval void*

the new value

destroy GDestroyNotify

a destroy notify for the new value

oldDestroy GDestroyNotify

destroy notify for the existing value

Return Value

Type: bool

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

Meta

Since

2.34