static AtkRelation * get_relation_from_servant (PortableServer_Servant servant) { SpiBase *base = SPI_BASE (bonobo_object_from_servant(servant)); g_return_val_if_fail (base, NULL); return ATK_RELATION(base->gobj); }
static void atk_relation_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { AtkRelation *relation; gpointer boxed; relation = ATK_RELATION (object); switch (prop_id) { case PROP_RELATION_TYPE: relation->relationship = g_value_get_enum (value); break; case PROP_TARGET: if (relation->target) { gint i; for (i = 0; i < relation->target->len; i++) { g_object_weak_unref (G_OBJECT (g_ptr_array_index (relation->target, i)), (GWeakNotify) delete_object_while_in_relation, relation->target); } g_ptr_array_free (relation->target, TRUE); } boxed = g_value_get_boxed (value); relation->target = atk_relation_get_ptr_array_from_value_array ( (GValueArray *) boxed); break; default: break; } }
static void atk_relation_finalize (GObject *object) { AtkRelation *relation; g_return_if_fail (ATK_IS_RELATION (object)); relation = ATK_RELATION (object); if (relation->target) { gint i; for (i = 0; i < relation->target->len; i++) { g_object_weak_unref (G_OBJECT (g_ptr_array_index (relation->target, i)), (GWeakNotify) delete_object_while_in_relation, relation->target); } g_ptr_array_free (relation->target, TRUE); } G_OBJECT_CLASS (parent_class)->finalize (object); }