函数宏

GObjectset_object

自:2.44

声明 [src]

#define g_set_object (
  object_ptr,
  new_object
)

描述 [src]

更新一个 GObject 指针以引用 new_object

它会增加 new_object(如果非 NULL)的引用计数,减少当前 object_ptr 值的引用计数(如果非 NULL),并将 new_object 赋值给 object_ptr。赋值操作不是原子操作。

object_ptr 不能是 NULL,但可以指向一个 NULL 值。

还包括一个允许无需指针转换即可使用此函数的宏。该函数本身是静态内联的,因此其地址可能在编译单元之间不同。

此函数的一种便捷用法是在实现属性设置器时分派使用。

  void
  foo_set_bar (Foo *foo,
               Bar *new_bar)
  {
    g_return_if_fail (IS_FOO (foo));
    g_return_if_fail (new_bar == NULL || IS_BAR (new_bar));

    if (g_set_object (&foo->bar, new_bar))
      g_object_notify (foo, "bar");
  }

自:2.44

此功能不可直接供语言绑定使用。

参数

object_ptr

类型: -

指向一个 GObject 引用的指针。

new_object

类型: -

指向要赋值给 object_ptr 的新 GObject 的指针,或 NULL 以清除指针。