函数

GLibdatalist_id_replace_data

版本:2.34

声明 [src]

gboolean
g_datalist_id_replace_data (
  GData** datalist,
  GQuark key_id,
  gpointer oldval,
  gpointer newval,
  GDestroyNotify destroy,
  GDestroyNotify* old_destroy
)

描述 [src]

将与 datalistkey_id 关联的成员与 oldval 进行比较,如果它们相同,则用 newval 替换 oldval

这类似于 datalist 成员的典型原子比较并交换操作。

如果替换了先前的值,则旧值 (oldval) 的所有权将传递给调用方,包括为其注册的销毁通知 (在 old_destroy 中传递)。这取决于调用方如何释放它,其中可能包括或不包括使用 old_destroy,因为有时替换不应以正常方式销毁对象。

自 2.34 起可用

此函数不能直接用于语言绑定。

参数

datalist

类型: GData

datalist 的位置。

数据归函数的调用方所有。
key_id

类型: GQuark

识别数据元素的 GQuark

oldval

类型: gpointer

要对其进行比较的旧值。

参数可以是 NULL
数据归函数的调用方所有。
newval

类型: gpointer

用于替换它的新值。

参数可以是 NULL
数据归函数的调用方所有。
destroy

类型: GDestroyNotify

新值的销毁通知。

参数可以是 NULL
old_destroy

类型: GDestroyNotify

现有值的销毁通知。

此参数将由函数设置。
参数可以是 NULL
由函数负责返回数据的归属。

返回值

类型: gboolean

如果 key_id 的现有值被 newval 替换,则为 TRUE,否则为 FALSE