结构体

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_typedest_type 的转换函数将被替换。

g_value_type_compatible

返回类型为 src_typeGValue 是否可以复制到类型为 dest_typeGValue 中。

g_value_type_transformable

检查 g_value_transform() 是否能将类型为 src_type 的值转换为类型为 dest_type 的值。请注意,对于可转换的类型,它们必须是兼容的或已注册转换函数。

实例方法

g_value_copy

src_value 的值复制到 dest_value

g_value_dup_boxed

获取派生自 G_TYPE_BOXEDGValue 的内容。获取后,boxed 值将被复制并且需要稍后使用 g_boxed_free() 释放,例如:g_boxed_free(G_VALUE_TYPE(value), return_value);。

g_value_dup_object

获取派生自 G_TYPE_OBJECTGValue 的内容,增加其引用计数。如果 GValue 的内容为 NULL,则返回 NULL

g_value_dup_param

获取 G_TYPE_PARAM GValue 的内容,增加其引用计数。

g_value_dup_string

获取类型为 G_TYPE_STRINGGValue 的内容的副本。

g_value_dup_variant

获取可变 GValue 的内容,增加其 refcount。返回的 GVariant 从不浮点。

since: 2.26

g_value_fits_pointer

确定 value 是否可以放入指针大小的数据。这是一个主要供 C marshaller 使用的内部函数。

g_value_get_boolean

获取类型为 G_TYPE_BOOLEANGValue 的内容。

g_value_get_boxed

获取派生自 G_TYPE_BOXEDGValue 的内容。

g_value_get_char

不要使用此函数;它在 %char 类型为无符号的平台上不可用,例如 ARM 和 PowerPC。请参阅 g_value_get_schar()。

已弃用:2.32 

g_value_get_double

获取类型为 G_TYPE_DOUBLEGValue 的内容。

g_value_get_enum

获取类型为 G_TYPE_ENUMGValue 的内容。

g_value_get_flags

获取类型为 G_TYPE_FLAGSGValue 的内容。

g_value_get_float

获取类型为 G_TYPE_FLOATGValue 的内容。

g_value_get_gtype

获取类型为 G_TYPE_GTYPEGValue 的内容。

since: 2.12

g_value_get_int

获取 G_TYPE_INT 类型 GValue 的内容。

g_value_get_int64

获取 G_TYPE_INT64 类型 GValue 的内容。

g_value_get_long

获取 G_TYPE_LONG 类型 GValue 的内容。

g_value_get_object

获取从 G_TYPE_OBJECT 衍生的 GValue 的内容。

g_value_get_param

获取 G_TYPE_PARAM 类型 GValue 的内容。

g_value_get_pointer

获取指针类型 GValue 的内容。

g_value_get_schar

获取 G_TYPE_CHAR 类型 GValue 的内容。

since: 2.32

g_value_get_string

获取 G_TYPE_STRING 类型 GValue 的内容。

g_value_get_uchar

获取 G_TYPE_UCHAR 类型 GValue 的内容。

g_value_get_uint

获取 G_TYPE_UINT 类型 GValue 的内容。

g_value_get_uint64

获取 G_TYPE_UINT64 类型 GValue 的内容。

g_value_get_ulong

获取 G_TYPE_ULONG 类型 GValue 的内容。

g_value_get_variant

获取变体类型 GValue 的内容。

since: 2.26

g_value_init

使用 type 的默认值初始化 value

g_value_init_from_instance

使用可实例化的类型初始化并设置 value,通过 value_table 的 collect_value() 函数。

since: 2.42

g_value_peek_pointer

返回值的内容作为指针。此函数断言 g_value_fits_pointer() 为传入的值返回 TRUE。这是一个主要为 C marshaller 引入的内部函数。

g_value_reset

清除 value 中的当前值,并将其重置为默认值(就像值刚被初始化一样)。

g_value_set_boolean

G_TYPE_BOOLEAN 类型 GValue 的内容设置为 v_boolean

g_value_set_boxed

将从 G_TYPE_BOXED 衍生的 GValue 的内容设置为 v_boxed

g_value_set_boxed_take_ownership

这是一个主要为 C marshaller 引入的内部函数。

已弃用: 2.4 

g_value_set_char

G_TYPE_CHAR 类型 GValue 的内容设置为 v_char

已弃用:2.32 

g_value_set_double

G_TYPE_DOUBLE 类型 GValue 的内容设置为 v_double

g_value_set_enum

G_TYPE_ENUM 类型 GValue 的内容设置为 v_enum

g_value_set_flags

G_TYPE_FLAGS 类型 GValue 的内容设置为 v_flags

g_value_set_float

G_TYPE_FLOAT 类型 GValue 的内容设置为 v_float

g_value_set_gtype

G_TYPE_GTYPE 类型 GValue 的内容设置为 v_gtype

since: 2.12

g_value_set_instance

通过 value_table 的 collect_value() 函数从可实例化的类型设置 value

g_value_set_int

G_TYPE_INT 类型 GValue 的内容设置为 v_int

g_value_set_int64

G_TYPE_INT64 类型 GValue 的内容设置为 v_int64

g_value_set_interned_string

G_TYPE_STRING 类型 GValue 的内容设置为 v_string。字符串假定是静态的且已interned(标准化的,例如来自 g_intern_string()),因此设置 GValue 时不会重复。

since: 2.66

g_value_set_long

G_TYPE_LONG 类型 GValue 的内容设置为 v_long

g_value_set_object

G_TYPE_OBJECT 衍生的 GValue 的内容设置为 v_object

g_value_set_object_take_ownership

这是一个主要为 C marshaller 引入的内部函数。

已弃用: 2.4 

g_value_set_param

G_TYPE_PARAM 类型 GValue 的内容设置为 param

g_value_set_param_take_ownership

这是一个主要为 C marshaller 引入的内部函数。

已弃用: 2.4 

g_value_set_pointer

将指针类型 GValue 的内容设置为 v_pointer

g_value_set_schar

G_TYPE_CHAR 类型 GValue 的内容设置为 v_char

since: 2.32

g_value_set_static_boxed

将从 G_TYPE_BOXED 衍生的 GValue 的内容设置为 v_boxed

g_value_set_static_string

G_TYPE_STRING 类型 GValue 的内容设置为 v_string。字符串假定是静态的,因此设置 GValue 时不会重复。

g_value_set_string

G_TYPE_STRINGGValue 内容设置为 v_string 的副本。

g_value_set_string_take_ownership

这是一个主要为 C marshaller 引入的内部函数。

已弃用: 2.4 

g_value_set_uchar

G_TYPE_UCHARGValue 内容设置为 v_uchar

g_value_set_uint

G_TYPE_UINTGValue 内容设置为 v_uint

g_value_set_uint64

G_TYPE_UINT64GValue 内容设置为 v_uint64

g_value_set_ulong

G_TYPE_ULONGGValue 内容设置为 v_ulong

g_value_set_variant

将变体 GValue 的内容设置为 variant。如果变体是浮动的,它将被消耗。

since: 2.26

g_value_steal_string

窃取 G_TYPE_STRINGGValue 内容的所有权。此操作的结果是值的内容将被重置为 NULL

自:2.80

g_value_take_boxed

将派生自 G_TYPE_BOXEDGValue 的内容设置为 v_boxed 并接管调用者的 v_boxed 引用的所有权;调用者不再需要取消引用它。

自:2.4

g_value_take_object

将派生自 G_TYPE_OBJECTGValue 的内容设置为 v_object 并接管调用者的 v_object 引用的所有权;调用者不再需要取消引用它(即对象引用计数不增加)。

自:2.4

g_value_take_param

G_TYPE_PARAMGValue 的内容设置为 param 并接管调用者的 param 引用的所有权;调用者不再需要取消引用它。

自:2.4

g_value_take_string

G_TYPE_STRINGGValue 的内容设置为 v_string

自: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值或对象属性序列化)中依赖。

g_value_unset

清除 value 中的当前值(如果有)并“取消设置”类型,这将释放与此 GValue 相关的所有资源。取消设置的值与未初始化的(零填充的)GValue 结构相同。