类
GObjectParamSpec
描述 [源代码]
abstract class GObject.ParamSpec : GObject.TypeInstance
{
name: const gchar*,
flags: GParamFlags,
value_type: GType,
owner_type: GType
}
GParamSpec
封装了描述参数所需的元数据,例如 GObject
属性。
参数名称
属性名称由一个或多个由ASCII字母和数字组成的段组成,这些段由 -
或 _
字符分隔。属性名称的第一个字符必须是一个字母。这些规则与信号命名的规则相同(参见 g_signal_new()
)。
创建和查找 GParamSpec
时,可以使用两个分隔符,但不能混合使用。使用 -
的效率要高得多,并且是“规范形式”。建议不要使用 _
。
后代
- GParamSpecBoolean
- GParamSpecBoxed
- GParamSpecChar
- GParamSpecDouble
- GParamSpecEnum
- GParamSpecFlags
- GParamSpecFloat
- GParamSpecGType
- GParamSpecInt
- GParamSpecInt64
- GParamSpecLong
- GParamSpecObject
- GParamSpecOverride
- GParamSpecParam
- GParamSpecPointer
- GParamSpecString
- GParamSpecUChar
- GParamSpecUInt
- GParamSpecUInt64
- GParamSpecULong
- GParamSpecUnichar
- GParamSpecValueArray
- GParamSpecVariant
实例方法
g_param_spec_get_redirect_target
如果参数规范将操作重定向到其他参数规范,则返回该参数规范。重定向通常用于在派生类型中提供属性的新实现,同时保留父类型中的所有属性。通过创建类型为 GParamSpecOverride
的属性建立重定向。有关此功能的使用示例,请参见 g_object_class_override_property()
。
2.4 起可用
g_param_spec_set_qdata
在 GParamSpec
上设置一个不透明的、命名的指针。名称通过 GQuark
(例如,通过 g_quark_from_static_string() 检索)指定,并且可以从 pspec
获取指针 user data 指针被覆盖时,设置以前设置的 user data 指针,覆盖(释放)旧指针,本质上将 NULL
作为指针会移除存储的数据。
g_param_spec_set_qdata_full
此函数的作用与 g_param_spec_set_qdata() 类似,但此外,还可以指定一个 void (*destroy) (gpointer)
函数,当 pspec
被完成或数据被具有相同 quark
的 g_param_spec_set_qdata()
调用覆盖时,将以 data
作为参数调用该函数。
g_param_spec_sink
新创建的 GParamSpec
的初始引用计数为 1,即使尚未显式调用其上的 g_param_spec_ref()
。因此,初始引用计数标记为“浮动”,直到某人按顺序在其上调用 g_param_spec_ref (pspec); g_param_spec_sink (pspec);
,接管初始引用计数(最终得到引用计数仍然为 1,但不再标记为“浮动”的 pspec
)。
g_param_spec_steal_qdata
获取通过 g_param_spec_set_qdata()
存储的用户数据指针,并将 data
从 pspec
中移除,而不会调用其 destroy()
函数(如果设置了)。通常,仅当需要使用销毁通知程序更新用户数据指针时,才需要调用此函数。
类结构
struct GObjectParamSpecClass {
GTypeClass g_type_class;
GType value_type;
void (* finalize) (
GParamSpec* pspec
);
void (* value_set_default) (
GParamSpec* pspec,
GValue* value
);
gboolean (* value_validate) (
GParamSpec* pspec,
GValue* value
);
gint (* values_cmp) (
GParamSpec* pspec,
const GValue* value1,
const GValue* value2
);
gboolean (* value_is_valid) (
GParamSpec* pspec,
const GValue* value
);
}
GParamSpec 类型的类结构。通常,GParamSpec 类由 g_param_type_register_static() 填充。
类成员
g_type_class: GTypeClass
父类。
value_type: GType
此参数的
GValue
类型。finalize: void (* finalize) ( GParamSpec* pspec )
实例终止函数(可选),应链到父类的终止方法。
value_set_default: void (* value_set_default) ( GParamSpec* pspec, GValue* value )
将
value
重置为此类型的默认值(推荐,默认值是 g_value_reset()),请参见 g_param_value_set_default()。value_validate: gboolean (* value_validate) ( GParamSpec* pspec, GValue* value )
确保
value
的内容符合此类型设定的规范(可选),请参见 g_param_value_validate()。values_cmp: gint (* values_cmp) ( GParamSpec* pspec, const GValue* value1, const GValue* value2 )
根据此类型比较
value1
和value2
(建议,默认值是 memcmp()),请参见 g_param_values_cmp()。value_is_valid: gboolean (* value_is_valid) ( GParamSpec* pspec, const GValue* value )
检查
value
的内容是否符合此类型规定,而不修改此值。此 vfunc 是可选的。如果它未设置,GObject 将使用value_validate
。自 2.74 起。
虚拟方法
GObject.ParamSpecClass.value_is_valid
检查value
的内容是否符合此类型规定,而不修改此值。此 vfunc 是可选的。如果它未设置,GObject 将使用 value_validate
。自 2.74 起。
GObject.ParamSpecClass.value_set_default
将 value
重置为此类型的默认值(推荐,默认值是 g_value_reset()),请参见 g_param_value_set_default()。
GObject.ParamSpecClass.values_cmp
根据此类型比较 value1
和 value2
(建议,默认值是 memcmp()),请参见 g_param_values_cmp()。