Imported Upstream version 1.35.9
[platform/upstream/gobject-introspection.git] / tests / gimarshallingtests.h
1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
2  * vim: tabstop=4 shiftwidth=4 expandtab
3  */
4
5 #include <glib-object.h>
6
7 #ifndef __GI_MARSHALLING_TESTS_H__
8 #define __GI_MARSHALLING_TESTS_H__
9
10 typedef struct _GIMarshallingTestsSimpleStruct GIMarshallingTestsSimpleStruct;
11 typedef struct _GIMarshallingTestsBoxedStruct GIMarshallingTestsBoxedStruct;
12
13 /* Constants */
14
15 #define GI_MARSHALLING_TESTS_CONSTANT_NUMBER 42
16 #define GI_MARSHALLING_TESTS_CONSTANT_UTF8   "const \xe2\x99\xa5 utf8"
17
18
19 /* Booleans */
20
21 gboolean gi_marshalling_tests_boolean_return_true (void);
22 gboolean gi_marshalling_tests_boolean_return_false (void);
23
24 void gi_marshalling_tests_boolean_in_true (gboolean v);
25 void gi_marshalling_tests_boolean_in_false (gboolean v);
26
27 void gi_marshalling_tests_boolean_out_true (gboolean *v);
28 void gi_marshalling_tests_boolean_out_false (gboolean *v);
29
30 void gi_marshalling_tests_boolean_inout_true_false (gboolean *v);
31 void gi_marshalling_tests_boolean_inout_false_true (gboolean *v);
32
33
34 /* Integers */
35
36 gint8 gi_marshalling_tests_int8_return_max (void);
37 gint8 gi_marshalling_tests_int8_return_min (void);
38
39 void gi_marshalling_tests_int8_in_max (gint8 v);
40 void gi_marshalling_tests_int8_in_min (gint8 v);
41
42 void gi_marshalling_tests_int8_out_max (gint8 *v);
43 void gi_marshalling_tests_int8_out_min (gint8 *v);
44
45 void gi_marshalling_tests_int8_inout_max_min (gint8 *v);
46 void gi_marshalling_tests_int8_inout_min_max (gint8 *v);
47
48
49 guint8 gi_marshalling_tests_uint8_return (void);
50
51 void gi_marshalling_tests_uint8_in (guint8 v);
52
53 void gi_marshalling_tests_uint8_out (guint8 *v);
54 void gi_marshalling_tests_uint8_inout (guint8 *v);
55
56
57 gint16 gi_marshalling_tests_int16_return_max (void);
58 gint16 gi_marshalling_tests_int16_return_min (void);
59
60 void gi_marshalling_tests_int16_in_max (gint16 v);
61 void gi_marshalling_tests_int16_in_min (gint16 v);
62
63 void gi_marshalling_tests_int16_out_max (gint16 *v);
64 void gi_marshalling_tests_int16_out_min (gint16 *v);
65
66 void gi_marshalling_tests_int16_inout_max_min (gint16 *v);
67 void gi_marshalling_tests_int16_inout_min_max (gint16 *v);
68
69
70 guint16 gi_marshalling_tests_uint16_return (void);
71
72 void gi_marshalling_tests_uint16_in (guint16 v);
73
74 void gi_marshalling_tests_uint16_out (guint16 *v);
75 void gi_marshalling_tests_uint16_inout (guint16 *v);
76
77
78 gint32 gi_marshalling_tests_int32_return_max (void);
79 gint32 gi_marshalling_tests_int32_return_min (void);
80
81 void gi_marshalling_tests_int32_in_max (gint32 v);
82 void gi_marshalling_tests_int32_in_min (gint32 v);
83
84 void gi_marshalling_tests_int32_out_max (gint32 *v);
85 void gi_marshalling_tests_int32_out_min (gint32 *v);
86
87 void gi_marshalling_tests_int32_inout_max_min (gint32 *v);
88 void gi_marshalling_tests_int32_inout_min_max (gint32 *v);
89
90
91 guint32 gi_marshalling_tests_uint32_return (void);
92
93 void gi_marshalling_tests_uint32_in (guint32 v);
94
95 void gi_marshalling_tests_uint32_out (guint32 *v);
96 void gi_marshalling_tests_uint32_inout (guint32 *v);
97
98
99 gint64 gi_marshalling_tests_int64_return_max (void);
100 gint64 gi_marshalling_tests_int64_return_min (void);
101
102 void gi_marshalling_tests_int64_in_max (gint64 v);
103 void gi_marshalling_tests_int64_in_min (gint64 v);
104
105 void gi_marshalling_tests_int64_out_max (gint64 *v);
106 void gi_marshalling_tests_int64_out_min (gint64 *v);
107
108 void gi_marshalling_tests_int64_inout_max_min (gint64 *v);
109 void gi_marshalling_tests_int64_inout_min_max (gint64 *v);
110
111
112 guint64 gi_marshalling_tests_uint64_return (void);
113
114 void gi_marshalling_tests_uint64_in (guint64 v);
115
116 void gi_marshalling_tests_uint64_out (guint64 *v);
117 void gi_marshalling_tests_uint64_inout (guint64 *v);
118
119
120 gshort gi_marshalling_tests_short_return_max (void);
121 gshort gi_marshalling_tests_short_return_min (void);
122
123 void gi_marshalling_tests_short_in_max (gshort short_);
124 void gi_marshalling_tests_short_in_min (gshort short_);
125
126 void gi_marshalling_tests_short_out_max (gshort *short_);
127 void gi_marshalling_tests_short_out_min (gshort *short_);
128
129 void gi_marshalling_tests_short_inout_max_min (gshort *short_);
130 void gi_marshalling_tests_short_inout_min_max (gshort *short_);
131
132
133 gushort gi_marshalling_tests_ushort_return (void);
134
135 void gi_marshalling_tests_ushort_in (gushort ushort_);
136
137 void gi_marshalling_tests_ushort_out (gushort *ushort_);
138 void gi_marshalling_tests_ushort_inout (gushort *ushort_);
139
140
141 gint gi_marshalling_tests_int_return_max (void);
142 gint gi_marshalling_tests_int_return_min (void);
143
144 void gi_marshalling_tests_int_in_max (gint int_);
145 void gi_marshalling_tests_int_in_min (gint int_);
146
147 void gi_marshalling_tests_int_out_max (gint *int_);
148 void gi_marshalling_tests_int_out_min (gint *int_);
149
150 void gi_marshalling_tests_int_inout_max_min (gint *int_);
151 void gi_marshalling_tests_int_inout_min_max (gint *int_);
152
153
154 guint gi_marshalling_tests_uint_return (void);
155
156 void gi_marshalling_tests_uint_in (guint uint_);
157
158 void gi_marshalling_tests_uint_out (guint *uint_);
159 void gi_marshalling_tests_uint_inout (guint *uint_);
160
161
162 glong gi_marshalling_tests_long_return_max (void);
163 glong gi_marshalling_tests_long_return_min (void);
164
165 void gi_marshalling_tests_long_in_max (glong long_);
166 void gi_marshalling_tests_long_in_min (glong long_);
167
168 void gi_marshalling_tests_long_out_max (glong *long_);
169 void gi_marshalling_tests_long_out_min (glong *long_);
170
171 void gi_marshalling_tests_long_inout_max_min (glong *long_);
172 void gi_marshalling_tests_long_inout_min_max (glong *long_);
173
174
175 gulong gi_marshalling_tests_ulong_return (void);
176
177 void gi_marshalling_tests_ulong_in (gulong ulong_);
178
179 void gi_marshalling_tests_ulong_out (gulong *ulong_);
180 void gi_marshalling_tests_ulong_inout (gulong *ulong_);
181
182
183 gssize gi_marshalling_tests_ssize_return_max (void);
184 gssize gi_marshalling_tests_ssize_return_min (void);
185
186 void gi_marshalling_tests_ssize_in_max (gssize ssize);
187 void gi_marshalling_tests_ssize_in_min (gssize ssize);
188
189 void gi_marshalling_tests_ssize_out_max (gssize *ssize);
190 void gi_marshalling_tests_ssize_out_min (gssize *ssize);
191
192 void gi_marshalling_tests_ssize_inout_max_min (gssize *ssize);
193 void gi_marshalling_tests_ssize_inout_min_max (gssize *ssize);
194
195
196 gsize gi_marshalling_tests_size_return (void);
197
198 void gi_marshalling_tests_size_in (gsize size);
199
200 void gi_marshalling_tests_size_out (gsize *size);
201 void gi_marshalling_tests_size_inout (gsize *size);
202
203
204 /* Floating-point */
205
206 gfloat gi_marshalling_tests_float_return (void);
207
208 void gi_marshalling_tests_float_in (gfloat v);
209
210 void gi_marshalling_tests_float_out (gfloat *v);
211
212 void gi_marshalling_tests_float_inout (gfloat *v);
213
214
215 gdouble gi_marshalling_tests_double_return (void);
216
217 void gi_marshalling_tests_double_in (gdouble v);
218
219 void gi_marshalling_tests_double_out (gdouble *v);
220
221 void gi_marshalling_tests_double_inout (gdouble *v);
222
223
224 /* Timestamps */
225
226 time_t gi_marshalling_tests_time_t_return (void);
227
228 void gi_marshalling_tests_time_t_in (time_t v);
229
230 void gi_marshalling_tests_time_t_out (time_t *v);
231
232 void gi_marshalling_tests_time_t_inout (time_t *v);
233
234
235 /* GType */
236
237 GType gi_marshalling_tests_gtype_return (void);
238
239 GType gi_marshalling_tests_gtype_string_return (void);
240
241 void gi_marshalling_tests_gtype_in (GType gtype);
242
243 void gi_marshalling_tests_gtype_string_in (GType gtype);
244
245 void gi_marshalling_tests_gtype_out (GType *gtype);
246
247 void gi_marshalling_tests_gtype_string_out (GType *gtype);
248
249 void gi_marshalling_tests_gtype_inout (GType *gtype);
250
251
252 /* UTF-8 */
253
254 const gchar *gi_marshalling_tests_utf8_none_return (void);
255 gchar *gi_marshalling_tests_utf8_full_return (void);
256
257 void gi_marshalling_tests_utf8_none_in (const gchar *utf8);
258 void gi_marshalling_tests_utf8_full_in (gchar *utf8);
259
260 void gi_marshalling_tests_utf8_none_out (gchar **utf8);
261 void gi_marshalling_tests_utf8_full_out (gchar **utf8);
262
263 void gi_marshalling_tests_utf8_dangling_out (gchar **utf8);
264
265 void gi_marshalling_tests_utf8_none_inout (gchar **utf8);
266 void gi_marshalling_tests_utf8_full_inout (gchar **utf8);
267
268 GSList *gi_marshalling_tests_filename_list_return (void);
269
270 void gi_marshalling_tests_utf8_as_uint8array_in (const guint8 *array,
271                                                  gsize         len);
272
273
274 /* Enum */
275
276 typedef enum
277 {
278   GI_MARSHALLING_TESTS_ENUM_VALUE1,
279   GI_MARSHALLING_TESTS_ENUM_VALUE2,
280   GI_MARSHALLING_TESTS_ENUM_VALUE3 = 42
281 } GIMarshallingTestsEnum;
282
283 typedef enum
284 {
285   GI_MARSHALLING_TESTS_SECOND_ENUM_SECONDVALUE1,
286   GI_MARSHALLING_TESTS_SECOND_ENUM_SECONDVALUE2,
287 } GIMarshallingTestsSecondEnum;
288
289 GIMarshallingTestsEnum gi_marshalling_tests_enum_returnv (void);
290
291 void gi_marshalling_tests_enum_in (GIMarshallingTestsEnum v);
292
293 void gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *v);
294
295 void gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *v);
296
297
298 /* GEnum */
299
300 typedef enum
301 {
302   GI_MARSHALLING_TESTS_GENUM_VALUE1,
303   GI_MARSHALLING_TESTS_GENUM_VALUE2,
304   GI_MARSHALLING_TESTS_GENUM_VALUE3 = 42
305 } GIMarshallingTestsGEnum;
306
307 GType gi_marshalling_tests_genum_get_type (void) G_GNUC_CONST;
308 #define GI_MARSHALLING_TESTS_TYPE_GENUM (gi_marshalling_tests_genum_get_type ())
309
310 GIMarshallingTestsGEnum gi_marshalling_tests_genum_returnv (void);
311
312 void gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum v);
313
314 void gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *v);
315
316 void gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *v);
317
318
319 /* GFlags */
320
321 typedef enum
322 {
323   GI_MARSHALLING_TESTS_FLAGS_VALUE1 = 1 << 0,
324   GI_MARSHALLING_TESTS_FLAGS_VALUE2 = 1 << 1,
325   GI_MARSHALLING_TESTS_FLAGS_VALUE3 = 1 << 2,
326   GI_MARSHALLING_TESTS_FLAGS_MASK = GI_MARSHALLING_TESTS_FLAGS_VALUE1 |
327                                     GI_MARSHALLING_TESTS_FLAGS_VALUE2,
328   GI_MARSHALLING_TESTS_FLAGS_MASK2 = GI_MARSHALLING_TESTS_FLAGS_MASK
329 } GIMarshallingTestsFlags;
330
331 GType gi_marshalling_tests_flags_get_type (void) G_GNUC_CONST;
332 #define GI_MARSHALLING_TESTS_TYPE_FLAGS (gi_marshalling_tests_flags_get_type ())
333
334 GIMarshallingTestsFlags gi_marshalling_tests_flags_returnv (void);
335
336 void gi_marshalling_tests_flags_in (GIMarshallingTestsFlags v);
337 void gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags v);
338
339 void gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *v);
340
341 void gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *v);
342
343 /* Flags with no GType */
344
345 typedef enum
346 {
347   GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1 = 1 << 0,
348   GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2 = 1 << 1,
349   GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE3 = 1 << 2,
350   GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_MASK = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1 |
351                                             GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2,
352   GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_MASK2 = GI_MARSHALLING_TESTS_FLAGS_MASK
353 } GIMarshallingTestsNoTypeFlags;
354
355 GIMarshallingTestsNoTypeFlags gi_marshalling_tests_no_type_flags_returnv (void);
356
357 void gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags v);
358 void gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags v);
359
360 void gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *v);
361
362 void gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *v);
363
364 /* Arrays */
365
366 gboolean gi_marshalling_tests_init_function (gint *n_args, char ***argv);
367
368 /* Fixed-size */
369 const gint *gi_marshalling_tests_array_fixed_int_return (void);
370 const gshort *gi_marshalling_tests_array_fixed_short_return (void);
371
372 void gi_marshalling_tests_array_fixed_int_in (const gint *ints);
373 void gi_marshalling_tests_array_fixed_short_in (const gshort *shorts);
374
375 void gi_marshalling_tests_array_fixed_out (gint **ints);
376
377 void gi_marshalling_tests_array_fixed_out_struct (GIMarshallingTestsSimpleStruct **structs);
378
379 void gi_marshalling_tests_array_fixed_inout (gint **ints);
380
381 /* Variable-size */
382
383 const gint *gi_marshalling_tests_array_return (gint *length);
384 const gint *gi_marshalling_tests_array_return_etc (gint first, gint *length, gint last, gint *sum);
385
386 void gi_marshalling_tests_array_in (const gint *ints, gint length);
387 void gi_marshalling_tests_array_in_len_before (gint length, const gint *ints);
388 void gi_marshalling_tests_array_in_len_zero_terminated (const gint *ints, gint length);
389 void gi_marshalling_tests_array_string_in (const gchar **strings, gint length);
390 void gi_marshalling_tests_array_uint8_in (const guint8 *chars, gint length);
391 void gi_marshalling_tests_array_struct_in (GIMarshallingTestsBoxedStruct **structs, gint length);
392 void gi_marshalling_tests_array_struct_value_in (GIMarshallingTestsBoxedStruct *structs, gint length);
393 void gi_marshalling_tests_array_struct_take_in (GIMarshallingTestsBoxedStruct **structs, gint length);
394 void gi_marshalling_tests_array_simple_struct_in (GIMarshallingTestsSimpleStruct *structs, gint length);
395 void gi_marshalling_tests_multi_array_key_value_in (gint length, const gchar **keys, const GValue *values);
396 void gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length);
397 void gi_marshalling_tests_array_in_guint64_len (const gint *ints, guint64 length);
398 void gi_marshalling_tests_array_in_guint8_len (const gint *ints, guint8 length);
399
400 void gi_marshalling_tests_array_out (gint **ints, gint *length);
401 void gi_marshalling_tests_array_out_etc (gint first, gint **ints, gint *length, gint last, gint *sum);
402
403 void gi_marshalling_tests_array_inout (gint **ints, gint *length);
404 void gi_marshalling_tests_array_inout_etc (gint first, gint **ints, gint *length, gint last, gint *sum);
405
406 void gi_marshalling_tests_array_in_nonzero_nonlen (gint first, const guint8 *chars);
407
408 /* Zero-terminated */
409
410 gchar **gi_marshalling_tests_array_zero_terminated_return (void);
411 gchar **gi_marshalling_tests_array_zero_terminated_return_null (void);
412 GIMarshallingTestsBoxedStruct **gi_marshalling_tests_array_zero_terminated_return_struct (void);
413
414 void gi_marshalling_tests_array_zero_terminated_in (gchar **utf8s);
415
416 void gi_marshalling_tests_array_zero_terminated_out (gchar ***utf8s);
417
418 void gi_marshalling_tests_array_zero_terminated_inout (gchar ***utf8s);
419
420 GVariant **gi_marshalling_tests_array_gvariant_none_in (GVariant **variants);
421
422 GVariant **gi_marshalling_tests_array_gvariant_container_in (GVariant **variants);
423
424 GVariant **gi_marshalling_tests_array_gvariant_full_in (GVariant **variants);
425
426
427 /* GArray */
428
429 GArray *gi_marshalling_tests_garray_int_none_return (void);
430 GArray *gi_marshalling_tests_garray_uint64_none_return (void);
431 GArray *gi_marshalling_tests_garray_utf8_none_return (void);
432 GArray *gi_marshalling_tests_garray_utf8_container_return (void);
433 GArray *gi_marshalling_tests_garray_utf8_full_return (void);
434
435 void gi_marshalling_tests_garray_int_none_in (GArray *array_);
436 void gi_marshalling_tests_garray_uint64_none_in (GArray *array_);
437 void gi_marshalling_tests_garray_utf8_none_in (GArray *array_);
438
439 void gi_marshalling_tests_garray_utf8_none_out (GArray **array_);
440 void gi_marshalling_tests_garray_utf8_container_out (GArray **array_);
441 void gi_marshalling_tests_garray_utf8_full_out (GArray **array_);
442 void gi_marshalling_tests_garray_utf8_full_out_caller_allocated (GArray *array_);
443
444 void gi_marshalling_tests_garray_utf8_none_inout (GArray **array_);
445 void gi_marshalling_tests_garray_utf8_container_inout (GArray **array_);
446 void gi_marshalling_tests_garray_utf8_full_inout (GArray **array_);
447
448 /* GPtrArray */
449 GPtrArray *gi_marshalling_tests_gptrarray_utf8_none_return (void);
450 GPtrArray *gi_marshalling_tests_gptrarray_utf8_container_return (void);
451 GPtrArray *gi_marshalling_tests_gptrarray_utf8_full_return (void);
452
453 void gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_);
454
455 void gi_marshalling_tests_gptrarray_utf8_none_out (GPtrArray **parray_);
456 void gi_marshalling_tests_gptrarray_utf8_container_out (GPtrArray **parray_);
457 void gi_marshalling_tests_gptrarray_utf8_full_out (GPtrArray **parray_);
458
459 void gi_marshalling_tests_gptrarray_utf8_none_inout (GPtrArray **parray_);
460 void gi_marshalling_tests_gptrarray_utf8_container_inout (GPtrArray **parray_);
461 void gi_marshalling_tests_gptrarray_utf8_full_inout (GPtrArray **parray_);
462
463 /* GByteArray */
464
465 GByteArray *gi_marshalling_tests_bytearray_full_return (void);
466 void gi_marshalling_tests_bytearray_none_in (GByteArray* v);
467
468 /* GBytes */
469
470 GBytes *gi_marshalling_tests_gbytes_full_return (void);
471 void gi_marshalling_tests_gbytes_none_in (GBytes* v);
472
473 /* GStrv */
474
475 GStrv gi_marshalling_tests_gstrv_return (void);
476 void gi_marshalling_tests_gstrv_in (GStrv g_strv);
477 void gi_marshalling_tests_gstrv_out (GStrv *g_strv);
478 void gi_marshalling_tests_gstrv_inout (GStrv *g_strv);
479
480 /* GList */
481
482 GList *gi_marshalling_tests_glist_int_none_return (void);
483 GList *gi_marshalling_tests_glist_uint32_none_return (void);
484 GList *gi_marshalling_tests_glist_utf8_none_return (void);
485 GList *gi_marshalling_tests_glist_utf8_container_return (void);
486 GList *gi_marshalling_tests_glist_utf8_full_return (void);
487
488 void gi_marshalling_tests_glist_int_none_in (GList *list);
489 void gi_marshalling_tests_glist_uint32_none_in (GList *list);
490 void gi_marshalling_tests_glist_utf8_none_in (GList *list);
491
492 void gi_marshalling_tests_glist_utf8_none_out (GList **list);
493 void gi_marshalling_tests_glist_utf8_container_out (GList **list);
494 void gi_marshalling_tests_glist_utf8_full_out (GList **list);
495
496 void gi_marshalling_tests_glist_utf8_none_inout (GList **list);
497 void gi_marshalling_tests_glist_utf8_container_inout (GList **list);
498 void gi_marshalling_tests_glist_utf8_full_inout (GList **list);
499
500
501 /* GSList */
502
503 GSList *gi_marshalling_tests_gslist_int_none_return (void);
504 GSList *gi_marshalling_tests_gslist_utf8_none_return (void);
505 GSList *gi_marshalling_tests_gslist_utf8_container_return (void);
506 GSList *gi_marshalling_tests_gslist_utf8_full_return (void);
507
508 void gi_marshalling_tests_gslist_int_none_in (GSList *list);
509 void gi_marshalling_tests_gslist_utf8_none_in (GSList *list);
510
511 void gi_marshalling_tests_gslist_utf8_none_out (GSList **list);
512 void gi_marshalling_tests_gslist_utf8_container_out (GSList **list);
513 void gi_marshalling_tests_gslist_utf8_full_out (GSList **list);
514
515 void gi_marshalling_tests_gslist_utf8_none_inout (GSList **list);
516 void gi_marshalling_tests_gslist_utf8_container_inout (GSList **list);
517 void gi_marshalling_tests_gslist_utf8_full_inout (GSList **list);
518
519
520 /* GHashTable */
521
522 GHashTable *gi_marshalling_tests_ghashtable_int_none_return (void);
523 GHashTable *gi_marshalling_tests_ghashtable_utf8_none_return (void);
524 GHashTable *gi_marshalling_tests_ghashtable_utf8_container_return (void);
525 GHashTable *gi_marshalling_tests_ghashtable_utf8_full_return (void);
526
527 void gi_marshalling_tests_ghashtable_int_none_in (GHashTable *hash_table);
528 void gi_marshalling_tests_ghashtable_utf8_none_in (GHashTable *hash_table);
529 void gi_marshalling_tests_ghashtable_utf8_container_in (GHashTable *hash_table);
530 void gi_marshalling_tests_ghashtable_utf8_full_in (GHashTable *hash_table);
531
532 void gi_marshalling_tests_ghashtable_utf8_none_out (GHashTable **hash_table);
533 void gi_marshalling_tests_ghashtable_utf8_container_out (GHashTable **hash_table);
534 void gi_marshalling_tests_ghashtable_utf8_full_out (GHashTable **hash_table);
535
536 void gi_marshalling_tests_ghashtable_utf8_none_inout (GHashTable **hash_table);
537 void gi_marshalling_tests_ghashtable_utf8_container_inout (GHashTable **hash_table);
538 void gi_marshalling_tests_ghashtable_utf8_full_inout (GHashTable **hash_table);
539
540
541 /* GValue */
542
543 GValue *gi_marshalling_tests_gvalue_return (void);
544
545 void gi_marshalling_tests_gvalue_in (GValue *value);
546 void gi_marshalling_tests_gvalue_int64_in (GValue *value);
547 void gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type);
548
549 void gi_marshalling_tests_gvalue_in_enum (GValue *value);
550
551 void gi_marshalling_tests_gvalue_out (GValue **value);
552 void gi_marshalling_tests_gvalue_int64_out (GValue **value);
553 void gi_marshalling_tests_gvalue_out_caller_allocates (GValue *value);
554
555 void gi_marshalling_tests_gvalue_inout (GValue **value);
556
557 void gi_marshalling_tests_gvalue_flat_array (guint         n_values,
558                                              const GValue *values);
559
560 GValue *gi_marshalling_tests_return_gvalue_flat_array (void);
561
562 GValue *gi_marshalling_tests_gvalue_flat_array_round_trip (const GValue one,
563                                                            const GValue two,
564                                                            const GValue three);
565
566 /* GClosure */
567
568 void gi_marshalling_tests_gclosure_in (GClosure *closure);
569 GClosure *gi_marshalling_tests_gclosure_return (void);
570
571 /* Callback return values */
572
573 /**
574  * GIMarshallingTestsCallbackReturnValueOnly:
575  */
576 typedef glong (* GIMarshallingTestsCallbackReturnValueOnly) (void);
577
578 glong gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback);
579
580 /**
581  * GIMarshallingTestsCallbackOneOutParameter:
582  * @a: (out):
583  */
584 typedef void (* GIMarshallingTestsCallbackOneOutParameter) (gfloat *a);
585
586 void gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOutParameter  callback,
587                                                       gfloat                                    *a);
588
589 /**
590  * GIMarshallingTestsCallbackMultipleOutParameters:
591  * @a: (out):
592  * @b: (out):
593  */
594 typedef void (* GIMarshallingTestsCallbackMultipleOutParameters) (gfloat *a, gfloat *b);
595
596 void gi_marshalling_tests_callback_multiple_out_parameters (GIMarshallingTestsCallbackMultipleOutParameters  callback,
597                                                             gfloat                                          *a,
598                                                             gfloat                                          *b);
599
600 /**
601  * GIMarshallingTestsCallbackReturnValueAndOneOutParameter:
602  * @a: (out):
603  */
604 typedef glong (* GIMarshallingTestsCallbackReturnValueAndOneOutParameter) (glong *a);
605
606 glong gi_marshalling_tests_callback_return_value_and_one_out_parameter (GIMarshallingTestsCallbackReturnValueAndOneOutParameter  callback,
607                                                                         glong                                                   *a);
608
609 /**
610  * GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters:
611  * @a: (out):
612  * @b: (out):
613  */
614 typedef glong (* GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters) (glong *a, glong *b);
615
616 glong gi_marshalling_tests_callback_return_value_and_multiple_out_parameters (GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters  callback,
617                                                                               glong                                                         *a,
618                                                                               glong                                                         *b);
619
620 /* Pointer */
621
622 gpointer gi_marshalling_tests_pointer_in_return (gpointer pointer);
623
624 /* Structure */
625
626 struct _GIMarshallingTestsSimpleStruct {
627     glong long_;
628     gint8 int8;
629 };
630
631 typedef struct {
632     GIMarshallingTestsSimpleStruct simple_struct;
633 } GIMarshallingTestsNestedStruct;
634
635 typedef struct {
636     GIMarshallingTestsNestedStruct *pointer;
637 } GIMarshallingTestsNotSimpleStruct;
638
639
640 GIMarshallingTestsSimpleStruct *gi_marshalling_tests_simple_struct_returnv (void);
641
642 void gi_marshalling_tests_simple_struct_inv (GIMarshallingTestsSimpleStruct *struct_);
643
644 void gi_marshalling_tests_simple_struct_method (GIMarshallingTestsSimpleStruct *struct_);
645
646
647 typedef struct {
648     glong long_;
649 } GIMarshallingTestsPointerStruct;
650
651 GType gi_marshalling_tests_pointer_struct_get_type (void) G_GNUC_CONST;
652
653 GIMarshallingTestsPointerStruct *gi_marshalling_tests_pointer_struct_returnv (void);
654
655 void gi_marshalling_tests_pointer_struct_inv (GIMarshallingTestsPointerStruct *struct_);
656
657 struct _GIMarshallingTestsBoxedStruct {
658     glong long_;
659     gchar *string_;
660     GStrv g_strv;
661 };
662
663 GType gi_marshalling_tests_boxed_struct_get_type (void) G_GNUC_CONST;
664
665 GIMarshallingTestsBoxedStruct *gi_marshalling_tests_boxed_struct_new (void);
666
667 GIMarshallingTestsBoxedStruct *gi_marshalling_tests_boxed_struct_returnv (void);
668
669 void gi_marshalling_tests_boxed_struct_inv (GIMarshallingTestsBoxedStruct *struct_);
670
671 void gi_marshalling_tests_boxed_struct_out (GIMarshallingTestsBoxedStruct **struct_);
672
673 void gi_marshalling_tests_boxed_struct_inout (GIMarshallingTestsBoxedStruct **struct_);
674
675 typedef union {
676     glong long_;
677 } GIMarshallingTestsUnion;
678
679 GType gi_marshalling_tests_union_get_type (void) G_GNUC_CONST;
680
681 GIMarshallingTestsUnion *gi_marshalling_tests_union_returnv (void);
682
683 void gi_marshalling_tests_union_inv (GIMarshallingTestsUnion *union_);
684
685 void gi_marshalling_tests_union_out (GIMarshallingTestsUnion **union_);
686
687 void gi_marshalling_tests_union_inout (GIMarshallingTestsUnion **union_);
688
689 void gi_marshalling_tests_union_method (GIMarshallingTestsUnion *union_);
690
691  /* Object */
692
693 #define GI_MARSHALLING_TESTS_TYPE_OBJECT             (gi_marshalling_tests_object_get_type ())
694 #define GI_MARSHALLING_TESTS_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObject))
695 #define GI_MARSHALLING_TESTS_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObjectClass))
696 #define GI_MARSHALLING_TESTS_IS_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT))
697 #define GI_MARSHALLING_TESTS_IS_OBJECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_OBJECT))
698 #define GI_MARSHALLING_TESTS_OBJECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObjectClass))
699
700 typedef struct _GIMarshallingTestsObjectClass GIMarshallingTestsObjectClass;
701 typedef struct _GIMarshallingTestsObject GIMarshallingTestsObject;
702
703 typedef int (* GIMarshallingTestsCallbackIntInt) (int val, void *user_data);
704
705 struct _GIMarshallingTestsObjectClass
706 {
707         GObjectClass parent_class;
708
709     /**
710      * GIMarshallingTestsObjectClass::method_int8_in:
711      * @in: (in):
712      */
713     void (* method_int8_in) (GIMarshallingTestsObject *self, gint8 in);
714
715     /**
716      * GIMarshallingTestsObjectClass::method_int8_out:
717      * @out: (out):
718      */
719     void (* method_int8_out) (GIMarshallingTestsObject *self, gint8 *out);
720
721     /**
722      * GIMarshallingTestsObjectClass::method_int8_arg_and_out_caller:
723      * @out: (out caller-allocates):
724      */
725     void (* method_int8_arg_and_out_caller) (GIMarshallingTestsObject *self, gint8 arg, gint8 *out);
726
727     /**
728      * GIMarshallingTestsObjectClass::method_int8_arg_and_out_callee:
729      * @out: (out):
730      */
731     void (* method_int8_arg_and_out_callee) (GIMarshallingTestsObject *self, gint8 arg, gint8 **out);
732
733     /**
734      * GIMarshallingTestsObjectClass::method_str_arg_out_ret:
735      * @out: (out caller-allocates):
736      *
737      * Returns: (transfer none)
738      */
739     const gchar* (* method_str_arg_out_ret) (GIMarshallingTestsObject *self, const gchar* arg, guint *out);
740
741     /**
742      * GIMarshallingTestsObjectClass::method_with_default_implementation:
743      * @in: (in):
744      */
745     void (* method_with_default_implementation) (GIMarshallingTestsObject *self, gint8 in);
746
747     /**
748      * GIMarshallingTestsObjectClass::method_deep_hierarchy:
749      * @in: (in):
750      */
751     void (* method_deep_hierarchy) (GIMarshallingTestsObject *self, gint8 in);
752
753     void (* vfunc_with_callback) (GIMarshallingTestsObject *self,
754                                   GIMarshallingTestsCallbackIntInt callback,
755                                   void *callback_data);
756
757     /**
758      * GIMarshallingTestsObjectClass::vfunc_return_value_only:
759      */
760     glong (* vfunc_return_value_only) (GIMarshallingTestsObject *self);
761
762     /**
763      * GIMarshallingTestsObjectClass::vfunc_one_out_parameter:
764      * @a: (out):
765      */
766     void  (* vfunc_one_out_parameter) (GIMarshallingTestsObject *self, gfloat *a);
767
768     /**
769      * GIMarshallingTestsObjectClass::vfunc_multiple_out_parameters:
770      * @a: (out):
771      * @b: (out):
772      */
773     void  (* vfunc_multiple_out_parameters) (GIMarshallingTestsObject *self, gfloat *a, gfloat *b);
774
775     /**
776      * GIMarshallingTestsObjectClass::vfunc_caller_allocated_out_parameter:
777      * @a: (out):
778      */
779     void  (* vfunc_caller_allocated_out_parameter) (GIMarshallingTestsObject *self, GValue *a);
780
781     /**
782      * GIMarshallingTestsObjectClass::vfunc_array_out_parameter:
783      * @a: (out) (array zero-terminated=1):
784      */
785     void  (* vfunc_array_out_parameter) (GIMarshallingTestsObject *self, gfloat **a);
786
787     /**
788      * GIMarshallingTestsObjectClass::vfunc_return_value_and_one_out_parameter:
789      * @a: (out):
790      */
791     glong (* vfunc_return_value_and_one_out_parameter) (GIMarshallingTestsObject *self, glong *a);
792
793     /**
794      * GIMarshallingTestsObjectClass::vfunc_return_value_and_multiple_out_parameters:
795      * @a: (out):
796      * @b: (out):
797      */
798     glong (* vfunc_return_value_and_multiple_out_parameters) (GIMarshallingTestsObject *self, glong *a, glong *b);
799
800     /**
801      * GIMarshallingTestsObjectClass::vfunc_meth_with_err:
802      * @x:
803      * @error: A #GError
804      */
805     gboolean (*vfunc_meth_with_err) (GIMarshallingTestsObject *object, gint x, GError **error);
806
807     /**
808      * GIMarshallingTestsObjectClass::vfunc_return_enum:
809      */
810     GIMarshallingTestsFlags (* vfunc_return_enum) (GIMarshallingTestsObject *self);
811
812     /**
813      * GIMarshallingTestsObjectClass::vfunc_out_enum:
814      * @_enum: (out):
815      */
816     void (* vfunc_out_enum) (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum);
817
818     /**
819      * GIMarshallingTestsObjectClass::vfunc_return_object_transfer_none:
820      *
821      * Returns: (transfer none)
822      */
823     GObject* (* vfunc_return_object_transfer_none) (GIMarshallingTestsObject *self);
824
825     /**
826      * GIMarshallingTestsObjectClass::vfunc_return_object_transfer_full:
827      *
828      * Returns: (transfer full)
829      */
830     GObject* (* vfunc_return_object_transfer_full) (GIMarshallingTestsObject *self);
831
832     /**
833      * GIMarshallingTestsObjectClass::vfunc_out_object_transfer_none:
834      * @object: (out) (transfer none):
835      */
836     void (* vfunc_out_object_transfer_none) (GIMarshallingTestsObject *self, GObject **object);
837
838     /**
839      * GIMarshallingTestsObjectClass::vfunc_out_object_transfer_full:
840      * @object: (out) (transfer full):
841      */
842     void (* vfunc_out_object_transfer_full) (GIMarshallingTestsObject *self, GObject **object);
843
844     /**
845      * GIMarshallingTestsObjectClass::vfunc_in_object_transfer_none:
846      * @object: (in) (transfer none):
847      */
848     void (* vfunc_in_object_transfer_none) (GIMarshallingTestsObject *self, GObject *object);
849
850     /**
851      * GIMarshallingTestsObjectClass::vfunc_in_object_transfer_full:
852      * @object: (in) (transfer full):
853      */
854     void (* vfunc_in_object_transfer_full) (GIMarshallingTestsObject *self, GObject *object);
855 };
856
857 struct _GIMarshallingTestsObject
858 {
859         GObject parent_instance;
860
861     gint int_;
862 };
863
864 GType gi_marshalling_tests_object_get_type (void) G_GNUC_CONST;
865 void gi_marshalling_tests_object_static_method (void);
866 void gi_marshalling_tests_object_method (GIMarshallingTestsObject *object);
867 void gi_marshalling_tests_object_overridden_method (GIMarshallingTestsObject *object);
868 GIMarshallingTestsObject *gi_marshalling_tests_object_new (gint int_);
869
870 void gi_marshalling_tests_object_method_array_in (GIMarshallingTestsObject *object, const gint *ints, gint length);
871 void gi_marshalling_tests_object_method_array_out (GIMarshallingTestsObject *object, gint **ints, gint *length);
872 void gi_marshalling_tests_object_method_array_inout (GIMarshallingTestsObject *object, gint **ints, gint *length);
873 const gint *gi_marshalling_tests_object_method_array_return (GIMarshallingTestsObject *object, gint *length);
874
875 void gi_marshalling_tests_object_method_int8_in (GIMarshallingTestsObject *object, gint8 in);
876 void gi_marshalling_tests_object_method_int8_out (GIMarshallingTestsObject *object, gint8 *out);
877 void gi_marshalling_tests_object_method_int8_arg_and_out_caller (GIMarshallingTestsObject *object, gint8 arg, gint8 *out);
878 void gi_marshalling_tests_object_method_int8_arg_and_out_callee (GIMarshallingTestsObject *object, gint8 arg, gint8 **out);
879 const gchar* gi_marshalling_tests_object_method_str_arg_out_ret (GIMarshallingTestsObject *object, const gchar* arg, guint *out);
880 void gi_marshalling_tests_object_method_with_default_implementation (GIMarshallingTestsObject *object, gint8 in);
881 void gi_marshalling_tests_object_method_variant_array_in (GIMarshallingTestsObject *object, GVariant **in, gsize n_in);
882
883 glong gi_marshalling_tests_object_vfunc_return_value_only (GIMarshallingTestsObject *self);
884 void gi_marshalling_tests_object_vfunc_one_out_parameter (GIMarshallingTestsObject *self, gfloat *a);
885 void gi_marshalling_tests_object_vfunc_multiple_out_parameters (GIMarshallingTestsObject *self, gfloat *a, gfloat *b);
886 void gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter (GIMarshallingTestsObject *self, GValue *a);
887 void gi_marshalling_tests_object_vfunc_array_out_parameter (GIMarshallingTestsObject *self, gfloat **a);
888 glong gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter (GIMarshallingTestsObject *self, glong *a);
889 glong gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters (GIMarshallingTestsObject *self, glong *a, glong *b);
890 gboolean gi_marshalling_tests_object_vfunc_meth_with_error (GIMarshallingTestsObject *object, gint x, GError **error);
891
892 GIMarshallingTestsEnum gi_marshalling_tests_object_vfunc_return_enum (GIMarshallingTestsObject *self);
893 void gi_marshalling_tests_object_vfunc_out_enum (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum);
894
895 void gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
896 void gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_full (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
897 void gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_none (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
898 void gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_full (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
899 void gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_none (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating);
900 void gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_full (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating);
901
902 GIMarshallingTestsObject *gi_marshalling_tests_object_none_return (void);
903 GIMarshallingTestsObject *gi_marshalling_tests_object_full_return (void);
904
905 void gi_marshalling_tests_object_none_in (GIMarshallingTestsObject *object);
906 void gi_marshalling_tests_object_full_in (GIMarshallingTestsObject *object);
907
908 void gi_marshalling_tests_object_none_out (GIMarshallingTestsObject **object);
909 void gi_marshalling_tests_object_full_out (GIMarshallingTestsObject **object);
910
911 void gi_marshalling_tests_object_none_inout (GIMarshallingTestsObject **object);
912 void gi_marshalling_tests_object_full_inout (GIMarshallingTestsObject **object);
913 void gi_marshalling_tests_object_inout_same (GIMarshallingTestsObject **object);
914
915 void gi_marshalling_tests_object_int8_in (GIMarshallingTestsObject *object, gint8 in);
916 void gi_marshalling_tests_object_int8_out (GIMarshallingTestsObject *object, gint8 *out);
917
918 void gi_marshalling_tests_object_vfunc_with_callback (GIMarshallingTestsObject *object,
919                                                       GIMarshallingTestsCallbackIntInt callback,
920                                                       void *callback_data);
921 void gi_marshalling_tests_object_call_vfunc_with_callback (GIMarshallingTestsObject *object);
922
923 #define GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT             (gi_marshalling_tests_sub_object_get_type ())
924 #define GI_MARSHALLING_TESTS_SUB_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObject))
925 #define GI_MARSHALLING_TESTS_SUB_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObjectClass))
926 #define GI_MARSHALLING_TESTS_IS_SUB_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT))
927 #define GI_MARSHALLING_TESTS_IS_SUB_OBJECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT))
928 #define GI_MARSHALLING_TESTS_SUB_OBJECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObjectClass))
929
930 typedef struct _GIMarshallingTestsSubObjectClass GIMarshallingTestsSubObjectClass;
931 typedef struct _GIMarshallingTestsSubObject GIMarshallingTestsSubObject;
932
933 struct _GIMarshallingTestsSubObjectClass
934 {
935         GIMarshallingTestsObjectClass parent_class;
936 };
937
938 struct _GIMarshallingTestsSubObject
939 {
940         GIMarshallingTestsObject parent_instance;
941 };
942
943 GType gi_marshalling_tests_sub_object_get_type (void) G_GNUC_CONST;
944
945 void gi_marshalling_tests_sub_object_sub_method (GIMarshallingTestsSubObject *object);
946 void gi_marshalling_tests_sub_object_overwritten_method (GIMarshallingTestsSubObject *object);
947
948 #define GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT             (gi_marshalling_tests_sub_sub_object_get_type ())
949 #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObject))
950 #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObjectClass))
951 #define GI_MARSHALLING_TESTS_IS_SUB_SUB_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT))
952 #define GI_MARSHALLING_TESTS_IS_SUB_SUB_OBJECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT))
953 #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObjectClass))
954
955 typedef struct _GIMarshallingTestsSubSubObjectClass GIMarshallingTestsSubSubObjectClass;
956 typedef struct _GIMarshallingTestsSubSubObject GIMarshallingTestsSubSubObject;
957
958 struct _GIMarshallingTestsSubSubObjectClass
959 {
960         GIMarshallingTestsSubObjectClass parent_class;
961 };
962
963 struct _GIMarshallingTestsSubSubObject
964 {
965         GIMarshallingTestsSubObject parent_instance;
966 };
967
968 GType gi_marshalling_tests_sub_sub_object_get_type (void) G_GNUC_CONST;
969
970 /* Interfaces */
971
972 #define GI_MARSHALLING_TESTS_TYPE_INTERFACE              (gi_marshalling_tests_interface_get_type ())
973 #define GI_MARSHALLING_TESTS_INTERFACE(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE, GIMarshallingTestsInterface))
974 #define GI_MARSHALLING_TESTS_IS_INTERFACE(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE))
975 #define GI_MARSHALLING_TESTS_INTERFACE_GET_IFACE(obj)    (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GI_MARSHALLING_TESTS_TYPE_INTERFACE, GIMarshallingTestsInterfaceIface))
976
977 typedef struct _GIMarshallingTestsInterface GIMarshallingTestsInterface;
978 typedef struct _GIMarshallingTestsInterfaceIface GIMarshallingTestsInterfaceIface;
979
980 struct _GIMarshallingTestsInterfaceIface {
981     GTypeInterface base_iface;
982
983     /**
984      * GIMarshallingTestsInterfaceIface::test_int8_in:
985      * @in: (in):
986      */
987     void (* test_int8_in) (GIMarshallingTestsInterface *self, gint8 in);
988 };
989
990 GType gi_marshalling_tests_interface_get_type (void) G_GNUC_CONST;
991
992 void gi_marshalling_tests_interface_test_int8_in (GIMarshallingTestsInterface *self, gint8 in);
993
994 void gi_marshalling_tests_test_interface_test_int8_in (GIMarshallingTestsInterface *test_iface, gint8 in);
995
996 /* GIMarshallingTestsInterface2 allows us testing vfunc clashes when a class'
997    vfunc implementation ambiguously relates to its prototype */
998
999 #define GI_MARSHALLING_TESTS_TYPE_INTERFACE2              (gi_marshalling_tests_interface2_get_type ())
1000 #define GI_MARSHALLING_TESTS_INTERFACE2(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE2, GIMarshallingTestsInterface2))
1001 #define GI_MARSHALLING_TESTS_IS_INTERFACE2(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE2))
1002 #define GI_MARSHALLING_TESTS_INTERFACE2_GET_IFACE(obj)    (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GI_MARSHALLING_TESTS_TYPE_INTERFACE2, GIMarshallingTestsInterface2Iface))
1003
1004 typedef struct _GIMarshallingTestsInterface2 GIMarshallingTestsInterface2;
1005 typedef struct _GIMarshallingTestsInterface2Iface GIMarshallingTestsInterface2Iface;
1006
1007 struct _GIMarshallingTestsInterface2Iface {
1008     GTypeInterface base_iface;
1009
1010     /**
1011      * GIMarshallingTestsInterface2Iface::test_int8_in:
1012      * @in: (in):
1013      */
1014     void (* test_int8_in) (GIMarshallingTestsInterface2 *self, gint8 in);
1015 };
1016
1017 GType gi_marshalling_tests_interface2_get_type (void) G_GNUC_CONST;
1018
1019 /* GIMarshallingTestsInterface3 tests passing arrays of variants from C to @lang */
1020
1021 #define GI_MARSHALLING_TESTS_TYPE_INTERFACE3              (gi_marshalling_tests_interface3_get_type ())
1022 #define GI_MARSHALLING_TESTS_INTERFACE3(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE3, GIMarshallingTestsInterface3))
1023 #define GI_MARSHALLING_TESTS_IS_INTERFACE3(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE3))
1024 #define GI_MARSHALLING_TESTS_INTERFACE3_GET_IFACE(obj)    (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GI_MARSHALLING_TESTS_TYPE_INTERFACE3, GIMarshallingTestsInterface3Iface))
1025
1026 typedef struct _GIMarshallingTestsInterface3 GIMarshallingTestsInterface3;
1027 typedef struct _GIMarshallingTestsInterface3Iface GIMarshallingTestsInterface3Iface;
1028
1029 struct _GIMarshallingTestsInterface3Iface {
1030     GTypeInterface base_iface;
1031
1032     /**
1033      * GIMarshallingTestsInterface3::test_variant_array_in:
1034      * @in: (in) (array length=n_in):
1035      */
1036     void (* test_variant_array_in) (GIMarshallingTestsInterface3 *self, GVariant **in, gsize n_in);
1037 };
1038
1039 GType gi_marshalling_tests_interface3_get_type (void) G_GNUC_CONST;
1040
1041 void gi_marshalling_tests_interface3_test_variant_array_in (GIMarshallingTestsInterface3 *self, GVariant **in, gsize n_in);
1042
1043 /* Multiple output arguments */
1044
1045 void gi_marshalling_tests_int_out_out (gint *int0, gint *int1);
1046 void gi_marshalling_tests_int_three_in_three_out(gint a, gint b, gint c,
1047                                                  gint *out0, gint *out1, gint *out2);
1048 gint gi_marshalling_tests_int_return_out (gint *int_);
1049
1050
1051 /* GError */
1052
1053 #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN "gi-marshalling-tests-gerror-domain"
1054 #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE 5
1055 #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE "gi-marshalling-tests-gerror-message"
1056 #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE "we got an error, life is shit"
1057
1058 void gi_marshalling_tests_gerror(GError **error);
1059 void gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error);
1060 void gi_marshalling_tests_gerror_out(GError **error, gchar **debug);
1061 void gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug);
1062 GError *gi_marshalling_tests_gerror_return(void);
1063
1064 /* GParamSpec */
1065 void gi_marshalling_tests_param_spec_in_bool(const GParamSpec *param);
1066 GParamSpec *gi_marshalling_tests_param_spec_return (void);
1067 void gi_marshalling_tests_param_spec_out(GParamSpec **param);
1068
1069 /* Overrides */
1070
1071 #define GI_MARSHALLING_TESTS_OVERRIDES_CONSTANT 42
1072
1073
1074 typedef struct {
1075     glong long_;
1076 } GIMarshallingTestsOverridesStruct;
1077
1078 GType gi_marshalling_tests_overrides_struct_get_type (void) G_GNUC_CONST;
1079
1080 GIMarshallingTestsOverridesStruct *gi_marshalling_tests_overrides_struct_new (void);
1081
1082 glong gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct *struct_);
1083
1084 GIMarshallingTestsOverridesStruct *gi_marshalling_tests_overrides_struct_returnv (void);
1085
1086
1087 #define GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT             (gi_marshalling_tests_overrides_object_get_type ())
1088 #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObject))
1089 #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObjectClass))
1090 #define GI_MARSHALLING_TESTS_IS_OVERRIDES_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT))
1091 #define GI_MARSHALLING_TESTS_IS_OVERRIDES_OBJECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT))
1092 #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObjectClass))
1093
1094 typedef struct _GIMarshallingTestsOverridesObjectClass GIMarshallingTestsOverridesObjectClass;
1095 typedef struct _GIMarshallingTestsOverridesObject GIMarshallingTestsOverridesObject;
1096
1097 struct _GIMarshallingTestsOverridesObjectClass
1098 {
1099     GObjectClass parent_class;
1100 };
1101
1102 struct _GIMarshallingTestsOverridesObject
1103 {
1104     GObject parent_instance;
1105
1106     glong long_;
1107 };
1108
1109 GType gi_marshalling_tests_overrides_object_get_type (void) G_GNUC_CONST;
1110
1111 GIMarshallingTestsOverridesObject *gi_marshalling_tests_overrides_object_new (void);
1112
1113 glong gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject *object);
1114
1115 GIMarshallingTestsOverridesObject *gi_marshalling_tests_overrides_object_returnv (void);
1116
1117 /* Properties Object */
1118
1119 #define GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT (gi_marshalling_tests_properties_object_get_type ())
1120 #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObject))
1121 #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObjectClass))
1122 #define GI_MARSHALLING_TESTS_IS_PROPERTIES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT))
1123 #define GI_MARSHALLING_TESTS_IS_PROPERTIES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT))
1124 #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObjectClass))
1125
1126 typedef struct _GIMarshallingTestsPropertiesObject GIMarshallingTestsPropertiesObject;
1127 typedef struct _GIMarshallingTestsPropertiesObjectClass GIMarshallingTestsPropertiesObjectClass;
1128
1129 struct _GIMarshallingTestsPropertiesObject {
1130     GObject parent_instance;
1131
1132     gboolean some_boolean;
1133     gchar some_char;
1134     guchar some_uchar;
1135     gint some_int;
1136     guint some_uint;
1137     glong some_long;
1138     gulong some_ulong;
1139     gint64 some_int64;
1140     guint64 some_uint64;
1141     gfloat some_float;
1142     gdouble some_double;
1143     gchar **some_strv;
1144     GIMarshallingTestsBoxedStruct* some_boxed_struct;
1145     GList* some_boxed_glist;
1146     GVariant *some_variant;
1147     GObject *some_object;
1148 };
1149
1150 struct _GIMarshallingTestsPropertiesObjectClass {
1151     GObjectClass parent_class;
1152 };
1153
1154 GType gi_marshalling_tests_properties_object_get_type (void) G_GNUC_CONST;
1155
1156 GIMarshallingTestsPropertiesObject *gi_marshalling_tests_properties_object_new (void);
1157
1158 #endif /* _GI_MARSHALLING_TESTS_H_ */