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.c126
1 files changed, 120 insertions, 6 deletions
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index c6ca6b74..d32c52be 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -3,7 +3,6 @@
#include <stdlib.h>
#include <glib-object.h>
#include <gobject/gvaluecollector.h>
-#include <cairo-gobject.h>
#include "regress.h"
@@ -285,6 +284,7 @@ regress_test_value_return(int i)
/************************************************************************/
/* foreign structs */
+#ifndef _GI_DISABLE_CAIRO
/**
* regress_test_cairo_context_full_return:
*
@@ -365,6 +365,7 @@ regress_test_cairo_surface_full_out (cairo_surface_t **surface)
{
*surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10);
}
+#endif
/**
* regress_test_gvariant_i:
@@ -907,7 +908,7 @@ regress_test_array_int_null_out (int **arr, int *len)
/* GList */
static /*const*/ GList *
-regress_test_sequence_list()
+regress_test_sequence_list (void)
{
static GList *list = NULL;
if (!list) {
@@ -1028,7 +1029,7 @@ regress_test_glist_null_out (GSList **out_list)
/* GSList */
static /*const*/ GSList *
-regress_test_sequence_slist()
+regress_test_sequence_slist (void)
{
static GSList *list = NULL;
if (!list) {
@@ -1152,7 +1153,7 @@ static char *table_data[3][2] = {
};
static GHashTable *
-regress_test_table_ghash_new_container()
+regress_test_table_ghash_new_container (void)
{
GHashTable *hash;
int i;
@@ -1163,7 +1164,7 @@ regress_test_table_ghash_new_container()
}
static GHashTable *
-regress_test_table_ghash_new_full()
+regress_test_table_ghash_new_full (void)
{
GHashTable *hash;
int i;
@@ -1176,7 +1177,7 @@ regress_test_table_ghash_new_full()
}
static /*const*/ GHashTable *
-regress_test_table_ghash_const()
+regress_test_table_ghash_const (void)
{
static GHashTable *hash = NULL;
if (!hash) {
@@ -1953,6 +1954,53 @@ G_DEFINE_BOXED_TYPE(RegressTestBoxedC,
regress_test_boxed_c_ref,
regress_test_boxed_c_unref);
+struct _RegressTestBoxedD {
+ char *a_string;
+ gint a_int;
+};
+
+RegressTestBoxedD *
+regress_test_boxed_d_new (const char *a_string, int a_int)
+{
+ RegressTestBoxedD *boxed;
+
+ boxed = g_slice_new (RegressTestBoxedD);
+ boxed->a_string = g_strdup (a_string);
+ boxed->a_int = a_int;
+
+ return boxed;
+}
+
+RegressTestBoxedD *
+regress_test_boxed_d_copy (RegressTestBoxedD *boxed)
+{
+ RegressTestBoxedD *ret;
+
+ ret = g_slice_new (RegressTestBoxedD);
+ ret->a_string = g_strdup (boxed->a_string);
+ ret->a_int = boxed->a_int;
+
+ return ret;
+}
+
+void
+regress_test_boxed_d_free (RegressTestBoxedD *boxed)
+{
+ g_free (boxed->a_string);
+ g_slice_free (RegressTestBoxedD, boxed);
+}
+
+int
+regress_test_boxed_d_get_magic (RegressTestBoxedD *boxed)
+{
+ return strlen (boxed->a_string) + boxed->a_int;
+}
+
+G_DEFINE_BOXED_TYPE(RegressTestBoxedD,
+ regress_test_boxed_d,
+ regress_test_boxed_d_copy,
+ regress_test_boxed_d_free);
+
G_DEFINE_TYPE(RegressTestObj, regress_test_obj, G_TYPE_OBJECT);
enum
@@ -2125,6 +2173,7 @@ regress_test_obj_default_matrix (RegressTestObj *obj, const char *somestr)
enum {
REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_LEN_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ,
@@ -2134,6 +2183,7 @@ enum {
REGRESS_TEST_OBJ_SIGNAL_ALL,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INT64_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_UINT64_PROP,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET,
N_REGRESS_TEST_OBJ_SIGNALS
};
@@ -2192,6 +2242,27 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
G_TYPE_ARRAY);
/**
+ * RegressTestObj::sig-with-array-len-prop:
+ * @self: an object
+ * @arr: (array length=len) (element-type uint) (allow-none): numbers, or %NULL
+ * @len: length of @arr, or 0
+ *
+ * This test signal similar to GSettings::change-event
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_LEN_PROP] =
+ g_signal_new ("sig-with-array-len-prop",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_POINTER,
+ G_TYPE_INT);
+
+ /**
* RegressTestObj::sig-with-hash-prop:
* @self: an object
* @hash: (element-type utf8 GObject.Value):
@@ -2250,6 +2321,7 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_OBJECT);
+#ifndef _GI_DISABLE_CAIRO
/**
* RegressTestObj::sig-with-foreign-struct:
* @self: an object
@@ -2266,6 +2338,7 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
G_TYPE_NONE,
1,
CAIRO_GOBJECT_TYPE_CONTEXT);
+#endif
regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_FIRST] =
g_signal_new ("first",
@@ -2340,6 +2413,25 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_UINT64);
+ /**
+ * RegressTestObj::sig-with-intarray-ret:
+ * @self: an object
+ * @i: an integer
+ *
+ * Returns: (array zero-terminated=1) (element-type gint) (transfer full):
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET] =
+ g_signal_new ("sig-with-intarray-ret",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__BOXED,
+ G_TYPE_ARRAY,
+ 1,
+ G_TYPE_INT);
+
gobject_class->set_property = regress_test_obj_set_property;
gobject_class->get_property = regress_test_obj_get_property;
gobject_class->dispose = regress_test_obj_dispose;
@@ -2553,6 +2645,7 @@ regress_test_obj_emit_sig_with_obj (RegressTestObj *obj)
g_object_unref (obj_param);
}
+#ifndef _GI_DISABLE_CAIRO
void
regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj)
{
@@ -2560,6 +2653,7 @@ regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj)
g_signal_emit_by_name (obj, "sig-with-foreign-struct", cr);
cairo_destroy (cr);
}
+#endif
void
regress_test_obj_emit_sig_with_int64 (RegressTestObj *obj)
@@ -3514,6 +3608,18 @@ regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback)
callback (error);
}
+/**
+ * regress_test_skip_unannotated_callback: (skip)
+ * @callback: No annotation here
+ *
+ * Should not emit a warning:
+ * https://bugzilla.gnome.org/show_bug.cgi?id=685399
+ */
+void
+regress_test_skip_unannotated_callback (RegressTestCallback callback)
+{
+}
+
/* interface */
static void
@@ -3901,3 +4007,11 @@ void
regress_test_versioning (void)
{
}
+
+void
+regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem *self,
+ const char *name)
+{
+ strncpy (self->name, name, sizeof (self->name) - 1);
+ self->name[sizeof(self->name)-1] = '\0';
+}