diff options
Diffstat (limited to 'tests/scanner/regress.c')
-rw-r--r-- | tests/scanner/regress.c | 80 |
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; } |