函数

GLibVariantnew_va

自:2.24

声明 [源代码]

GVariant*
g_variant_new_va (
  const gchar* format_string,
  const gchar** endptr,
  va_list* app
)

描述 [源代码]

该函数旨在供基于 GVariant 的库使用,以便为其用户提供类似于 g_variant_new()-的功能。

API 比代码 g_variant_new() 更通用,以允许更广泛的用途。

format_string 必须指向有效的格式字符串,但如果 endptrNULL,则它只需以空字符终止。如果 endptr 非空,则它将更新为指向格式字符串结尾之后的第一个字符。

app 是指向 #va_list 的指针。根据 format_string,参数从该 #va_list 中收集,并且该列表保留在指向最后一个参数之后的参数。

请注意,在收集到 #va_list 时,app 中的参数必须具有其类型在 format_string 中指定的正确宽度。请参阅 GVariant varargs 文档

这两个泛化允许在单个实际 varargs 调用中将多个 g_variant_new_va()g_variant_get_va() 调用混用。

如果它是新建的 GVariant 实例(例如,如果格式字符串是 "(ii)"),则返回值会浮动。如果格式字符串是 ' * ',' ? ',' r ' 或者以 '@' 开头的格式,则收集到的 GVariant 指针将保持不变,不添加任何额外的引用。

为了在任何情况下都能正确执行,需要调用函数在返回控制到最初提供指针的用户之前对返回结果进行 g_variant_ref_sink()。此时,调用方将对结果拥有自己完整的引用。这也可以通过将结果添加到容器中,或传递给另一个 g_variant_new() 调用来完成。

自:2.24

此函数不可直接供语言绑定使用。

参数

format_string

类型: const gchar*

一个以格式字符串为前缀的字符串。

数据由该函数的调用者拥有。
该值是一个以空字符终止的 UTF-8 字符串。
endptr

类型: const gchar**

存储结束指针的位置,或 NULL

该参数可以是 NULL
数据由该函数的调用者拥有。
该值是一个以空字符终止的 UTF-8 字符串。
app

类型: va_list*

指向 #va_list 的指针。

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

返回值

类型: GVariant

一个新的、通常是浮动的 GVariant

该函数的调用者拥有数据,并负责释放它。