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