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 时,可以使用两个分隔符,但不能混合使用。使用 - 的效率要高得多,并且是“规范形式”。建议不要使用 _

函数

g_param_spec_internal

创建一个新的 GParamSpec 实例。

g_param_spec_is_valid_name

验证给 GParamSpec 的属性名称。这对于在运行时尝试实际创建之前需要在运行时验证动态生成的属性非常有用。

自:2.66 开始

实例方法

g_param_spec_get_blurb

获取 GParamSpec 的简短说明。

g_param_spec_get_default_value

获取 pspec 的默认值,作为 GValue 的指针。

自:2.38 开始

g_param_spec_get_name

获取 GParamSpec 的名称。

g_param_spec_get_name_quark

获取名称的 GQuark。

自:2.46 开始

g_param_spec_get_nick

获取 GParamSpec 的别名。

g_param_spec_get_qdata

获取通过 g_param_spec_set_qdata() 存储的用户数据指针。

g_param_spec_get_redirect_target

如果参数规范将操作重定向到其他参数规范,则返回该参数规范。重定向通常用于在派生类型中提供属性的新实现,同时保留父类型中的所有属性。通过创建类型为 GParamSpecOverride 的属性建立重定向。有关此功能的使用示例,请参见 g_object_class_override_property()

2.4 起可用

g_param_spec_ref

增加 pspec 的引用计数。

g_param_spec_ref_sink

引用和删除 GParamSpec 的便捷功能。

2.10 起可用

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 被完成或数据被具有相同 quarkg_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() 存储的用户数据指针,并将 datapspec 中移除,而不会调用其 destroy() 函数(如果设置了)。通常,仅当需要使用销毁通知程序更新用户数据指针时,才需要调用此函数。

g_param_spec_unref

减少 pspec 的引用计数。

类结构

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 )

根据此类型比较 value1value2(建议,默认值是 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. finalize

实例终止函数(可选),应链到父类的终止方法。

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.value_validate

确保 value 的内容符合此类型设定的规范(可选),请参见 g_param_value_validate()。

GObject.ParamSpecClass.values_cmp

根据此类型比较 value1value2(建议,默认值是 memcmp()),请参见 g_param_values_cmp()。