类
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()。