结构体
GObject值
描述 [源]
struct GValue {
None data;
}
用于存储不同类型值的不透明结构。
结构内的数据具有保护作用域:它只能由处于 GTypeValueTable
结构内部或实现 g_value_*() API 的函数访问。也就是说,这是实现新基本类型的代码部分。
GValue
用户不能对在两个元素 data
联合中存储的数据做出任何假设,并且应该仅通过 G_VALUE_TYPE() 宏 访问 g_type
成员。
结构成员
data
无描述。
函数
g_value_register_transform_func
为 g_value_transform() 注册一个值转换函数。先前注册的 src_type
和 dest_type
的转换函数将被替换。
g_value_type_transformable
检查 g_value_transform() 是否能将类型为 src_type
的值转换为类型为 dest_type
的值。请注意,对于可转换的类型,它们必须是兼容的或已注册转换函数。
实例方法
g_value_dup_boxed
获取派生自 G_TYPE_BOXED
的 GValue
的内容。获取后,boxed 值将被复制并且需要稍后使用 g_boxed_free() 释放,例如:g_boxed_free(G_VALUE_TYPE(value), return_value);。
g_value_peek_pointer
返回值的内容作为指针。此函数断言 g_value_fits_pointer()
为传入的值返回 TRUE
。这是一个主要为 C marshaller 引入的内部函数。
g_value_set_interned_string
将 G_TYPE_STRING
类型 GValue
的内容设置为 v_string
。字符串假定是静态的且已interned(标准化的,例如来自 g_intern_string()),因此设置 GValue
时不会重复。
since: 2.66
g_value_take_boxed
将派生自 G_TYPE_BOXED
的 GValue
的内容设置为 v_boxed
并接管调用者的 v_boxed
引用的所有权;调用者不再需要取消引用它。
自:2.4
g_value_take_object
将派生自 G_TYPE_OBJECT
的 GValue
的内容设置为 v_object
并接管调用者的 v_object
引用的所有权;调用者不再需要取消引用它(即对象引用计数不增加)。
自:2.4
g_value_take_variant
将变体 GValue
的内容设置为 variant
并接管调用者的 variant
引用的所有权;调用者不再需要取消引用它(即变体的引用计数不增加)。
since: 2.26
g_value_transform
尝试将 src_value
的内容转换为适合存储在 dest_value
中的类型,例如将 G_TYPE_INT
的值转换为 G_TYPE_FLOAT
的值。在值类型之间执行转换可能会发生精度损失。特别是转换到字符串可能会显示看似任意的结果,不应在生产代码(如rcfile值或对象属性序列化)中依赖。