summaryrefslogtreecommitdiff
path: root/tests/scanner/regress.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/scanner/regress.c')
-rw-r--r--tests/scanner/regress.c80
1 files changed, 79 insertions, 1 deletions
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index f998a498..6f1c4c3b 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -3228,12 +3228,82 @@ struct _CallbackInfo
gpointer user_data;
};
+static void
+regress_test_sub_obj_iface_init (RegressTestInterfaceIface *iface)
+{
+}
+
+enum {
+ PROP_TEST_SUB_OBJ_NUMBER = 1,
+ PROP_TEST_SUB_OBJ_BOOLEAN,
+};
+
+G_DEFINE_TYPE_WITH_CODE(RegressTestSubObj, regress_test_sub_obj,
+ REGRESS_TEST_TYPE_OBJ,
+ G_IMPLEMENT_INTERFACE(REGRESS_TEST_TYPE_INTERFACE,
+ regress_test_sub_obj_iface_init));
+
+
+static void
+regress_test_sub_obj_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ RegressTestSubObj *self = REGRESS_TEST_SUB_OBJECT (object);
-G_DEFINE_TYPE(RegressTestSubObj, regress_test_sub_obj, REGRESS_TEST_TYPE_OBJ);
+ switch (property_id)
+ {
+ case PROP_TEST_SUB_OBJ_NUMBER:
+ self->number = g_value_get_int (value);
+ break;
+
+ case PROP_TEST_SUB_OBJ_BOOLEAN:
+ self->boolean = g_value_get_boolean (value);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+regress_test_sub_obj_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ RegressTestSubObj *self = REGRESS_TEST_SUB_OBJECT (object);
+
+ switch (property_id)
+ {
+ case PROP_TEST_SUB_OBJ_NUMBER:
+ g_value_set_int (value, self->number);
+ break;
+
+ case PROP_TEST_SUB_OBJ_BOOLEAN:
+ g_value_set_boolean (value, self->boolean);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
static void
regress_test_sub_obj_class_init (RegressTestSubObjClass *klass)
{
+ const guint flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS;
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->get_property = regress_test_sub_obj_get_property;
+ gobject_class->set_property = regress_test_sub_obj_set_property;
+
+ g_object_class_install_property (gobject_class, PROP_TEST_SUB_OBJ_BOOLEAN,
+ g_param_spec_boolean ("boolean", "Boolean", "Boolean",
+ TRUE, flags));
+
+ g_object_class_override_property (gobject_class, PROP_TEST_SUB_OBJ_NUMBER,
+ "number");
}
static void
@@ -3970,6 +4040,7 @@ G_DEFINE_INTERFACE (RegressTestInterface, regress_test_interface, G_TYPE_OBJECT)
static void
regress_test_interface_default_init(RegressTestInterfaceIface *iface)
{
+ const guint flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS;
static gboolean initialized = FALSE;
if (initialized)
return;
@@ -3984,6 +4055,13 @@ regress_test_interface_default_init(RegressTestInterfaceIface *iface)
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_POINTER);
+ /**
+ * RegressTestInterface:number:
+ */
+ g_object_interface_install_property (iface,
+ g_param_spec_int ("number", "Number", "Number",
+ 0, 10, 0, flags));
+
initialized = TRUE;
}