static gboolean on_handle_remove_alpha (TestFrobber *frobber, GDBusMethodInvocation *invocation, gpointer user_data) { TestObjectSkeleton *enclosing; enclosing = TEST_OBJECT_SKELETON (g_dbus_interface_get_object (G_DBUS_INTERFACE (frobber))); if (test_object_peek_alpha (TEST_OBJECT (enclosing)) != NULL) test_object_skeleton_set_alpha (enclosing, NULL); test_frobber_complete_add_alpha (frobber, invocation); return TRUE; }
static void test_object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TestObject *self = TEST_OBJECT (object); switch (property_id) { case PROP_LEN: g_value_set_int (value, self->len); break; case PROP_STR: g_value_set_string (value, self->str); break; case PROP_EQU: g_value_set_boolean (value, self->equal); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } }
static void test_object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { TestObject *self = TEST_OBJECT (object); switch (property_id) { case PROPERTY_VALUE: g_value_set_int (value, self->value); break; case PROPERTY_CHILD: g_value_set_object (value, self->child); break; default: g_return_if_reached (); } }
int main (int argc, char *argv[]) { GskXmlProcessor *xml_processor; GskXmlConfig *config; GValue value = { 0 }; int i; gsk_init_without_threads (&argc, &argv); config = gsk_xml_config_new (NULL); g_return_val_if_fail (config, -1); gsk_xml_config_add_type_test (config, return_true, NULL, NULL); gsk_xml_config_set_loader (config, gsk_xml_loader_introspective, NULL, NULL); xml_processor = gsk_xml_processor_new (config, G_TYPE_OBJECT, handle_value, &value, NULL); g_return_val_if_fail (xml_processor, -1); for (i = 0; i < G_N_ELEMENTS (tests); ++i) { TestObject *object; char *xml; if (!gsk_xml_processor_input (xml_processor, tests[i], strlen (tests[i]))) g_error ("error parsing XML '%s'", tests[i]); g_return_val_if_fail (G_VALUE_TYPE (&value) == G_TYPE_OBJECT, -1); g_return_val_if_fail (TEST_IS_OBJECT (g_value_get_object (&value)), -1); object = TEST_OBJECT (g_value_get_object (&value)); xml = test_object_get_xml (object); g_return_val_if_fail (strcmp (xml, tests[i]) == 0, -1); g_free (xml); g_value_unset (&value); } gsk_xml_processor_destroy (xml_processor); gsk_xml_config_unref (config); return 0; }
static void test_object_finalize (GObject *object) { TestObject *self = TEST_OBJECT (object); g_free(self->str); G_OBJECT_CLASS (test_object_parent_class)->finalize(object); }