函数

GObjectTypeValueLCopyFunc

自:2.78

声明

gchar*
(* GTypeValueLCopyFunc) (
  const GValue* value,
  guint n_collect_values,
  GTypeCValue* collect_values,
  guint collect_flags
)

描述 [源]

该函数负责将 value 内容存储到通过可变参数列表传递给函数的参数中,并将这些参数按照 lcopy_format 收集到 collect_values

n_collect_values 参数等于 lcopy_format 的字符串长度,而 collect_flags 可能包含 G_VALUE_NOCOPY_CONTENTS

GTypeValueCollectFunc 相比,此函数必须始终正确支持 G_VALUE_NOCOPY_CONTENTS

GTypeValueCollectFunc 类似,该函数可能通过返回描述错误状态的全新分配的字符串来提前终止。以下是一个示例

gchar **string_p = collect_values[0].v_pointer;
g_return_val_if_fail (string_p != NULL,
  g_strdup ("string location passed as NULL"));

if (collect_flags & G_VALUE_NOCOPY_CONTENTS)
  *string_p = value->data[0].v_pointer;
else
  *string_p = g_strdup (value->data[0].v_pointer);

以及此函数的参考计数类型示例

GObject **object_p = collect_values[0].v_pointer;
g_return_val_if_fail (object_p != NULL,
  g_strdup ("object location passed as NULL"));

if (value->data[0].v_pointer == NULL)
  *object_p = NULL;
else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) // always honour
  *object_p = value->data[0].v_pointer;
else
  *object_p = g_object_ref (value->data[0].v_pointer);

return NULL;

自可用:2.78

参数

value

类型: GValue

要 lcopy 的值。

数据由函数的调用者拥有。
n_collect_values

类型: guint

收集值的数量。

collect_values

类型: 一个 GTypeCValue 数组

存储的收集位置。

数组的长度由 n_collect_values 参数指定。
数据由函数的调用者拥有。
collect_flags

类型: guint

可选标志。

返回值

类型: gchar*

NULL 表示成功,否则在失败时返回一个新分配的错误字符串。

函数的调用者拥有数据,并负责释放它。
返回值可以是 NULL
值是一个以空字符终止的 UTF-8 字符串。