1 #ifndef __GITESTTYPES_H__
2 #define __GITESTTYPES_H__
3 
4 #ifndef _GI_DISABLE_CAIRO
5 #include <cairo-gobject.h>
6 #endif
7 #include <glib.h>
8 #include <glib-object.h>
9 #include <gio/gio.h>
10 #include <time.h>
11 #include <string.h>
12 #include <stdlib.h>
13 
14 #include "gitestmacros.h"
15 
16 _GI_TEST_EXTERN
17 void regress_set_abort_on_error (gboolean abort_on_error);
18 
19 /* return annotations */
20 _GI_TEST_EXTERN
21 char *regress_test_return_allow_none (void);
22 
23 _GI_TEST_EXTERN
24 char *regress_test_return_nullable (void);
25 
26 /* basic types */
27 _GI_TEST_EXTERN
28 gboolean regress_test_boolean (gboolean in);
29 
30 _GI_TEST_EXTERN
31 gboolean regress_test_boolean_true (gboolean in);
32 
33 _GI_TEST_EXTERN
34 gboolean regress_test_boolean_false (gboolean in);
35 
36 _GI_TEST_EXTERN
37 gint8 regress_test_int8 (gint8 in);
38 
39 _GI_TEST_EXTERN
40 guint8 regress_test_uint8 (guint8 in);
41 
42 _GI_TEST_EXTERN
43 gint16 regress_test_int16 (gint16 in);
44 
45 _GI_TEST_EXTERN
46 guint16 regress_test_uint16 (guint16 in);
47 
48 _GI_TEST_EXTERN
49 gint32 regress_test_int32 (gint32 in);
50 
51 _GI_TEST_EXTERN
52 guint32 regress_test_uint32 (guint32 in);
53 
54 _GI_TEST_EXTERN
55 gint64 regress_test_int64 (gint64 in);
56 
57 _GI_TEST_EXTERN
58 guint64 regress_test_uint64 (guint64 in);
59 
60 _GI_TEST_EXTERN
61 gshort regress_test_short (gshort in);
62 
63 _GI_TEST_EXTERN
64 gushort regress_test_ushort (gushort in);
65 
66 _GI_TEST_EXTERN
67 gint regress_test_int (gint in);
68 
69 _GI_TEST_EXTERN
70 guint regress_test_uint (guint in);
71 
72 _GI_TEST_EXTERN
73 glong regress_test_long (glong in);
74 
75 _GI_TEST_EXTERN
76 gulong regress_test_ulong (gulong in);
77 
78 _GI_TEST_EXTERN
79 gssize regress_test_ssize (gssize in);
80 
81 _GI_TEST_EXTERN
82 gsize regress_test_size (gsize in);
83 
84 _GI_TEST_EXTERN
85 gfloat regress_test_float (gfloat in);
86 
87 _GI_TEST_EXTERN
88 gdouble regress_test_double (gdouble in);
89 
90 _GI_TEST_EXTERN
91 gunichar regress_test_unichar (gunichar in);
92 
93 _GI_TEST_EXTERN
94 time_t regress_test_timet (time_t in);
95 
96 _GI_TEST_EXTERN
97 GType regress_test_gtype (GType in);
98 
99 /* utf8 */
100 _GI_TEST_EXTERN
101 const char *regress_test_utf8_const_return (void);
102 
103 _GI_TEST_EXTERN
104 char *regress_test_utf8_nonconst_return (void);
105 
106 _GI_TEST_EXTERN
107 void regress_test_utf8_const_in (const char *in);
108 
109 _GI_TEST_EXTERN
110 void regress_test_utf8_out (char **out);
111 
112 _GI_TEST_EXTERN
113 void regress_test_utf8_inout (char **inout);
114 
115 _GI_TEST_EXTERN
116 GSList *regress_test_filename_return (void);
117 
118 _GI_TEST_EXTERN
119 void regress_test_utf8_null_in (char *in);
120 
121 _GI_TEST_EXTERN
122 void regress_test_utf8_null_out (char **char_out);
123 
124 /* in arguments after out arguments */
125 _GI_TEST_EXTERN
126 void regress_test_int_out_utf8 (int *length, const char *in);
127 
128 /* multiple output arguments */
129 
130 _GI_TEST_EXTERN
131 void regress_test_multi_double_args (gdouble in, gdouble *one, gdouble *two);
132 
133 _GI_TEST_EXTERN
134 void regress_test_utf8_out_out (char **out0, char **out1);
135 
136 _GI_TEST_EXTERN
137 char *regress_test_utf8_out_nonconst_return (char **out);
138 
139 /* non-basic-types */
140 /* array */
141 _GI_TEST_EXTERN
142 gboolean regress_test_strv_in (char **arr);
143 
144 _GI_TEST_EXTERN
145 int regress_test_array_int_in (int n_ints, int *ints);
146 
147 _GI_TEST_EXTERN
148 void regress_test_array_int_out (int *n_ints, int **ints);
149 
150 _GI_TEST_EXTERN
151 void regress_test_array_int_inout (int *n_ints, int **ints);
152 
153 _GI_TEST_EXTERN
154 int regress_test_array_gint8_in (int n_ints, gint8 *ints);
155 
156 _GI_TEST_EXTERN
157 int regress_test_array_gint16_in (int n_ints, gint16 *ints);
158 
159 _GI_TEST_EXTERN
160 gint32 regress_test_array_gint32_in (int n_ints, gint32 *ints);
161 
162 _GI_TEST_EXTERN
163 gint64 regress_test_array_gint64_in (int n_ints, gint64 *ints);
164 
165 _GI_TEST_EXTERN
166 char *regress_test_array_gtype_in (int n_types, GType *types);
167 
168 _GI_TEST_EXTERN
169 const char **regress_test_strv_out_container (void);
170 
171 _GI_TEST_EXTERN
172 char **regress_test_strv_out (void);
173 
174 _GI_TEST_EXTERN
175 const char * const * regress_test_strv_out_c (void);
176 
177 _GI_TEST_EXTERN
178 void   regress_test_strv_outarg (const char ***retp);
179 
180 _GI_TEST_EXTERN
181 int regress_test_array_fixed_size_int_in (int *ints);
182 
183 _GI_TEST_EXTERN
184 void regress_test_array_fixed_size_int_out (int **ints);
185 
186 _GI_TEST_EXTERN
187 int *regress_test_array_fixed_size_int_return (void);
188 
189 /* transfer tests */
190 _GI_TEST_EXTERN
191 int *regress_test_array_int_full_out(int *len);
192 
193 _GI_TEST_EXTERN
194 int *regress_test_array_int_none_out(int *len);
195 
196 _GI_TEST_EXTERN
197 void regress_test_array_int_null_in (int *arr, int len);
198 
199 _GI_TEST_EXTERN
200 void regress_test_array_int_null_out (int **arr, int *len);
201 
202 /* interface */
203 /* GList */
204 _GI_TEST_EXTERN
205 const GList *regress_test_glist_nothing_return (void);
206 
207 _GI_TEST_EXTERN
208 GList *regress_test_glist_nothing_return2 (void);
209 
210 _GI_TEST_EXTERN
211 GList *regress_test_glist_container_return (void);
212 
213 _GI_TEST_EXTERN
214 GList *regress_test_glist_everything_return (void);
215 
216 _GI_TEST_EXTERN
217 void regress_test_glist_gtype_container_in (GList *in);
218 
219 _GI_TEST_EXTERN
220 void regress_test_glist_nothing_in (const GList *in);
221 
222 _GI_TEST_EXTERN
223 void regress_test_glist_nothing_in2 (GList *in);
224 
225 _GI_TEST_EXTERN
226 void regress_test_glist_null_in(GSList *in);
227 
228 _GI_TEST_EXTERN
229 void regress_test_glist_null_out(GSList **out_list);
230 
231 /* GSList */
232 _GI_TEST_EXTERN
233 const GSList *regress_test_gslist_nothing_return (void);
234 
235 _GI_TEST_EXTERN
236 GSList *regress_test_gslist_nothing_return2 (void);
237 
238 _GI_TEST_EXTERN
239 GSList *regress_test_gslist_container_return (void);
240 
241 _GI_TEST_EXTERN
242 GSList *regress_test_gslist_everything_return (void);
243 
244 _GI_TEST_EXTERN
245 void regress_test_gslist_nothing_in (const GSList *in);
246 
247 _GI_TEST_EXTERN
248 void regress_test_gslist_nothing_in2 (GSList *in);
249 
250 _GI_TEST_EXTERN
251 void regress_test_gslist_null_in(GSList *in);
252 
253 _GI_TEST_EXTERN
254 void regress_test_gslist_null_out(GSList **out_list);
255 
256 /* GHashTable */
257 _GI_TEST_EXTERN
258 const GHashTable *regress_test_ghash_null_return (void);
259 
260 _GI_TEST_EXTERN
261 const GHashTable *regress_test_ghash_nothing_return (void);
262 
263 _GI_TEST_EXTERN
264 GHashTable *regress_test_ghash_nothing_return2 (void);
265 
266 _GI_TEST_EXTERN
267 GHashTable *regress_test_ghash_gvalue_return (void);
268 
269 _GI_TEST_EXTERN
270 void regress_test_ghash_gvalue_in (GHashTable *hash);
271 
272 _GI_TEST_EXTERN
273 GHashTable *regress_test_ghash_container_return (void);
274 
275 _GI_TEST_EXTERN
276 GHashTable *regress_test_ghash_everything_return (void);
277 
278 _GI_TEST_EXTERN
279 void regress_test_ghash_null_in (const GHashTable *in);
280 
281 _GI_TEST_EXTERN
282 void regress_test_ghash_null_out (const GHashTable **out);
283 
284 _GI_TEST_EXTERN
285 void regress_test_ghash_nothing_in (const GHashTable *in);
286 
287 _GI_TEST_EXTERN
288 void regress_test_ghash_nothing_in2 (GHashTable *in);
289 
290 _GI_TEST_EXTERN
291 GHashTable *regress_test_ghash_nested_everything_return (void);
292 
293 _GI_TEST_EXTERN
294 GHashTable *regress_test_ghash_nested_everything_return2 (void);
295 
296 /* GPtrArray */
297 _GI_TEST_EXTERN
298 GPtrArray *regress_test_garray_container_return (void);
299 
300 _GI_TEST_EXTERN
301 GPtrArray *regress_test_garray_full_return (void);
302 
303 /* error? */
304 
305 /* closure */
306 _GI_TEST_EXTERN
307 int regress_test_closure (GClosure *closure);
308 
309 _GI_TEST_EXTERN
310 int regress_test_closure_one_arg (GClosure *closure, int arg);
311 
312 _GI_TEST_EXTERN
313 GVariant *regress_test_closure_variant (GClosure *closure, GVariant* arg);
314 
315 /* value */
316 _GI_TEST_EXTERN
317 int regress_test_int_value_arg(const GValue *v);
318 
319 _GI_TEST_EXTERN
320 const GValue *regress_test_value_return(int i);
321 
322 /* foreign structs */
323 #ifndef _GI_DISABLE_CAIRO
324 _GI_TEST_EXTERN
325 cairo_t *regress_test_cairo_context_full_return (void);
326 
327 _GI_TEST_EXTERN
328 void regress_test_cairo_context_none_in (cairo_t *context);
329 
330 
331 _GI_TEST_EXTERN
332 cairo_surface_t *regress_test_cairo_surface_none_return (void);
333 
334 _GI_TEST_EXTERN
335 cairo_surface_t *regress_test_cairo_surface_full_return (void);
336 
337 _GI_TEST_EXTERN
338 void regress_test_cairo_surface_none_in (cairo_surface_t *surface);
339 
340 _GI_TEST_EXTERN
341 void regress_test_cairo_surface_full_out (cairo_surface_t **surface);
342 #endif
343 
344 /* versioning (deprecated, since, stability) */
345 _GI_TEST_EXTERN
346 void regress_test_versioning (void);
347 
348 
349 _GI_TEST_EXTERN
350 GVariant *regress_test_gvariant_i (void);
351 
352 _GI_TEST_EXTERN
353 GVariant *regress_test_gvariant_s (void);
354 
355 _GI_TEST_EXTERN
356 GVariant *regress_test_gvariant_asv (void);
357 
358 _GI_TEST_EXTERN
359 GVariant *regress_test_gvariant_v (void);
360 
361 _GI_TEST_EXTERN
362 GVariant *regress_test_gvariant_as (void);
363 
364 /* enums / flags */
365 
366 #define NUM_REGRESS_FOO
367 
368 /**
369  * RegressTestEnum:
370  * @REGRESS_TEST_VALUE1: value 1
371  * @REGRESS_TEST_VALUE2: value 2
372  *
373  * By purpose, not all members have documentation
374  */
375 typedef enum
376 {
377   REGRESS_TEST_VALUE1,
378   REGRESS_TEST_VALUE2,
379   REGRESS_TEST_VALUE3 = -1,
380   REGRESS_TEST_VALUE4 = '0',
381   REGRESS_TEST_VALUE5
382 } RegressTestEnum;
383 
384 typedef enum
385 {
386   REGRESS_TEST_UNSIGNED_VALUE1 = 1,
387   REGRESS_TEST_UNSIGNED_VALUE2 = 0x80000000
388 } RegressTestEnumUnsigned;
389 
390 typedef enum
391 {
392   REGRESS_TEST_FLAG1 = 1 << 0,
393   REGRESS_TEST_FLAG2 = 1 << 1,
394   REGRESS_TEST_FLAG3 = 1 << 2,
395 } RegressTestFlags;
396 
397 _GI_TEST_EXTERN
398 GType regress_test_enum_get_type (void) G_GNUC_CONST;
399 #define REGRESS_TEST_TYPE_ENUM (regress_test_enum_get_type ())
400 
401 _GI_TEST_EXTERN
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 ())
404 
405 _GI_TEST_EXTERN
406 GType regress_test_flags_get_type (void) G_GNUC_CONST;
407 #define REGRESS_TEST_TYPE_FLAGS (regress_test_flags_get_type ())
408 
409 typedef enum
410 {
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;
418 
419 /* this is not registered with GType */
420 typedef enum
421 {
422   REGRESS_TEST_EVALUE1,
423   REGRESS_TEST_EVALUE2 = 42,
424   REGRESS_TEST_EVALUE3 = '0'
425 } RegressTestEnumNoGEnum;
426 
427 /**
428  * REGRESS_TEST_EVALUE_DEPRECATED:
429  *
430  * Scanner used to replace %REGRESS_TEST_EVALUE1 with %REGRESS_TEST_EVALUE_DEPRECATED.
431  */
432 #define REGRESS_TEST_EVALUE_DEPRECATED REGRESS_TEST_EVALUE1
433 
434 _GI_TEST_EXTERN
435 const gchar * regress_test_enum_param(RegressTestEnum e);
436 
437 _GI_TEST_EXTERN
438 const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e);
439 
440 
441 _GI_TEST_EXTERN
442 void regress_global_get_flags_out (RegressTestFlags *v);
443 
444 /* error domains */
445 
446 typedef enum
447 {
448   REGRESS_TEST_ERROR_CODE1 = 1,
449   REGRESS_TEST_ERROR_CODE2 = 2,
450   REGRESS_TEST_ERROR_CODE3 = 3
451 } RegressTestError;
452 
453 _GI_TEST_EXTERN
454 GType regress_test_error_get_type (void);
455 
456 _GI_TEST_EXTERN
457 GQuark regress_test_error_quark (void);
458 
459 /* Test weird names, with and without
460    c_symbol_prefix given by a GType
461 */
462 typedef enum
463 {
464   REGRESS_TEST_ABC_ERROR_CODE1 = 1,
465   REGRESS_TEST_ABC_ERROR_CODE2 = 2,
466   REGRESS_TEST_ABC_ERROR_CODE3 = 3
467 } RegressTestABCError;
468 
469 _GI_TEST_EXTERN
470 GType regress_test_abc_error_get_type (void);
471 
472 _GI_TEST_EXTERN
473 GQuark regress_test_abc_error_quark (void);
474 
475 typedef enum
476 {
477   REGRESS_TEST_OTHER_ERROR_CODE1 = 1,
478   REGRESS_TEST_OTHER_ERROR_CODE2 = 2,
479   REGRESS_TEST_OTHER_ERROR_CODE3 = 3
480 } RegressTestOtherError;
481 
482 /* This returns a GType for RegressTestOtherError.
483    The difference is intentional, although it
484    is mainly meant for capitalization problems.
485 */
486 _GI_TEST_EXTERN
487 GType regress_test_unconventional_error_get_type (void);
488 
489 _GI_TEST_EXTERN
490 GQuark regress_test_unconventional_error_quark (void);
491 
492 typedef enum
493 {
494   REGRESS_TEST_DEF_ERROR_CODE0 = 0,
495   REGRESS_TEST_DEF_ERROR_CODE1 = 1,
496   REGRESS_TEST_DEF_ERROR_CODE2 = 2
497 } RegressTestDEFError;
498 
499 _GI_TEST_EXTERN
500 GQuark regress_test_def_error_quark (void);
501 
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 */
506 typedef enum
507 {
508   REGRESS_ATEST_ERROR_CODE0 = 0,
509   REGRESS_ATEST_ERROR_CODE1 = 1,
510   REGRESS_ATEST_ERROR_CODE2 = 2
511 } RegressATestError;
512 
513 _GI_TEST_EXTERN
514 GQuark regress_atest_error_quark (void);
515 
516 
517 /* constants */
518 
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)
527 
528 typedef guint64 RegressTestTypeGUInt64;
529 #define REGRESS_GUINT64_CONSTANTA ((RegressTestTypeGUInt64) -1)
530 
531 /* structures */
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;
537 
538 struct _RegressTestStructA
539 {
540   gint some_int;
541   gint8 some_int8;
542   gdouble some_double;
543   RegressTestEnum some_enum;
544 };
545 
546 _GI_TEST_EXTERN
547 void regress_test_struct_a_clone (RegressTestStructA *a,
548 				  RegressTestStructA *a_out);
549 
550 _GI_TEST_EXTERN
551 void regress_test_struct_a_parse (RegressTestStructA *a_out, const gchar *string);
552 
553 _GI_TEST_EXTERN
554 void regress_test_array_struct_out (RegressTestStructA **arr, int *len);
555 
556 struct _RegressTestStructB
557 {
558   gint8 some_int8;
559   RegressTestStructA nested_a;
560 };
561 
562 _GI_TEST_EXTERN
563 void regress_test_struct_b_clone (RegressTestStructB *b,
564 			  RegressTestStructB *b_out);
565 
566 /* This one has a non-basic member */
567 struct _RegressTestStructC
568 {
569   gint another_int;
570   GObject *obj;
571 };
572 
573 /* This one has annotated fields */
574 /**
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):
581  * @ref_count:
582  */
583 struct _RegressTestStructD
584 {
585   RegressTestStructA **array1;
586   gpointer            *array2;
587   gpointer             field;
588   GList               *list;
589   GPtrArray           *garray;
590 };
591 
592 /* This one has an array of anonymous unions, inspired by GValue */
593 struct RegressTestStructE
594 {
595   GType some_type;
596   union {
597     gint	v_int;
598     guint	v_uint;
599     glong	v_long;
600     gulong	v_ulong;
601     gint64      v_int64;
602     guint64     v_uint64;
603     gfloat	v_float;
604     gdouble	v_double;
605     gpointer	v_pointer;
606   } some_union[2];
607 };
608 
609 /* This one has members with const or volatile modifiers. */
610 struct _RegressTestStructF
611 {
612   volatile gint   ref_count;
613   const gint     *data1;
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;
620 };
621 
622 /* plain-old-data boxed types */
623 typedef struct _RegressTestSimpleBoxedA RegressTestSimpleBoxedA;
624 typedef struct _RegressTestSimpleBoxedB RegressTestSimpleBoxedB;
625 
626 struct _RegressTestSimpleBoxedA
627 {
628   gint some_int;
629   gint8 some_int8;
630   gdouble some_double;
631   RegressTestEnum some_enum;
632 };
633 
634 /* Intentionally uses _get_gtype */
635 _GI_TEST_EXTERN
636 GType                   regress_test_simple_boxed_a_get_gtype     (void);
637 
638 _GI_TEST_EXTERN
639 RegressTestSimpleBoxedA *regress_test_simple_boxed_a_copy         (RegressTestSimpleBoxedA *a);
640 
641 _GI_TEST_EXTERN
642 gboolean                regress_test_simple_boxed_a_equals       (RegressTestSimpleBoxedA *a,
643                                                           RegressTestSimpleBoxedA *other_a);
644 
645 _GI_TEST_EXTERN
646 const RegressTestSimpleBoxedA *regress_test_simple_boxed_a_const_return (void);
647 
648 
649 struct _RegressTestSimpleBoxedB
650 {
651   gint8 some_int8;
652   RegressTestSimpleBoxedA nested_a;
653 };
654 
655 
656 _GI_TEST_EXTERN
657 GType             regress_test_simple_boxed_b_get_type (void);
658 
659 _GI_TEST_EXTERN
660 RegressTestSimpleBoxedB *regress_test_simple_boxed_b_copy     (RegressTestSimpleBoxedB *b);
661 
662 /* opaque boxed */
663 #define REGRESS_TEST_TYPE_BOXED (regress_test_boxed_get_type())
664 
665 typedef struct _RegressTestBoxed RegressTestBoxed;
666 typedef struct _RegressTestBoxedPrivate RegressTestBoxedPrivate;
667 
668 struct _RegressTestBoxed
669 {
670   gint8 some_int8;
671   RegressTestSimpleBoxedA nested_a;
672 
673   RegressTestBoxedPrivate *priv;
674 };
675 
676 _GI_TEST_EXTERN
677 GType      regress_test_boxed_get_type (void);
678 
679 _GI_TEST_EXTERN
680 RegressTestBoxed *regress_test_boxed_new      (void);
681 
682 _GI_TEST_EXTERN
683 RegressTestBoxed *regress_test_boxed_new_alternative_constructor1  (int i);
684 
685 _GI_TEST_EXTERN
686 RegressTestBoxed *regress_test_boxed_new_alternative_constructor2  (int i, int j);
687 
688 _GI_TEST_EXTERN
689 RegressTestBoxed *regress_test_boxed_new_alternative_constructor3  (char *s);
690 
691 
692 _GI_TEST_EXTERN
693 RegressTestBoxed *regress_test_boxed_copy     (RegressTestBoxed *boxed);
694 
695 _GI_TEST_EXTERN
696 gboolean   regress_test_boxed_equals   (RegressTestBoxed *boxed,
697 					RegressTestBoxed *other);
698 
699 
700 _GI_TEST_EXTERN
701 void       regress_test_boxeds_not_a_method (RegressTestBoxed *boxed);
702 
703 _GI_TEST_EXTERN
704 void       regress_test_boxeds_not_a_static (void);
705 
706 typedef struct _RegressTestBoxedB RegressTestBoxedB;
707 
708 struct _RegressTestBoxedB
709 {
710   gint8 some_int8;
711   glong some_long;
712 };
713 
714 
715 _GI_TEST_EXTERN
716 GType regress_test_boxed_b_get_type (void);
717 
718 _GI_TEST_EXTERN
719 RegressTestBoxedB *regress_test_boxed_b_new (gint8 some_int8, glong some_long);
720 
721 _GI_TEST_EXTERN
722 RegressTestBoxedB *regress_test_boxed_b_copy (RegressTestBoxedB *boxed);
723 
724 typedef struct _RegressTestBoxedC RegressTestBoxedC;
725 
726 struct _RegressTestBoxedC
727 {
728   guint refcount;
729   guint another_thing;
730 };
731 
732 _GI_TEST_EXTERN
733 GType regress_test_boxed_c_get_type (void);
734 
735 _GI_TEST_EXTERN
736 RegressTestBoxedC *regress_test_boxed_c_new (void);
737 
738 typedef struct _RegressTestBoxedD RegressTestBoxedD;
739 
740 
741 _GI_TEST_EXTERN
742 GType regress_test_boxed_d_get_type (void);
743 
744 
745 _GI_TEST_EXTERN
746 RegressTestBoxedD *regress_test_boxed_d_new (const char *a_string, int a_int);
747 
748 _GI_TEST_EXTERN
749 RegressTestBoxedD *regress_test_boxed_d_copy (RegressTestBoxedD *boxed);
750 
751 _GI_TEST_EXTERN
752 void regress_test_boxed_d_free (RegressTestBoxedD *boxed);
753 
754 
755 _GI_TEST_EXTERN
756 int regress_test_boxed_d_get_magic (RegressTestBoxedD *boxed);
757 
758 /* gobject */
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))
763 
764 typedef struct _RegressTestObj          RegressTestObj;
765 typedef struct _RegressTestObjClass     RegressTestObjClass;
766 
767 /**
768  * RegressTestObj:
769  * @bare: (allow-none):
770  */
771 struct _RegressTestObj
772 {
773   GObject parent_instance;
774 
775   GObject *bare;
776   RegressTestBoxed *boxed;
777   GHashTable *hash_table;
778   GList *list;
779   gint8 some_int8;
780   float some_float;
781   double some_double;
782   char* string;
783   GType gtype;
784   gint name_conflict;
785   GByteArray *byte_array;
786 
787   /* < private > */
788   void (*function_ptr) (void);
789 };
790 
791 typedef void (*RegressTestExternallyDefinedCallback) (RegressTestObj *obj, int someint);
792 
793 struct _RegressTestObjClass
794 {
795   GObjectClass parent_class;
796 
797   int (*matrix) (RegressTestObj *obj, const char *somestr);
798 
799   /**
800    * RegressTestObjClass::allow_none_vfunc:
801    * @two: (allow-none): Another object
802    */
803   void (*allow_none_vfunc) (RegressTestObj *obj, RegressTestObj *two);
804 
805   guint test_signal;
806   guint test_signal_with_static_scope_arg;
807 
808   RegressTestExternallyDefinedCallback complex_vfunc;
809 
810   /* Should be replaced with simple "gpointer" and not be callback */
811   void (*_regress_reserved1) (void);
812   void (*_regress_reserved2) (void);
813 };
814 
815 _GI_TEST_EXTERN
816 GType      regress_test_obj_get_type (void);
817 
818 _GI_TEST_EXTERN
819 RegressTestObj*   regress_test_obj_new (RegressTestObj *obj);
820 
821 _GI_TEST_EXTERN
822 RegressTestObj*   regress_constructor (void);
823 
824 _GI_TEST_EXTERN
825 RegressTestObj*   regress_test_obj_new_from_file (const char *x, GError **error);
826 
827 _GI_TEST_EXTERN
828 void       regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare);
829 
830 _GI_TEST_EXTERN
831 void       regress_test_obj_set_string (RegressTestObj *obj, const char *str);
832 
833 _GI_TEST_EXTERN
834 const char *regress_test_obj_get_string (RegressTestObj *obj);
835 
836 _GI_TEST_EXTERN
837 void       regress_test_obj_emit_sig_with_obj (RegressTestObj *obj);
838 
839 _GI_TEST_EXTERN
840 void       regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj);
841 
842 _GI_TEST_EXTERN
843 void       regress_test_obj_emit_sig_with_int64 (RegressTestObj *obj);
844 
845 _GI_TEST_EXTERN
846 void       regress_test_obj_emit_sig_with_uint64 (RegressTestObj *obj);
847 
848 _GI_TEST_EXTERN
849 void       regress_test_obj_emit_sig_with_array_len_prop (RegressTestObj *obj);
850 
851 _GI_TEST_EXTERN
852 void       regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj);
853 
854 _GI_TEST_EXTERN
855 void       regress_test_obj_emit_sig_with_error (RegressTestObj *self);
856 
857 _GI_TEST_EXTERN
858 void       regress_test_obj_emit_sig_with_null_error (RegressTestObj *self);
859 
860 _GI_TEST_EXTERN
861 int        regress_test_obj_instance_method (RegressTestObj *obj);
862 
863 _GI_TEST_EXTERN
864 void       regress_test_obj_instance_method_full (RegressTestObj *obj);
865 
866 _GI_TEST_EXTERN
867 double     regress_test_obj_static_method (int x);
868 
869 _GI_TEST_EXTERN
870 void       regress_forced_method (RegressTestObj *obj);
871 
872 
873 _GI_TEST_EXTERN
874 void regress_test_array_fixed_out_objects (RegressTestObj ***objs);
875 
876 #if (defined(__GNUC__) || defined(__clang__)) && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
877 # define G_GCC_STATIC static
878 #else
879 # define G_GCC_STATIC
880 #endif
881 _GI_TEST_EXTERN
882 void regress_test_array_static_in_int (int x[G_GCC_STATIC 10]);
883 
884 _GI_TEST_EXTERN
885 void regress_test_obj_torture_signature_0 (RegressTestObj    *obj,
886                                    int        x,
887                                    double     *y,
888                                    int        *z,
889                                    const char *foo,
890                                    int        *q,
891                                    guint       m);
892 
893 _GI_TEST_EXTERN
894 gboolean regress_test_obj_torture_signature_1 (RegressTestObj    *obj,
895                                        int        x,
896                                        double     *y,
897                                        int        *z,
898                                        const char *foo,
899                                        int        *q,
900                                        guint       m,
901                                        GError    **error);
902 
903 
904 _GI_TEST_EXTERN
905 gboolean regress_test_obj_skip_return_val (RegressTestObj *obj,
906                                            gint            a,
907                                            gint           *out_b,
908                                            gdouble         c,
909                                            gint           *inout_d,
910                                            gint           *out_sum,
911                                            gint            num1,
912                                            gint            num2,
913                                            GError        **error);
914 
915 
916 _GI_TEST_EXTERN
917 gboolean regress_test_obj_skip_return_val_no_out (RegressTestObj *obj,
918                                                   gint            a,
919                                                   GError        **error);
920 
921 
922 _GI_TEST_EXTERN
923 gboolean regress_test_obj_skip_param (RegressTestObj *obj,
924                                       gint            a,
925                                       gint           *out_b,
926                                       gdouble         c,
927                                       gint           *inout_d,
928                                       gint           *out_sum,
929                                       gint            num1,
930                                       gint            num2,
931                                       GError        **error);
932 
933 
934 _GI_TEST_EXTERN
935 gboolean regress_test_obj_skip_out_param (RegressTestObj *obj,
936                                           gint            a,
937                                           gint           *out_b,
938                                           gdouble         c,
939                                           gint           *inout_d,
940                                           gint           *out_sum,
941                                           gint            num1,
942                                           gint            num2,
943                                           GError        **error);
944 
945 
946 _GI_TEST_EXTERN
947 gboolean regress_test_obj_skip_inout_param (RegressTestObj *obj,
948                                             gint            a,
949                                             gint           *out_b,
950                                             gdouble         c,
951                                             gint           *inout_d,
952                                             gint           *out_sum,
953                                             gint            num1,
954                                             gint            num2,
955                                             GError        **error);
956 
957 /* virtual */
958 _GI_TEST_EXTERN
959 int        regress_test_obj_do_matrix (RegressTestObj *obj, const char *somestr);
960 
961 
962 _GI_TEST_EXTERN
963 void regress_func_obj_null_in (RegressTestObj *obj);
964 
965 _GI_TEST_EXTERN
966 void regress_test_obj_null_out (RegressTestObj **obj);
967 
968 void regress_func_obj_nullable_in (RegressTestObj *obj);
969 
970 void regress_test_obj_not_nullable_typed_gpointer_in (RegressTestObj *obj,
971                                                       gpointer        input);
972 
973 void regress_test_obj_not_nullable_element_typed_gpointer_in (RegressTestObj *obj,
974                                                               gpointer        input,
975                                                               guint           count);
976 
977 _GI_TEST_EXTERN
978 void regress_test_obj_name_conflict (RegressTestObj *obj);
979 
980 /* inheritance */
981 #define REGRESS_TEST_TYPE_SUB_OBJ           (regress_test_sub_obj_get_type ())
982 #define REGRESS_TEST_SUB_OBJECT(object)     (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObj))
983 #define REGRESS_TEST_IS_SUB_OBJECT(object)  (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_SUB_OBJ))
984 #define REGRESS_TEST_SUB_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObjClass))
985 
986 typedef struct _RegressTestSubObj         RegressTestSubObj;
987 typedef struct _RegressTestSubObjClass    RegressTestSubObjClass;
988 
989 struct _RegressTestSubObj
990 {
991   RegressTestObj parent_instance;
992   /*< private >*/
993   gint number;
994   gboolean boolean;
995 };
996 
997 struct _RegressTestSubObjClass
998 {
999   RegressTestObjClass parent_class;
1000 };
1001 
1002 
1003 _GI_TEST_EXTERN
1004 GType       regress_test_sub_obj_get_type (void);
1005 
1006 _GI_TEST_EXTERN
1007 RegressTestObj* regress_test_sub_obj_new (void);
1008 
1009 _GI_TEST_EXTERN
1010 void        regress_test_sub_obj_unset_bare (RegressTestSubObj *obj);
1011 
1012 _GI_TEST_EXTERN
1013 int         regress_test_sub_obj_instance_method (RegressTestSubObj *obj);
1014 
1015 /* fundamental object */
1016 #define REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT            (regress_test_fundamental_object_get_type())
1017 #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
1018 #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
1019 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass))
1020 #define REGRESS_TEST_FUNDAMENTAL_OBJECT(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObject))
1021 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass))
1022 #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST(obj)       ((RegressTestFundamentalObject*)(obj))
1023 
1024 typedef struct _RegressTestFundamentalObject RegressTestFundamentalObject;
1025 typedef struct _RegressTestFundamentalObjectClass RegressTestFundamentalObjectClass;
1026 /**
1027  * RegressTestFundamentalObjectCopyFunction:
1028  *
1029  * Returns: (transfer full):
1030  */
1031 typedef RegressTestFundamentalObject * (*RegressTestFundamentalObjectCopyFunction) (const RegressTestFundamentalObject *obj);
1032 typedef void (*RegressTestFundamentalObjectFinalizeFunction) (RegressTestFundamentalObject *obj);
1033 
1034 
1035 struct _RegressTestFundamentalObject {
1036   GTypeInstance instance;
1037   gint refcount;
1038   guint flags;
1039 };
1040 
1041 struct _RegressTestFundamentalObjectClass {
1042   GTypeClass type_class;
1043 
1044   RegressTestFundamentalObjectCopyFunction copy;
1045   RegressTestFundamentalObjectFinalizeFunction finalize;
1046 };
1047 
1048 _GI_TEST_EXTERN
1049 GType 		       regress_test_fundamental_object_get_type (void);
1050 
1051 _GI_TEST_EXTERN
1052 RegressTestFundamentalObject* regress_test_fundamental_object_ref      (RegressTestFundamentalObject *fundamental_object);
1053 
1054 _GI_TEST_EXTERN
1055 void 		       regress_test_fundamental_object_unref 	(RegressTestFundamentalObject *fundamental_object);
1056 
1057 #define REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT(value)  (G_VALUE_HOLDS(value, REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT))
1058 
1059 _GI_TEST_EXTERN
1060 void 		       regress_test_value_set_fundamental_object (GValue *value, RegressTestFundamentalObject *fundamental_object);
1061 
1062 _GI_TEST_EXTERN
1063 RegressTestFundamentalObject* regress_test_value_get_fundamental_object (const GValue *value);
1064 
1065 typedef struct _RegressTestFundamentalSubObject RegressTestFundamentalSubObject;
1066 typedef struct _RegressTestFundamentalSubObjectClass RegressTestFundamentalSubObjectClass;
1067 
1068 struct _RegressTestFundamentalSubObject
1069 {
1070   RegressTestFundamentalObject fundamental_object;
1071   char *data;
1072 };
1073 
1074 struct _RegressTestFundamentalSubObjectClass {
1075   RegressTestFundamentalObjectClass fundamental_object_class;
1076 };
1077 
1078 
1079 _GI_TEST_EXTERN
1080 GType regress_test_fundamental_sub_object_get_type(void);
1081 
1082 
1083 _GI_TEST_EXTERN
1084 RegressTestFundamentalSubObject *
1085 regress_test_fundamental_sub_object_new (const char *data);
1086 
1087 _GI_TEST_EXTERN
1088 RegressTestFundamentalObject *
1089 regress_test_create_fundamental_hidden_class_instance (void);
1090 
1091 /* callback */
1092 typedef void (*RegressTestSimpleCallback) (void);
1093 typedef void RegressTestNoPtrCallback (void);
1094 typedef int (*RegressTestCallback) (void);
1095 typedef int (*RegressTestCallbackUserData) (gpointer user_data);
1096 /**
1097  * RegressTestCallbackHashtable:
1098  * @data: (element-type utf8 gint): a hash table; will be modified
1099  */
1100 typedef void (*RegressTestCallbackHashtable) (GHashTable *data);
1101 typedef void (*RegressTestCallbackGError) (const GError *error);
1102 /**
1103  * RegressTestCallbackOwnedGError:
1104  * @error: (transfer full): GError instance; must be freed by the callback
1105  */
1106 typedef void (*RegressTestCallbackOwnedGError) (GError *error);
1107 /**
1108  * RegressTestCallbackFull:
1109  * @foo: the investment rate
1110  * @bar: how much money
1111  * @path: (type filename): Path to file
1112  */
1113 typedef int (*RegressTestCallbackFull) (int foo, double bar, char *path);
1114 /**
1115  * RegressTestCallbackReturnFull:
1116  * Return value: (transfer full):
1117  */
1118 typedef RegressTestObj *(*RegressTestCallbackReturnFull) (void);
1119 /**
1120  * RegressTestCallbackArray:
1121  * @one: (array length=one_length):
1122  * @one_length:
1123  * @two: (array length=two_length) (element-type utf8):
1124  * @two_length:
1125  */
1126 typedef int (*RegressTestCallbackArray) (int *one, gsize one_length, const char** two, int two_length);
1127 /**
1128  * RegressTestCallbackArrayInOut:
1129  * @ints: (inout) (array length=length):
1130  * @length: (inout):
1131  */
1132 typedef void (* RegressTestCallbackArrayInOut) (int **ints, int *length);
1133 
1134 _GI_TEST_EXTERN
1135 void regress_test_simple_callback (RegressTestSimpleCallback callback);
1136 
1137 _GI_TEST_EXTERN
1138 void regress_test_noptr_callback (RegressTestNoPtrCallback callback);
1139 
1140 _GI_TEST_EXTERN
1141 int regress_test_callback (RegressTestCallback callback);
1142 
1143 _GI_TEST_EXTERN
1144 int regress_test_multi_callback (RegressTestCallback callback);
1145 
1146 _GI_TEST_EXTERN
1147 int regress_test_array_callback (RegressTestCallbackArray callback);
1148 
1149 _GI_TEST_EXTERN
1150 int regress_test_array_inout_callback (RegressTestCallbackArrayInOut callback);
1151 
1152 _GI_TEST_EXTERN
1153 int regress_test_callback_user_data (RegressTestCallbackUserData callback,
1154                              gpointer user_data);
1155 
1156 _GI_TEST_EXTERN
1157 void regress_test_callback_return_full (RegressTestCallbackReturnFull callback);
1158 
1159 _GI_TEST_EXTERN
1160 int regress_test_callback_destroy_notify (RegressTestCallbackUserData callback,
1161                                   gpointer user_data,
1162                                   GDestroyNotify notify);
1163 
1164 _GI_TEST_EXTERN
1165 int regress_test_callback_destroy_notify_no_user_data (RegressTestCallbackUserData callback,
1166                                   GDestroyNotify notify);
1167 
1168 _GI_TEST_EXTERN
1169 int regress_test_callback_thaw_notifications (void);
1170 
1171 
1172 _GI_TEST_EXTERN
1173 void regress_test_callback_async (RegressTestCallbackUserData callback, gpointer user_data);
1174 
1175 _GI_TEST_EXTERN
1176 int regress_test_callback_thaw_async (void);
1177 
1178 
1179 _GI_TEST_EXTERN
1180 void regress_test_async_ready_callback (GAsyncReadyCallback callback);
1181 
1182 
1183 _GI_TEST_EXTERN
1184 void regress_test_obj_instance_method_callback (RegressTestObj *obj, RegressTestCallback callback);
1185 
1186 _GI_TEST_EXTERN
1187 void regress_test_obj_static_method_callback (RegressTestCallback callback);
1188 
1189 _GI_TEST_EXTERN
1190 RegressTestObj *regress_test_obj_new_callback (RegressTestCallbackUserData callback,
1191                                 gpointer user_data,
1192                                 GDestroyNotify notify);
1193 
1194 _GI_TEST_EXTERN
1195 void regress_test_hash_table_callback (GHashTable *data, RegressTestCallbackHashtable callback);
1196 
1197 _GI_TEST_EXTERN
1198 void regress_test_gerror_callback (RegressTestCallbackGError callback);
1199 
1200 _GI_TEST_EXTERN
1201 void regress_test_null_gerror_callback (RegressTestCallbackGError callback);
1202 
1203 _GI_TEST_EXTERN
1204 void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback);
1205 
1206 
1207 _GI_TEST_EXTERN
1208 void regress_test_skip_unannotated_callback (RegressTestCallback callback);
1209 
1210 typedef struct _RegressTestInterface RegressTestInterface;
1211 
1212 /* interface */
1213 #define REGRESS_TEST_TYPE_INTERFACE              (regress_test_interface_get_type ())
1214 #define REGRESS_TEST_INTERFACE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterface))
1215 #define REGRESS_TEST_IS_INTERFACE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_INTERFACE))
1216 #define REGRESS_TEST_INTERFACE_GET_IFACE(obj)    (G_TYPE_INSTANCE_GET_INTERFACE ((obj), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterfaceIface))
1217 
1218 typedef struct _RegressTestInterfaceIface RegressTestInterfaceIface;
1219 
1220 struct _RegressTestInterfaceIface {
1221     GTypeInterface base_iface;
1222 };
1223 
1224 _GI_TEST_EXTERN
1225 GType regress_test_interface_get_type (void) G_GNUC_CONST;
1226 
1227 _GI_TEST_EXTERN
1228 void regress_test_interface_emit_signal (RegressTestInterface *self);
1229 
1230 /* gobject with non-standard prefix */
1231 #define REGRESS_TEST_TYPE_WI_802_1X              (regress_test_wi_802_1x_get_type ())
1232 #define REGRESS_TEST_WI_802_1X(object)        (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021x))
1233 #define REGRESS_TEST_IS_WI_802_1X(object)     (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_WI_802_1X))
1234 #define REGRESS_TEST_WI_802_1X_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021xClass))
1235 
1236 typedef struct
1237 {
1238   GObject parent_instance;
1239 
1240   gboolean testbool;
1241 } RegressTestWi8021x;
1242 
1243 typedef struct
1244 {
1245   GObjectClass parent_class;
1246 } RegressTestWi8021xClass;
1247 
1248 
1249 _GI_TEST_EXTERN
1250 GType        regress_test_wi_802_1x_get_type (void);
1251 
1252 _GI_TEST_EXTERN
1253 RegressTestWi8021x* regress_test_wi_802_1x_new (void);
1254 
1255 _GI_TEST_EXTERN
1256 gboolean     regress_test_wi_802_1x_get_testbool (RegressTestWi8021x *obj);
1257 
1258 _GI_TEST_EXTERN
1259 void         regress_test_wi_802_1x_set_testbool (RegressTestWi8021x *obj, gboolean v);
1260 
1261 _GI_TEST_EXTERN
1262 int          regress_test_wi_802_1x_static_method (int x);
1263 
1264 /* floating gobject */
1265 #define REGRESS_TEST_TYPE_FLOATING           (regress_test_floating_get_type ())
1266 #define REGRESS_TEST_FLOATING(object)        (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_FLOATING, RegressTestFloating))
1267 #define REGRESS_TEST_IS_FLOATING(object)     (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_FLOATING))
1268 #define REGRESS_TEST_FLOATING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FLOATING, RegressTestFloatingClass))
1269 
1270 typedef struct
1271 {
1272   GInitiallyUnowned parent_instance;
1273 } RegressTestFloating;
1274 
1275 typedef struct
1276 {
1277   GInitiallyUnownedClass parent_class;
1278 } RegressTestFloatingClass;
1279 
1280 
1281 _GI_TEST_EXTERN
1282 GType        regress_test_floating_get_type (void);
1283 
1284 _GI_TEST_EXTERN
1285 RegressTestFloating* regress_test_floating_new (void);
1286 
1287 /* Function signature torture tests */
1288 
1289 _GI_TEST_EXTERN
1290 void regress_test_torture_signature_0 (int        x,
1291                                double     *y,
1292                                int        *z,
1293                                const char *foo,
1294                                int        *q,
1295                                guint       m);
1296 
1297 _GI_TEST_EXTERN
1298 gboolean regress_test_torture_signature_1 (int        x,
1299                                    double     *y,
1300                                    int        *z,
1301                                    const char *foo,
1302                                    int        *q,
1303                                    guint       m,
1304                                    GError    **error);
1305 
1306 _GI_TEST_EXTERN
1307 void regress_test_torture_signature_2 (int                  x,
1308 				       RegressTestCallbackUserData  callback,
1309 				       gpointer              user_data,
1310 				       GDestroyNotify        notify,
1311 				       double               *y,
1312 				       int                  *z,
1313 				       const char           *foo,
1314 				       int                  *q,
1315 				       guint                 m);
1316 
1317 
1318 _GI_TEST_EXTERN
1319 GValue *regress_test_date_in_gvalue (void);
1320 
1321 _GI_TEST_EXTERN
1322 GValue *regress_test_strv_in_gvalue (void);
1323 
1324 _GI_TEST_EXTERN
1325 GValue *regress_test_null_strv_in_gvalue (void);
1326 
1327 
1328 _GI_TEST_EXTERN
1329 GObject * _regress_this_is_a_private_symbol (void);
1330 
1331 
1332 _GI_TEST_EXTERN
1333 void regress_test_multiline_doc_comments (void);
1334 
1335 _GI_TEST_EXTERN
1336 void regress_test_nested_parameter (int a);
1337 
1338 /**
1339  * RegressSkippedStructure: (skip)
1340  *
1341  * This should be skipped, and moreover, all function which
1342  * use it should be.
1343  */
1344 typedef struct
1345 {
1346   int x;
1347   double v;
1348 } RegressSkippedStructure;
1349 
1350 
1351 _GI_TEST_EXTERN
1352 void regress_random_function_with_skipped_structure (int x,
1353 						     RegressSkippedStructure *foo,
1354 						     double v);
1355 
1356 /**
1357  * RegressIntset:
1358  *
1359  * Like telepathy-glib's TpIntset.
1360  *
1361  */
1362 typedef struct _RegressIntset RegressIntset;
1363 
1364 /**
1365  * RegressIntsetAlias: (skip)
1366  *
1367  * Compatibility typedef, like telepathy-glib's TpIntSet
1368  *
1369  */
1370 typedef RegressIntset RegressIntsetAlias;
1371 
1372 /**
1373  * RegressPtrArrayAlias:
1374  *
1375  * Typedef'd GPtrArray for some reason
1376  */
1377 typedef GPtrArray RegressPtrArrayAlias;
1378 
1379 
1380 _GI_TEST_EXTERN
1381 void regress_introspectable_via_alias (RegressPtrArrayAlias *data);
1382 
1383 /**
1384  * RegressVaListAlias:
1385  *
1386  * Typedef'd va_list for additional reasons
1387  */
1388 typedef va_list RegressVaListAlias;
1389 
1390 
1391 _GI_TEST_EXTERN
1392 void regress_not_introspectable_via_alias (RegressVaListAlias ok);
1393 
1394 /**
1395  * RegressAliasedTestBoxed:
1396  *
1397  * Typedef TestBoxed to test caller-allocates correctness
1398  */
1399 typedef RegressTestBoxed RegressAliasedTestBoxed;
1400 
1401 
1402 _GI_TEST_EXTERN
1403 void regress_aliased_caller_alloc (RegressAliasedTestBoxed *boxed);
1404 
1405 /* private testing */
1406 
1407 typedef struct {
1408   gint this_is_public_before;
1409   /* < private > */
1410   gint this_is_private;
1411   /* < public > */
1412   gint this_is_public_after;
1413 } RegressTestPrivateStruct;
1414 
1415 typedef enum {
1416   REGRESS_TEST_PUBLIC_ENUM_BEFORE = 1 << 0,
1417   /* <private> */
1418   REGRESS_TEST_PRIVATE_ENUM       = 1 << 1,
1419   /* <public> */
1420   REGRESS_TEST_PUBLIC_ENUM_AFTER  = 1 << 2,
1421 } RegressTestPrivateEnum;
1422 
1423 typedef struct {
1424   gint just_int;
1425   gint array[10];
1426 } RegressTestStructFixedArray;
1427 
1428 
1429 _GI_TEST_EXTERN
1430 void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str);
1431 
1432 typedef struct {
1433   gchar name[32];
1434 } RegressLikeXklConfigItem;
1435 
1436 
1437 _GI_TEST_EXTERN
1438 void regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem *self,
1439                                             char const *name);
1440 
1441 #define REGRESS_UTF8_CONSTANT "const \xe2\x99\xa5 utf8"
1442 
1443 #ifdef __GNUC__
1444 #define REGRESS_TEST_GNUC_EXTENSION_STMT(foo) (G_GNUC_EXTENSION ({ int x[10]; x[5] = 42; x[5]; }))
1445 #endif
1446 
1447 /* https://bugzilla.gnome.org/show_bug.cgi?id=662888 */
1448 #define REGRESS_LONG_STRING_CONSTANT \
1449 	"TYPE,VALUE,ENCODING,CHARSET,LANGUAGE,DOM,INTL,POSTAL,PARCEL," \
1450 	"HOME,WORK,PREF,VOICE,FAX,MSG,CELL,PAGER,BBS,MODEM,CAR,ISDN,VIDEO," \
1451 	"AOL,APPLELINK,ATTMAIL,CIS,EWORLD,INTERNET,IBMMAIL,MCIMAIL," \
1452 	"POWERSHARE,PRODIGY,TLX,X400,GIF,CGM,WMF,BMP,MET,PMB,DIB,PICT,TIFF," \
1453 	"PDF,PS,JPEG,QTIME,MPEG,MPEG2,AVI,WAVE,AIFF,PCM,X509,PGP"
1454 
1455 _GI_TEST_EXTERN
1456 void regress_has_parameter_named_attrs (int        foo,
1457                                         gpointer   attributes);
1458 
1459 typedef struct {
1460   int dummy;
1461   struct {
1462     const char *name;
1463     guint x;
1464   } attributes[32];
1465 
1466   double dummy2;
1467 } RegressLikeGnomeKeyringPasswordSchema;
1468 
1469 /* Ensure we ignore symbols that start with _; in particular we don't
1470  * want to issue a namespace warning.
1471  */
1472 #define _DONTSCANTHIS 1
1473 
1474 /* https://bugzilla.gnome.org/show_bug.cgi?id=685022 */
1475 #define REGRESS_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000))
1476 #define REGRESS_MAXUINT64 (G_GINT64_CONSTANT(0xffffffffffffffffU))
1477 
1478 /* https://bugzilla.gnome.org/show_bug.cgi?id=698367 */
1479 #ifndef __GI_SCANNER__
1480 #define REGRESS_DONTSCANTHIS 1
1481 #else
1482 #define REGRESS_GI_SCANNER_ELSE 3
1483 #endif
1484 #ifndef BLAH
1485 #ifdef __GI_SCANNER__
1486 #define REGRESS_GI_SCANNER_IFDEF 3
1487 #endif
1488 #endif
1489 
1490 /* This struct is one pattern by which padding can be consumed, if
1491  * you're willing to take a hard dependency on anonymous unions. */
1492 typedef struct {
1493   int x;
1494 
1495   union {
1496     RegressLikeGnomeKeyringPasswordSchema *a[2];
1497 
1498     guint padding[4];
1499   };
1500 } RegressAnAnonymousUnion;
1501 
1502 typedef struct {
1503   int x;
1504 
1505   union {
1506     struct {
1507       RegressLikeGnomeKeyringPasswordSchema *a;
1508       RegressLikeXklConfigItem *b;
1509     };
1510 
1511     guint padding[4];
1512   };
1513 } RegressAnonymousUnionAndStruct;
1514 
1515 GVariant *
1516 regress_get_variant (void);
1517 
1518 typedef struct _RegressTestReferenceCounters RegressTestReferenceCounters;
1519 
1520 struct _RegressTestReferenceCounters {
1521   grefcount       refcount;
1522   gatomicrefcount atomicrefcount;
1523 };
1524 
1525 _GI_TEST_EXTERN
1526 void regress_test_array_struct_out_none (RegressTestStructA **arr, gsize *len);
1527 
1528 _GI_TEST_EXTERN
1529 void regress_test_array_struct_out_container (RegressTestStructA **arr, gsize *len);
1530 
1531 _GI_TEST_EXTERN
1532 void regress_test_array_struct_out_full_fixed (RegressTestStructA **arr);
1533 
1534 _GI_TEST_EXTERN
1535 void regress_test_array_struct_out_caller_alloc (RegressTestStructA *arr, gsize len);
1536 
1537 _GI_TEST_EXTERN
1538 void regress_test_array_struct_in_full (RegressTestStructA *arr, gsize len);
1539 
1540 _GI_TEST_EXTERN
1541 void regress_test_array_struct_in_none (RegressTestStructA *arr, gsize len);
1542 
1543 #endif /* __GITESTTYPES_H__ */
1544