1 /* We are testing some deprecated APIs here */
2 #ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
3 #define GLIB_DISABLE_DEPRECATION_WARNINGS
6 #include <glib-object.h>
9 GObject parent_instance;
18 GObjectClass parent_class;
21 GType test_object_get_type (void);
23 G_DEFINE_TYPE_WITH_CODE (TestObject, test_object, G_TYPE_OBJECT,
24 G_ADD_PRIVATE (TestObject))
27 test_object_class_init (TestObjectClass *klass)
32 test_object_init (TestObject *self)
34 TestObjectPrivate *priv = test_object_get_instance_private (self);
36 if (g_test_verbose ())
37 g_printerr ("Offset of %sPrivate for type '%s': %d\n",
38 G_OBJECT_TYPE_NAME (self),
39 G_OBJECT_TYPE_NAME (self),
40 TestObject_private_offset);
43 priv->dummy_1 = 3.14159f;
47 test_object_get_dummy_0 (TestObject *self)
49 TestObjectPrivate *priv = test_object_get_instance_private (self);
55 test_object_get_dummy_1 (TestObject *self)
57 TestObjectPrivate *priv = test_object_get_instance_private (self);
63 TestObject parent_instance;
71 TestObjectClass parent_class;
74 GType test_derived_get_type (void);
76 G_DEFINE_TYPE_WITH_CODE (TestDerived, test_derived, test_object_get_type (),
77 G_ADD_PRIVATE (TestDerived))
80 test_derived_finalize (GObject *obj)
82 TestDerivedPrivate *priv = test_derived_get_instance_private ((TestDerived *) obj);
84 g_free (priv->dummy_2);
86 G_OBJECT_CLASS (test_derived_parent_class)->finalize (obj);
90 test_derived_class_init (TestDerivedClass *klass)
92 G_OBJECT_CLASS (klass)->finalize = test_derived_finalize;
96 test_derived_init (TestDerived *self)
98 TestDerivedPrivate *priv = test_derived_get_instance_private (self);
100 if (g_test_verbose ())
101 g_printerr ("Offset of %sPrivate for type '%s': %d\n",
102 G_OBJECT_TYPE_NAME (self),
103 G_OBJECT_TYPE_NAME (self),
104 TestDerived_private_offset);
106 priv->dummy_2 = g_strdup ("Hello");
110 test_derived_get_dummy_2 (TestDerived *self)
112 TestDerivedPrivate *priv = test_derived_get_instance_private (self);
114 return priv->dummy_2;
118 TestObject parent_instance;
126 TestObjectClass parent_class;
129 GType test_mixed_get_type (void);
131 G_DEFINE_TYPE (TestMixed, test_mixed, test_object_get_type ())
134 test_mixed_class_init (TestMixedClass *klass)
136 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
137 g_type_class_add_private (klass, sizeof (TestMixedPrivate));
138 G_GNUC_END_IGNORE_DEPRECATIONS
142 test_mixed_init (TestMixed *self)
144 TestMixedPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, test_mixed_get_type (), TestMixedPrivate);
146 if (g_test_verbose ())
147 g_printerr ("Offset of %sPrivate for type '%s': %d\n",
148 G_OBJECT_TYPE_NAME (self),
149 G_OBJECT_TYPE_NAME (self),
150 TestMixed_private_offset);
156 test_mixed_get_dummy_3 (TestMixed *self)
158 TestMixedPrivate *priv = G_TYPE_INSTANCE_GET_PRIVATE (self, test_mixed_get_type (), TestMixedPrivate);
160 return priv->dummy_3;
164 TestMixed parent_instance;
169 } TestMixedDerivedPrivate;
172 TestMixedClass parent_class;
173 } TestMixedDerivedClass;
175 GType test_mixed_derived_get_type (void);
177 G_DEFINE_TYPE_WITH_CODE (TestMixedDerived, test_mixed_derived, test_mixed_get_type (),
178 G_ADD_PRIVATE (TestMixedDerived))
181 test_mixed_derived_class_init (TestMixedDerivedClass *klass)
186 test_mixed_derived_init (TestMixedDerived *self)
188 TestMixedDerivedPrivate *priv = test_mixed_derived_get_instance_private (self);
190 if (g_test_verbose ())
191 g_printerr ("Offset of %sPrivate for type '%s': %d\n",
192 G_OBJECT_TYPE_NAME (self),
193 G_OBJECT_TYPE_NAME (self),
194 TestMixedDerived_private_offset);
196 priv->dummy_4 = g_get_monotonic_time ();
200 test_mixed_derived_get_dummy_4 (TestMixedDerived *self)
202 TestMixedDerivedPrivate *priv = test_mixed_derived_get_instance_private (self);
204 return priv->dummy_4;
208 private_instance (void)
210 TestObject *obj = g_object_new (test_object_get_type (), NULL);
214 g_assert_cmpint (test_object_get_dummy_0 (obj), ==, 42);
215 g_assert_cmpfloat (test_object_get_dummy_1 (obj), ==, 3.14159f);
217 class = g_type_class_ref (test_object_get_type ());
218 offset = g_type_class_get_instance_private_offset (class);
219 g_type_class_unref (class);
221 g_assert (offset == TestObject_private_offset);
223 g_object_unref (obj);
227 private_derived_instance (void)
229 TestDerived *obj = g_object_new (test_derived_get_type (), NULL);
231 g_assert_cmpstr (test_derived_get_dummy_2 (obj), ==, "Hello");
232 g_assert_cmpint (test_object_get_dummy_0 ((TestObject *) obj), ==, 42);
234 g_object_unref (obj);
238 private_mixed_derived_instance (void)
240 TestMixedDerived *derived = g_object_new (test_mixed_derived_get_type (), NULL);
241 TestMixed *mixed = g_object_new (test_mixed_get_type (), NULL);
243 g_assert_cmpint (test_mixed_get_dummy_3 (mixed), ==, 47);
244 g_assert (test_mixed_derived_get_dummy_4 (derived) <= g_get_monotonic_time ());
246 g_object_unref (derived);
247 g_object_unref (mixed);
254 g_test_init (&argc, &argv, NULL);
256 g_test_add_func ("/private/instance", private_instance);
257 g_test_add_func ("/private/derived-instance", private_derived_instance);
258 g_test_add_func ("/private/mixed-derived-instance", private_mixed_derived_instance);
260 return g_test_run ();