1 #ifndef __GITESTTYPES_H__
2 #define __GITESTTYPES_H__
4 #ifndef _GI_DISABLE_CAIRO
5 #include <cairo-gobject.h>
8 #include <glib-object.h>
14 #include "gitestmacros.h"
17 void regress_set_abort_on_error (gboolean abort_on_error);
19 /* return annotations */
21 char *regress_test_return_allow_none (void);
24 char *regress_test_return_nullable (void);
28 gboolean regress_test_boolean (gboolean in);
31 gboolean regress_test_boolean_true (gboolean in);
34 gboolean regress_test_boolean_false (gboolean in);
37 gint8 regress_test_int8 (gint8 in);
40 guint8 regress_test_uint8 (guint8 in);
43 gint16 regress_test_int16 (gint16 in);
46 guint16 regress_test_uint16 (guint16 in);
49 gint32 regress_test_int32 (gint32 in);
52 guint32 regress_test_uint32 (guint32 in);
55 gint64 regress_test_int64 (gint64 in);
58 guint64 regress_test_uint64 (guint64 in);
61 gshort regress_test_short (gshort in);
64 gushort regress_test_ushort (gushort in);
67 gint regress_test_int (gint in);
70 guint regress_test_uint (guint in);
73 glong regress_test_long (glong in);
76 gulong regress_test_ulong (gulong in);
79 gssize regress_test_ssize (gssize in);
82 gsize regress_test_size (gsize in);
85 gfloat regress_test_float (gfloat in);
88 gdouble regress_test_double (gdouble in);
91 gunichar regress_test_unichar (gunichar in);
94 time_t regress_test_timet (time_t in);
97 GType regress_test_gtype (GType in);
101 const char *regress_test_utf8_const_return (void);
104 char *regress_test_utf8_nonconst_return (void);
107 void regress_test_utf8_const_in (const char *in);
110 void regress_test_utf8_out (char **out);
113 void regress_test_utf8_inout (char **inout);
116 GSList *regress_test_filename_return (void);
119 void regress_test_utf8_null_in (char *in);
122 void regress_test_utf8_null_out (char **char_out);
124 /* in arguments after out arguments */
126 void regress_test_int_out_utf8 (int *length, const char *in);
128 /* multiple output arguments */
131 void regress_test_multi_double_args (gdouble in, gdouble *one, gdouble *two);
134 void regress_test_utf8_out_out (char **out0, char **out1);
137 char *regress_test_utf8_out_nonconst_return (char **out);
139 /* non-basic-types */
142 gboolean regress_test_strv_in (char **arr);
145 int regress_test_array_int_in (int n_ints, int *ints);
148 void regress_test_array_int_out (int *n_ints, int **ints);
151 void regress_test_array_int_inout (int *n_ints, int **ints);
154 int regress_test_array_gint8_in (int n_ints, gint8 *ints);
157 int regress_test_array_gint16_in (int n_ints, gint16 *ints);
160 gint32 regress_test_array_gint32_in (int n_ints, gint32 *ints);
163 gint64 regress_test_array_gint64_in (int n_ints, gint64 *ints);
166 char *regress_test_array_gtype_in (int n_types, GType *types);
169 const char **regress_test_strv_out_container (void);
172 char **regress_test_strv_out (void);
175 const char * const * regress_test_strv_out_c (void);
178 void regress_test_strv_outarg (const char ***retp);
181 int regress_test_array_fixed_size_int_in (int *ints);
184 void regress_test_array_fixed_size_int_out (int **ints);
187 int *regress_test_array_fixed_size_int_return (void);
191 int *regress_test_array_int_full_out(int *len);
194 int *regress_test_array_int_none_out(int *len);
197 void regress_test_array_int_null_in (int *arr, int len);
200 void regress_test_array_int_null_out (int **arr, int *len);
205 const GList *regress_test_glist_nothing_return (void);
208 GList *regress_test_glist_nothing_return2 (void);
211 GList *regress_test_glist_container_return (void);
214 GList *regress_test_glist_everything_return (void);
217 void regress_test_glist_gtype_container_in (GList *in);
220 void regress_test_glist_nothing_in (const GList *in);
223 void regress_test_glist_nothing_in2 (GList *in);
226 void regress_test_glist_null_in(GSList *in);
229 void regress_test_glist_null_out(GSList **out_list);
233 const GSList *regress_test_gslist_nothing_return (void);
236 GSList *regress_test_gslist_nothing_return2 (void);
239 GSList *regress_test_gslist_container_return (void);
242 GSList *regress_test_gslist_everything_return (void);
245 void regress_test_gslist_nothing_in (const GSList *in);
248 void regress_test_gslist_nothing_in2 (GSList *in);
251 void regress_test_gslist_null_in(GSList *in);
254 void regress_test_gslist_null_out(GSList **out_list);
258 const GHashTable *regress_test_ghash_null_return (void);
261 const GHashTable *regress_test_ghash_nothing_return (void);
264 GHashTable *regress_test_ghash_nothing_return2 (void);
267 GHashTable *regress_test_ghash_gvalue_return (void);
270 void regress_test_ghash_gvalue_in (GHashTable *hash);
273 GHashTable *regress_test_ghash_container_return (void);
276 GHashTable *regress_test_ghash_everything_return (void);
279 void regress_test_ghash_null_in (const GHashTable *in);
282 void regress_test_ghash_null_out (const GHashTable **out);
285 void regress_test_ghash_nothing_in (const GHashTable *in);
288 void regress_test_ghash_nothing_in2 (GHashTable *in);
291 GHashTable *regress_test_ghash_nested_everything_return (void);
294 GHashTable *regress_test_ghash_nested_everything_return2 (void);
298 GPtrArray *regress_test_garray_container_return (void);
301 GPtrArray *regress_test_garray_full_return (void);
307 int regress_test_closure (GClosure *closure);
310 int regress_test_closure_one_arg (GClosure *closure, int arg);
313 GVariant *regress_test_closure_variant (GClosure *closure, GVariant* arg);
317 int regress_test_int_value_arg(const GValue *v);
320 const GValue *regress_test_value_return(int i);
322 /* foreign structs */
323 #ifndef _GI_DISABLE_CAIRO
325 cairo_t *regress_test_cairo_context_full_return (void);
328 void regress_test_cairo_context_none_in (cairo_t *context);
332 cairo_surface_t *regress_test_cairo_surface_none_return (void);
335 cairo_surface_t *regress_test_cairo_surface_full_return (void);
338 void regress_test_cairo_surface_none_in (cairo_surface_t *surface);
341 void regress_test_cairo_surface_full_out (cairo_surface_t **surface);
344 /* versioning (deprecated, since, stability) */
346 void regress_test_versioning (void);
350 GVariant *regress_test_gvariant_i (void);
353 GVariant *regress_test_gvariant_s (void);
356 GVariant *regress_test_gvariant_asv (void);
359 GVariant *regress_test_gvariant_v (void);
362 GVariant *regress_test_gvariant_as (void);
366 #define NUM_REGRESS_FOO
370 * @REGRESS_TEST_VALUE1: value 1
371 * @REGRESS_TEST_VALUE2: value 2
373 * By purpose, not all members have documentation
379 REGRESS_TEST_VALUE3 = -1,
380 REGRESS_TEST_VALUE4 = '0',
386 REGRESS_TEST_UNSIGNED_VALUE1 = 1,
387 REGRESS_TEST_UNSIGNED_VALUE2 = 0x80000000
388 } RegressTestEnumUnsigned;
392 REGRESS_TEST_FLAG1 = 1 << 0,
393 REGRESS_TEST_FLAG2 = 1 << 1,
394 REGRESS_TEST_FLAG3 = 1 << 2,
398 GType regress_test_enum_get_type (void) G_GNUC_CONST;
399 #define REGRESS_TEST_TYPE_ENUM (regress_test_enum_get_type ())
402 GType regress_test_enum_unsigned_get_type (void) G_GNUC_CONST;
403 #define REGRESS_TEST_TYPE_ENUM_UNSIGNED (regress_test_enum_unsigned_get_type ())
406 GType regress_test_flags_get_type (void) G_GNUC_CONST;
407 #define REGRESS_TEST_TYPE_FLAGS (regress_test_flags_get_type ())
411 REGRESS_TEST_REFERENCE_0 = 2 + 2,
412 REGRESS_TEST_REFERENCE_1 = 1 + 1,
413 REGRESS_TEST_REFERENCE_2 = 6 * 9,
414 REGRESS_TEST_REFERENCE_3 = REGRESS_TEST_REFERENCE_1 + REGRESS_TEST_REFERENCE_1,
415 REGRESS_TEST_REFERENCE_4 = REGRESS_TEST_REFERENCE_2 * REGRESS_TEST_REFERENCE_3,
416 REGRESS_TEST_REFERENCE_5 = ~REGRESS_TEST_REFERENCE_4,
417 } RegressTestReferenceEnum;
419 /* this is not registered with GType */
422 REGRESS_TEST_EVALUE1,
423 REGRESS_TEST_EVALUE2 = 42,
424 REGRESS_TEST_EVALUE3 = '0'
425 } RegressTestEnumNoGEnum;
428 * REGRESS_TEST_EVALUE_DEPRECATED:
430 * Scanner used to replace %REGRESS_TEST_EVALUE1 with %REGRESS_TEST_EVALUE_DEPRECATED.
432 #define REGRESS_TEST_EVALUE_DEPRECATED REGRESS_TEST_EVALUE1
435 const gchar * regress_test_enum_param(RegressTestEnum e);
438 const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e);
442 void regress_global_get_flags_out (RegressTestFlags *v);
448 REGRESS_TEST_ERROR_CODE1 = 1,
449 REGRESS_TEST_ERROR_CODE2 = 2,
450 REGRESS_TEST_ERROR_CODE3 = 3
454 GType regress_test_error_get_type (void);
457 GQuark regress_test_error_quark (void);
459 /* Test weird names, with and without
460 c_symbol_prefix given by a GType
464 REGRESS_TEST_ABC_ERROR_CODE1 = 1,
465 REGRESS_TEST_ABC_ERROR_CODE2 = 2,
466 REGRESS_TEST_ABC_ERROR_CODE3 = 3
467 } RegressTestABCError;
470 GType regress_test_abc_error_get_type (void);
473 GQuark regress_test_abc_error_quark (void);
477 REGRESS_TEST_OTHER_ERROR_CODE1 = 1,
478 REGRESS_TEST_OTHER_ERROR_CODE2 = 2,
479 REGRESS_TEST_OTHER_ERROR_CODE3 = 3
480 } RegressTestOtherError;
482 /* This returns a GType for RegressTestOtherError.
483 The difference is intentional, although it
484 is mainly meant for capitalization problems.
487 GType regress_test_unconventional_error_get_type (void);
490 GQuark regress_test_unconventional_error_quark (void);
494 REGRESS_TEST_DEF_ERROR_CODE0 = 0,
495 REGRESS_TEST_DEF_ERROR_CODE1 = 1,
496 REGRESS_TEST_DEF_ERROR_CODE2 = 2
497 } RegressTestDEFError;
500 GQuark regress_test_def_error_quark (void);
502 /* the scanner used to have problem
503 with two uppercase letter right after
504 the identifier prefix, that's why
505 we break the RegressTest convention */
508 REGRESS_ATEST_ERROR_CODE0 = 0,
509 REGRESS_ATEST_ERROR_CODE1 = 1,
510 REGRESS_ATEST_ERROR_CODE2 = 2
514 GQuark regress_atest_error_quark (void);
519 #define REGRESS_NEGATIVE_INT_CONSTANT -42
520 #define REGRESS_INT_CONSTANT 4422
521 #define REGRESS_DOUBLE_CONSTANT 44.22
522 #define REGRESS_STRING_CONSTANT "Some String"
523 #define REGRESS_Mixed_Case_Constant 4423
524 #define REGRESS_BOOL_CONSTANT TRUE
525 #define REGRESS_G_GINT64_CONSTANT (G_GINT64_CONSTANT (1000))
526 #define REGRESS_GUINT64_CONSTANT ((guint64) -1)
528 typedef guint64 RegressTestTypeGUInt64;
529 #define REGRESS_GUINT64_CONSTANTA ((RegressTestTypeGUInt64) -1)
532 typedef struct _RegressTestStructA RegressTestStructA;
533 typedef struct _RegressTestStructB RegressTestStructB;
534 typedef struct _RegressTestStructC RegressTestStructC;
535 typedef struct _RegressTestStructD RegressTestStructD;
536 typedef struct _RegressTestStructF RegressTestStructF;
538 struct _RegressTestStructA
543 RegressTestEnum some_enum;
547 void regress_test_struct_a_clone (RegressTestStructA *a,
548 RegressTestStructA *a_out);
551 void regress_test_struct_a_parse (RegressTestStructA *a_out, const gchar *string);
554 void regress_test_array_struct_out (RegressTestStructA **arr, int *len);
556 struct _RegressTestStructB
559 RegressTestStructA nested_a;
563 void regress_test_struct_b_clone (RegressTestStructB *b,
564 RegressTestStructB *b_out);
566 /* This one has a non-basic member */
567 struct _RegressTestStructC
573 /* This one has annotated fields */
575 * RegressTestStructD:
576 * @array1: (array zero-terminated=1):
577 * @array2: (array zero-terminated=1) (element-type RegressTestObj):
578 * @field: (type RegressTestObj):
579 * @list: (element-type RegressTestObj):
580 * @garray: (element-type RegressTestObj):
583 struct _RegressTestStructD
585 RegressTestStructA **array1;
592 /* This one has an array of anonymous unions, inspired by GValue */
593 struct RegressTestStructE
609 /* This one has members with const or volatile modifiers. */
610 struct _RegressTestStructF
612 volatile gint ref_count;
614 const gint *const data2;
615 const gint *const *const data3;
616 const gint **const* data4;
617 volatile gint *const data5;
618 const gint *volatile data6;
619 volatile unsigned const char data7;
622 /* plain-old-data boxed types */
623 typedef struct _RegressTestSimpleBoxedA RegressTestSimpleBoxedA;
624 typedef struct _RegressTestSimpleBoxedB RegressTestSimpleBoxedB;
626 struct _RegressTestSimpleBoxedA
631 RegressTestEnum some_enum;
634 /* Intentionally uses _get_gtype */
636 GType regress_test_simple_boxed_a_get_gtype (void);
639 RegressTestSimpleBoxedA *regress_test_simple_boxed_a_copy (RegressTestSimpleBoxedA *a);
642 gboolean regress_test_simple_boxed_a_equals (RegressTestSimpleBoxedA *a,
643 RegressTestSimpleBoxedA *other_a);
646 const RegressTestSimpleBoxedA *regress_test_simple_boxed_a_const_return (void);
649 struct _RegressTestSimpleBoxedB
652 RegressTestSimpleBoxedA nested_a;
657 GType regress_test_simple_boxed_b_get_type (void);
660 RegressTestSimpleBoxedB *regress_test_simple_boxed_b_copy (RegressTestSimpleBoxedB *b);
663 #define REGRESS_TEST_TYPE_BOXED (regress_test_boxed_get_type())
665 typedef struct _RegressTestBoxed RegressTestBoxed;
666 typedef struct _RegressTestBoxedPrivate RegressTestBoxedPrivate;
668 struct _RegressTestBoxed
671 RegressTestSimpleBoxedA nested_a;
673 RegressTestBoxedPrivate *priv;
677 GType regress_test_boxed_get_type (void);
680 RegressTestBoxed *regress_test_boxed_new (void);
683 RegressTestBoxed *regress_test_boxed_new_alternative_constructor1 (int i);
686 RegressTestBoxed *regress_test_boxed_new_alternative_constructor2 (int i, int j);
689 RegressTestBoxed *regress_test_boxed_new_alternative_constructor3 (char *s);
693 RegressTestBoxed *regress_test_boxed_copy (RegressTestBoxed *boxed);
696 gboolean regress_test_boxed_equals (RegressTestBoxed *boxed,
697 RegressTestBoxed *other);
701 void regress_test_boxeds_not_a_method (RegressTestBoxed *boxed);
704 void regress_test_boxeds_not_a_static (void);
706 typedef struct _RegressTestBoxedB RegressTestBoxedB;
708 struct _RegressTestBoxedB
716 GType regress_test_boxed_b_get_type (void);
719 RegressTestBoxedB *regress_test_boxed_b_new (gint8 some_int8, glong some_long);
722 RegressTestBoxedB *regress_test_boxed_b_copy (RegressTestBoxedB *boxed);
724 typedef struct _RegressTestBoxedC RegressTestBoxedC;
726 struct _RegressTestBoxedC
733 GType regress_test_boxed_c_get_type (void);
736 RegressTestBoxedC *regress_test_boxed_c_new (void);
738 typedef struct _RegressTestBoxedD RegressTestBoxedD;
742 GType regress_test_boxed_d_get_type (void);
746 RegressTestBoxedD *regress_test_boxed_d_new (const char *a_string, int a_int);
749 RegressTestBoxedD *regress_test_boxed_d_copy (RegressTestBoxedD *boxed);
752 void regress_test_boxed_d_free (RegressTestBoxedD *boxed);
756 int regress_test_boxed_d_get_magic (RegressTestBoxedD *boxed);
759 #define REGRESS_TEST_TYPE_OBJ (regress_test_obj_get_type ())
760 #define REGRESS_TEST_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_OBJ, RegressTestObj))
761 #define REGRESS_TEST_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_OBJ))
762 #define REGRESS_TEST_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_OBJ, RegressTestObjClass))
764 typedef struct _RegressTestObj RegressTestObj;
765 typedef struct _RegressTestObjClass RegressTestObjClass;
769 * @bare: (allow-none):
771 struct _RegressTestObj
773 GObject parent_instance;
776 RegressTestBoxed *boxed;
777 GHashTable *hash_table;
785 GByteArray *byte_array;
788 void (*function_ptr) (void);
791 typedef void (*RegressTestExternallyDefinedCallback) (RegressTestObj *obj, int someint);
793 struct _RegressTestObjClass
795 GObjectClass parent_class;
797 int (*matrix) (RegressTestObj *obj, const char *somestr);
800 * RegressTestObjClass::allow_none_vfunc:
801 * @two: (allow-none): Another object
803 void (*allow_none_vfunc) (RegressTestObj *obj, RegressTestObj *two);
806 guint test_signal_with_static_scope_arg;
808 RegressTestExternallyDefinedCallback complex_vfunc;
810 /* Should be replaced with simple "gpointer" and not be callback */
811 void (*_regress_reserved1) (void);
812 void (*_regress_reserved2) (void);
816 GType regress_test_obj_get_type (void);
819 RegressTestObj* regress_test_obj_new (RegressTestObj *obj);
822 RegressTestObj* regress_constructor (void);
825 RegressTestObj* regress_test_obj_new_from_file (const char *x, GError **error);
828 void regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare);
831 void regress_test_obj_emit_sig_with_obj (RegressTestObj *obj);
834 void regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj);
837 void regress_test_obj_emit_sig_with_int64 (RegressTestObj *obj);
840 void regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj);
843 void regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj);
846 void regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj);
849 int regress_test_obj_instance_method (RegressTestObj *obj);
852 void regress_test_obj_instance_method_full (RegressTestObj *obj);
855 double regress_test_obj_static_method (int x);
858 void regress_forced_method (RegressTestObj *obj);
862 void regress_test_array_fixed_out_objects (RegressTestObj ***objs);
866 void regress_test_obj_torture_signature_0 (RegressTestObj *obj,
875 gboolean regress_test_obj_torture_signature_1 (RegressTestObj *obj,
886 gboolean regress_test_obj_skip_return_val (RegressTestObj *obj,
898 gboolean regress_test_obj_skip_return_val_no_out (RegressTestObj *obj,
904 gboolean regress_test_obj_skip_param (RegressTestObj *obj,
916 gboolean regress_test_obj_skip_out_param (RegressTestObj *obj,
928 gboolean regress_test_obj_skip_inout_param (RegressTestObj *obj,
940 int regress_test_obj_do_matrix (RegressTestObj *obj, const char *somestr);
944 void regress_func_obj_null_in (RegressTestObj *obj);
947 void regress_test_obj_null_out (RegressTestObj **obj);
949 void regress_func_obj_nullable_in (RegressTestObj *obj);
951 void regress_test_obj_not_nullable_typed_gpointer_in (RegressTestObj *obj,
954 void regress_test_obj_not_nullable_element_typed_gpointer_in (RegressTestObj *obj,
959 void regress_test_obj_name_conflict (RegressTestObj *obj);
962 #define REGRESS_TEST_TYPE_SUB_OBJ (regress_test_sub_obj_get_type ())
963 #define REGRESS_TEST_SUB_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObj))
964 #define REGRESS_TEST_IS_SUB_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_SUB_OBJ))
965 #define REGRESS_TEST_SUB_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObjClass))
967 typedef struct _RegressTestSubObj RegressTestSubObj;
968 typedef struct _RegressTestSubObjClass RegressTestSubObjClass;
970 struct _RegressTestSubObj
972 RegressTestObj parent_instance;
978 struct _RegressTestSubObjClass
980 RegressTestObjClass parent_class;
985 GType regress_test_sub_obj_get_type (void);
988 RegressTestObj* regress_test_sub_obj_new (void);
991 void regress_test_sub_obj_unset_bare (RegressTestSubObj *obj);
994 int regress_test_sub_obj_instance_method (RegressTestSubObj *obj);
996 /* fundamental object */
997 #define REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT (regress_test_fundamental_object_get_type())
998 #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
999 #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
1000 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass))
1001 #define REGRESS_TEST_FUNDAMENTAL_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObject))
1002 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass))
1003 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST(obj) ((RegressTestFundamentalObject*)(obj))
1005 typedef struct _RegressTestFundamentalObject RegressTestFundamentalObject;
1006 typedef struct _RegressTestFundamentalObjectClass RegressTestFundamentalObjectClass;
1008 * RegressTestFundamentalObjectCopyFunction:
1010 * Returns: (transfer full):
1012 typedef RegressTestFundamentalObject * (*RegressTestFundamentalObjectCopyFunction) (const RegressTestFundamentalObject *obj);
1013 typedef void (*RegressTestFundamentalObjectFinalizeFunction) (RegressTestFundamentalObject *obj);
1016 struct _RegressTestFundamentalObject {
1017 GTypeInstance instance;
1022 struct _RegressTestFundamentalObjectClass {
1023 GTypeClass type_class;
1025 RegressTestFundamentalObjectCopyFunction copy;
1026 RegressTestFundamentalObjectFinalizeFunction finalize;
1030 GType regress_test_fundamental_object_get_type (void);
1033 RegressTestFundamentalObject* regress_test_fundamental_object_ref (RegressTestFundamentalObject *fundamental_object);
1036 void regress_test_fundamental_object_unref (RegressTestFundamentalObject *fundamental_object);
1038 #define REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT(value) (G_VALUE_HOLDS(value, REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
1041 void regress_test_value_set_fundamental_object (GValue *value, RegressTestFundamentalObject *fundamental_object);
1044 RegressTestFundamentalObject* regress_test_value_get_fundamental_object (const GValue *value);
1046 typedef struct _RegressTestFundamentalSubObject RegressTestFundamentalSubObject;
1047 typedef struct _RegressTestFundamentalSubObjectClass RegressTestFundamentalSubObjectClass;
1049 struct _RegressTestFundamentalSubObject
1051 RegressTestFundamentalObject fundamental_object;
1055 struct _RegressTestFundamentalSubObjectClass {
1056 RegressTestFundamentalObjectClass fundamental_object_class;
1061 GType regress_test_fundamental_sub_object_get_type(void);
1065 RegressTestFundamentalSubObject *
1066 regress_test_fundamental_sub_object_new (const char *data);
1069 RegressTestFundamentalObject *
1070 regress_test_create_fundamental_hidden_class_instance (void);
1073 typedef void (*RegressTestSimpleCallback) (void);
1074 typedef void RegressTestNoPtrCallback (void);
1075 typedef int (*RegressTestCallback) (void);
1076 typedef int (*RegressTestCallbackUserData) (gpointer user_data);
1078 * RegressTestCallbackHashtable:
1079 * @data: (element-type utf8 gint): a hash table; will be modified
1081 typedef void (*RegressTestCallbackHashtable) (GHashTable *data);
1082 typedef void (*RegressTestCallbackGError) (const GError *error);
1084 * RegressTestCallbackOwnedGError:
1085 * @error: (transfer full): GError instance; must be freed by the callback
1087 typedef void (*RegressTestCallbackOwnedGError) (GError *error);
1089 * RegressTestCallbackFull:
1090 * @foo: the investment rate
1091 * @bar: how much money
1092 * @path: (type filename): Path to file
1094 typedef int (*RegressTestCallbackFull) (int foo, double bar, char *path);
1096 * RegressTestCallbackReturnFull:
1097 * Return value: (transfer full):
1099 typedef RegressTestObj *(*RegressTestCallbackReturnFull) (void);
1101 * RegressTestCallbackArray:
1102 * @one: (array length=one_length):
1104 * @two: (array length=two_length) (element-type utf8):
1107 typedef int (*RegressTestCallbackArray) (int *one, gsize one_length, const char** two, int two_length);
1109 * RegressTestCallbackArrayInOut:
1110 * @ints: (inout) (array length=length):
1113 typedef void (* RegressTestCallbackArrayInOut) (int **ints, int *length);
1116 void regress_test_simple_callback (RegressTestSimpleCallback callback);
1119 void regress_test_noptr_callback (RegressTestNoPtrCallback callback);
1122 int regress_test_callback (RegressTestCallback callback);
1125 int regress_test_multi_callback (RegressTestCallback callback);
1128 int regress_test_array_callback (RegressTestCallbackArray callback);
1131 int regress_test_array_inout_callback (RegressTestCallbackArrayInOut callback);
1134 int regress_test_callback_user_data (RegressTestCallbackUserData callback,
1135 gpointer user_data);
1138 void regress_test_callback_return_full (RegressTestCallbackReturnFull callback);
1141 int regress_test_callback_destroy_notify (RegressTestCallbackUserData callback,
1143 GDestroyNotify notify);
1146 int regress_test_callback_destroy_notify_no_user_data (RegressTestCallbackUserData callback,
1147 GDestroyNotify notify);
1150 int regress_test_callback_thaw_notifications (void);
1154 void regress_test_callback_async (RegressTestCallbackUserData callback, gpointer user_data);
1157 int regress_test_callback_thaw_async (void);
1161 void regress_test_async_ready_callback (GAsyncReadyCallback callback);
1165 void regress_test_obj_instance_method_callback (RegressTestObj *obj, RegressTestCallback callback);
1168 void regress_test_obj_static_method_callback (RegressTestCallback callback);
1171 RegressTestObj *regress_test_obj_new_callback (RegressTestCallbackUserData callback,
1173 GDestroyNotify notify);
1176 void regress_test_hash_table_callback (GHashTable *data, RegressTestCallbackHashtable callback);
1179 void regress_test_gerror_callback (RegressTestCallbackGError callback);
1182 void regress_test_null_gerror_callback (RegressTestCallbackGError callback);
1185 void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback);
1189 void regress_test_skip_unannotated_callback (RegressTestCallback callback);
1191 typedef struct _RegressTestInterface RegressTestInterface;
1194 #define REGRESS_TEST_TYPE_INTERFACE (regress_test_interface_get_type ())
1195 #define REGRESS_TEST_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterface))
1196 #define REGRESS_TEST_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_INTERFACE))
1197 #define REGRESS_TEST_INTERFACE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterfaceIface))
1199 typedef struct _RegressTestInterfaceIface RegressTestInterfaceIface;
1201 struct _RegressTestInterfaceIface {
1202 GTypeInterface base_iface;
1206 GType regress_test_interface_get_type (void) G_GNUC_CONST;
1209 void regress_test_interface_emit_signal (RegressTestInterface *self);
1211 /* gobject with non-standard prefix */
1212 #define REGRESS_TEST_TYPE_WI_802_1X (regress_test_wi_802_1x_get_type ())
1213 #define REGRESS_TEST_WI_802_1X(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021x))
1214 #define REGRESS_TEST_IS_WI_802_1X(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_WI_802_1X))
1215 #define REGRESS_TEST_WI_802_1X_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021xClass))
1219 GObject parent_instance;
1222 } RegressTestWi8021x;
1226 GObjectClass parent_class;
1227 } RegressTestWi8021xClass;
1231 GType regress_test_wi_802_1x_get_type (void);
1234 RegressTestWi8021x* regress_test_wi_802_1x_new (void);
1237 gboolean regress_test_wi_802_1x_get_testbool (RegressTestWi8021x *obj);
1240 void regress_test_wi_802_1x_set_testbool (RegressTestWi8021x *obj, gboolean v);
1243 int regress_test_wi_802_1x_static_method (int x);
1245 /* floating gobject */
1246 #define REGRESS_TEST_TYPE_FLOATING (regress_test_floating_get_type ())
1247 #define REGRESS_TEST_FLOATING(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_FLOATING, RegressTestFloating))
1248 #define REGRESS_TEST_IS_FLOATING(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_FLOATING))
1249 #define REGRESS_TEST_FLOATING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FLOATING, RegressTestFloatingClass))
1253 GInitiallyUnowned parent_instance;
1254 } RegressTestFloating;
1258 GInitiallyUnownedClass parent_class;
1259 } RegressTestFloatingClass;
1263 GType regress_test_floating_get_type (void);
1266 RegressTestFloating* regress_test_floating_new (void);
1268 /* Function signature torture tests */
1271 void regress_test_torture_signature_0 (int x,
1279 gboolean regress_test_torture_signature_1 (int x,
1288 void regress_test_torture_signature_2 (int x,
1289 RegressTestCallbackUserData callback,
1291 GDestroyNotify notify,
1300 GValue *regress_test_date_in_gvalue (void);
1303 GValue *regress_test_strv_in_gvalue (void);
1306 GValue *regress_test_null_strv_in_gvalue (void);
1310 GObject * _regress_this_is_a_private_symbol (void);
1314 void regress_test_multiline_doc_comments (void);
1317 void regress_test_nested_parameter (int a);
1320 * RegressSkippedStructure: (skip)
1322 * This should be skipped, and moreover, all function which
1329 } RegressSkippedStructure;
1333 void regress_random_function_with_skipped_structure (int x,
1334 RegressSkippedStructure *foo,
1340 * Like telepathy-glib's TpIntset.
1343 typedef struct _RegressIntset RegressIntset;
1346 * RegressIntsetAlias: (skip)
1348 * Compatibility typedef, like telepathy-glib's TpIntSet
1351 typedef RegressIntset RegressIntsetAlias;
1354 * RegressPtrArrayAlias:
1356 * Typedef'd GPtrArray for some reason
1358 typedef GPtrArray RegressPtrArrayAlias;
1362 void regress_introspectable_via_alias (RegressPtrArrayAlias *data);
1365 * RegressVaListAlias:
1367 * Typedef'd va_list for additional reasons
1369 typedef va_list RegressVaListAlias;
1373 void regress_not_introspectable_via_alias (RegressVaListAlias ok);
1376 * RegressAliasedTestBoxed:
1378 * Typedef TestBoxed to test caller-allocates correctness
1380 typedef RegressTestBoxed RegressAliasedTestBoxed;
1384 void regress_aliased_caller_alloc (RegressAliasedTestBoxed *boxed);
1386 /* private testing */
1389 gint this_is_public_before;
1391 gint this_is_private;
1393 gint this_is_public_after;
1394 } RegressTestPrivateStruct;
1397 REGRESS_TEST_PUBLIC_ENUM_BEFORE = 1 << 0,
1399 REGRESS_TEST_PRIVATE_ENUM = 1 << 1,
1401 REGRESS_TEST_PUBLIC_ENUM_AFTER = 1 << 2,
1402 } RegressTestPrivateEnum;
1407 } RegressTestStructFixedArray;
1411 void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str);
1415 } RegressLikeXklConfigItem;
1419 void regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem *self,
1422 #define REGRESS_UTF8_CONSTANT "const \xe2\x99\xa5 utf8"
1425 #define REGRESS_TEST_GNUC_EXTENSION_STMT(foo) (G_GNUC_EXTENSION ({ int x[10]; x[5] = 42; x[5]; }))
1428 /* https://bugzilla.gnome.org/show_bug.cgi?id=662888 */
1429 #define REGRESS_LONG_STRING_CONSTANT \
1430 "TYPE,VALUE,ENCODING,CHARSET,LANGUAGE,DOM,INTL,POSTAL,PARCEL," \
1431 "HOME,WORK,PREF,VOICE,FAX,MSG,CELL,PAGER,BBS,MODEM,CAR,ISDN,VIDEO," \
1432 "AOL,APPLELINK,ATTMAIL,CIS,EWORLD,INTERNET,IBMMAIL,MCIMAIL," \
1433 "POWERSHARE,PRODIGY,TLX,X400,GIF,CGM,WMF,BMP,MET,PMB,DIB,PICT,TIFF," \
1434 "PDF,PS,JPEG,QTIME,MPEG,MPEG2,AVI,WAVE,AIFF,PCM,X509,PGP"
1437 void regress_has_parameter_named_attrs (int foo,
1438 gpointer attributes);
1448 } RegressLikeGnomeKeyringPasswordSchema;
1450 /* Ensure we ignore symbols that start with _; in particular we don't
1451 * want to issue a namespace warning.
1453 #define _DONTSCANTHIS 1
1455 /* https://bugzilla.gnome.org/show_bug.cgi?id=685022 */
1456 #define REGRESS_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000))
1457 #define REGRESS_MAXUINT64 (G_GINT64_CONSTANT(0xffffffffffffffffU))
1459 /* https://bugzilla.gnome.org/show_bug.cgi?id=698367 */
1460 #ifndef __GI_SCANNER__
1461 #define REGRESS_DONTSCANTHIS 1
1463 #define REGRESS_GI_SCANNER_ELSE 3
1466 #ifdef __GI_SCANNER__
1467 #define REGRESS_GI_SCANNER_IFDEF 3
1471 /* This struct is one pattern by which padding can be consumed, if
1472 * you're willing to take a hard dependency on anonymous unions. */
1477 RegressLikeGnomeKeyringPasswordSchema *a[2];
1481 } RegressAnAnonymousUnion;
1488 RegressLikeGnomeKeyringPasswordSchema *a;
1489 RegressLikeXklConfigItem *b;
1494 } RegressAnonymousUnionAndStruct;
1497 regress_get_variant (void);
1499 typedef struct _RegressTestReferenceCounters RegressTestReferenceCounters;
1501 struct _RegressTestReferenceCounters {
1503 gatomicrefcount atomicrefcount;
1507 void regress_test_array_struct_out_none (RegressTestStructA **arr, gsize *len);
1510 void regress_test_array_struct_out_container (RegressTestStructA **arr, gsize *len);
1513 void regress_test_array_struct_out_full_fixed (RegressTestStructA **arr);
1516 void regress_test_array_struct_out_caller_alloc (RegressTestStructA *arr, gsize len);
1519 void regress_test_array_struct_in_full (RegressTestStructA *arr, gsize len);
1522 void regress_test_array_struct_in_none (RegressTestStructA *arr, gsize len);
1524 #endif /* __GITESTTYPES_H__ */