GObject.Object.prototype.replace_data
function replace_data(key: String, oldval: void, newval: void, destroy: GLib.DestroyNotify, old_destroy: GLib.DestroyNotify): Boolean { // Gjs wrapper for g_object_replace_data() }
Compares the user data for the key key 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). Its up to the caller to free this as he wishes, which may or may not include using old_destroy as sometimes replacement should not destroy the object in the normal way.
Since 2.34
- key
a string, naming the user data pointer
- oldval
the old value to compare against
- newval
the new value
- destroy
a destroy notify for the new value
- old_destroy
destroy notify for the existing value
- Returns
true if the existing value for key was replaced by newval, false otherwise.