函数

GLibVariantparse

声明 [源]

GVariant*
g_variant_parse (
  const GVariantType* type,
  const gchar* text,
  const gchar* limit,
  const gchar** endptr,
  GError** error
)

描述 [源]

解析一个文本形式的 GVariant

text 的内容中解析出一个单个的 GVariant

格式描述在这里

limit 位置的内存永远不会被访问,解析器会像字符在 limit 处是空终止符一样操作。这会有界 text

如果 endptr 不是 NULL,那么 text 允许包含该函数解析的值的后续数据,并且 endptr 将更新为指向该函数解析的文本结尾之后的第一个字符。如果 endptrNULL 并且有额外的数据,则返回一个错误。

如果 type 不是 NULL,则将该值解析为该类型。这可能会产生额外的解析错误(在这种情况下,解析的值不适用于该类型),但也可能导致更少的错误(在这种情况下,类型可能是模糊的,例如空数组)。

如果解析成功,将返回结果 GVariant。它绝不浮点,并且必须使用 g_variant_unref() 释放。

如果发生任何错误,将返回 NULL。如果 error 不是 NULL,则它将设置为反映发生的错误。

官方上,解析器所理解的语言是“由 g_variant_print() 生成的任何字符串”。这明确包括 g_variant_print() 的注释类型,如 int64 -1000

对于深层嵌套的值,可能有实现特定的限制,这将导致 G_VARIANT_PARSE_ERROR_RECURSION 错误。确保 GVariant 至少可以处理 64 层嵌套。

参数

type

类型: GVariantType

一个 GVariantType,或 NULL

参数可以是 NULL
数据由函数的调用者拥有。
text

类型: const gchar*

包含 GVariant 文本形式的字符串。

数据由函数的调用者拥有。
值是终止的 UTF-8 字符串。
limit

类型: const gchar*

指向 text 结束的指针,或 NULL

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

类型: const gchar**

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

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

类型: GError **

恢复错误的位置。

参数可以是 NULL
如果返回位置不是 NULL,则你必须初始化它为一个 NULLGError*
如果没有错误,函数将保持该参数初始化为 NULL
在出现错误的情况下,参数将被设置为一个新的 GError;调用者将获得该数据的所有权,并负责释放它。

返回值

类型: GVariant

指向 GVariant 的非浮点引用,或 NULL

函数调用者将获得数据所有权,并负责释放它。