foo.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582
  1. #ifndef __REGRESS_FOO_OBJECT_H__
  2. #define __REGRESS_FOO_OBJECT_H__
  3. #include <glib-object.h>
  4. #include <gio/gio.h> /* GAsyncReadyCallback */
  5. #include "gitestmacros.h"
  6. #include "utility.h"
  7. #define REGRESS_FOO_SUCCESS_INT 0x1138
  8. #define REGRESS_FOO_DEFINE_SHOULD_BE_EXPOSED "should be exposed"
  9. #define REGRESS_FOO_PIE_IS_TASTY 3.14159
  10. #define REGRESS_FOO_TYPE_INTERFACE (regress_foo_interface_get_type ())
  11. #define REGRESS_FOO_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_INTERFACE, RegressFooInterface))
  12. #define REGRESS_FOO_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_INTERFACE))
  13. #define REGRESS_FOO_INTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REGRESS_FOO_TYPE_INTERFACE, RegressFooInterfaceIface))
  14. #define REGRESS_FOO_TYPE_SUBINTERFACE (regress_foo_sub_interface_get_type ())
  15. #define REGRESS_FOO_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_SUBINTERFACE, RegressFooSubInterface))
  16. #define REGRESS_FOO_IS_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_SUBINTERFACE))
  17. #define REGRESS_FOO_SUBINTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REGRESS_FOO_TYPE_SUBINTERFACE, RegressFooSubInterfaceIface))
  18. #define REGRESS_FOO_TYPE_OBJECT (regress_foo_object_get_type ())
  19. #define REGRESS_FOO_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_OBJECT, RegressFooObject))
  20. #define REGRESS_FOO_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_OBJECT))
  21. #define REGRESS_FOO_TYPE_SUBOBJECT (regress_foo_subobject_get_type ())
  22. #define REGRESS_FOO_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_CAST ((subobject), REGRESS_FOO_TYPE_SUBOBJECT, RegressFooSubobject))
  23. #define REGRESS_FOO_IS_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_TYPE ((subobject), REGRESS_FOO_TYPE_SUBOBJECT))
  24. #define REGRESS_FOO_TYPE_BUFFER (regress_foo_buffer_get_type ())
  25. #define REGRESS_FOO_BUFFER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_BUFFER, RegressFooBuffer))
  26. #define REGRESS_FOO_IS_BUFFER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_BUFFER))
  27. #define REGRESS_FOO_TYPE_OTHER_OBJECT (regress_foo_other_object_get_type ())
  28. #define REGRESS_FOO_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_OTHER_OBJECT, RegressFooOtherObject))
  29. #define REGRESS_FOO_IS_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_OTHER_OBJECT))
  30. typedef struct _RegressFooInterface RegressFooInterface;
  31. typedef struct _RegressFooInterfaceIface RegressFooInterfaceIface;
  32. typedef struct _RegressFooSubInterface RegressFooSubInterface;
  33. typedef struct _RegressFooSubInterfaceIface RegressFooSubInterfaceIface;
  34. typedef struct _RegressFooObject RegressFooObject;
  35. typedef struct _RegressFooObjectClass RegressFooObjectClass;
  36. typedef struct _RegressFooSubobject RegressFooSubobject;
  37. typedef struct _RegressFooSubobjectClass RegressFooSubobjectClass;
  38. typedef struct _RegressFooBuffer RegressFooBuffer;
  39. typedef struct _RegressFooBufferClass RegressFooBufferClass;
  40. typedef struct _RegressFooOtherObject RegressFooOtherObject;
  41. typedef struct _RegressFooOtherObjectClass RegressFooOtherObjectClass;
  42. struct _RegressFooInterfaceIface
  43. {
  44. GTypeInterface parent_iface;
  45. void (*do_regress_foo) (RegressFooInterface *self, int x);
  46. };
  47. _GI_TEST_EXTERN
  48. GType regress_foo_interface_get_type (void) G_GNUC_CONST;
  49. _GI_TEST_EXTERN
  50. void regress_foo_interface_do_regress_foo (RegressFooInterface *iface, int x);
  51. _GI_TEST_EXTERN
  52. void regress_foo_interface_static_method (int x);
  53. struct _RegressFooSubInterfaceIface
  54. {
  55. GTypeInterface parent_iface;
  56. /* signals */
  57. void (*destroy_event) (RegressFooSubInterface *self);
  58. /* virtual table */
  59. void (*do_bar) (RegressFooSubInterface *self);
  60. void (*do_baz) (RegressFooSubInterface *self, GCallback callback, gpointer user_data);
  61. };
  62. _GI_TEST_EXTERN
  63. GType regress_foo_sub_interface_get_type (void) G_GNUC_CONST;
  64. _GI_TEST_EXTERN
  65. void regress_foo_sub_interface_do_bar (RegressFooSubInterface *self);
  66. _GI_TEST_EXTERN
  67. void regress_foo_sub_interface_do_baz (RegressFooSubInterface *self,
  68. GCallback callback,
  69. gpointer user_data);
  70. struct _RegressFooObject
  71. {
  72. GObject parent_instance;
  73. int some_int;
  74. };
  75. struct _RegressFooObjectClass
  76. {
  77. GObjectClass parent_class;
  78. gboolean (* virtual_method) (RegressFooObject *object, int first_param);
  79. /* Intended to match GFile */
  80. void (*read_fn) (RegressFooObject *object, int offset, int length);
  81. /* Test reserved stuff */
  82. GCallback _reserved[4];
  83. };
  84. _GI_TEST_EXTERN
  85. gint regress_foo_init (void);
  86. _GI_TEST_EXTERN
  87. GType regress_foo_object_get_type (void) G_GNUC_CONST;
  88. _GI_TEST_EXTERN
  89. RegressFooObject* regress_foo_object_new (void);
  90. _GI_TEST_EXTERN
  91. UtilityObject* regress_foo_object_external_type (RegressFooObject *object);
  92. _GI_TEST_EXTERN
  93. GObject* regress_foo_object_new_as_super (void);
  94. _GI_TEST_EXTERN
  95. void regress_foo_object_various (RegressFooObject *object, void *data, GType some_type);
  96. _GI_TEST_EXTERN
  97. void regress_foo_object_take_all (RegressFooObject *object, int x, ...);
  98. typedef gpointer RegressFooObjectCookie;
  99. _GI_TEST_EXTERN
  100. RegressFooObjectCookie regress_foo_object_new_cookie (RegressFooObject *object, const char *target);
  101. _GI_TEST_EXTERN
  102. void regress_foo_object_is_it_time_yet (RegressFooObject *object, time_t time);
  103. _GI_TEST_EXTERN
  104. const char * regress_foo_object_get_name (RegressFooObject *object);
  105. _GI_TEST_EXTERN
  106. char * regress_foo_object_dup_name (RegressFooObject *object);
  107. _GI_TEST_EXTERN
  108. void regress_foo_object_handle_glyph (RegressFooObject *object, UtilityGlyph glyph);
  109. _GI_TEST_EXTERN
  110. gboolean regress_foo_object_virtual_method (RegressFooObject *object, int first_param);
  111. _GI_TEST_EXTERN
  112. void regress_foo_object_read (RegressFooObject *object, int offset, int length);
  113. _GI_TEST_EXTERN
  114. int regress_foo_object_static_meth (void);
  115. _GI_TEST_EXTERN
  116. void regress_foo_object_skipped_method (RegressFooObject *object);
  117. struct _RegressFooSubobject
  118. {
  119. RegressFooObject parent_instance;
  120. };
  121. struct _RegressFooSubobjectClass
  122. {
  123. RegressFooObjectClass parent_class;
  124. };
  125. _GI_TEST_EXTERN
  126. GType regress_foo_subobject_get_type (void) G_GNUC_CONST;
  127. _GI_TEST_EXTERN
  128. RegressFooSubobject* regress_foo_subobject_new (void);
  129. _GI_TEST_EXTERN
  130. RegressFooObject * regress_foo_object_get_default (void);
  131. _GI_TEST_EXTERN
  132. GType regress_foo_buffer_get_type (void);
  133. _GI_TEST_EXTERN
  134. void regress_foo_buffer_some_method (RegressFooBuffer *buffer);
  135. _GI_TEST_EXTERN
  136. GType regress_foo_other_object_get_type (void) G_GNUC_CONST;
  137. _GI_TEST_EXTERN
  138. RegressFooObject * regress_foo_not_a_constructor_new (void);
  139. typedef enum
  140. {
  141. REGRESS_FOO_ENUM_ALPHA,
  142. REGRESS_FOO_ENUM_BETA,
  143. REGRESS_FOO_ENUM_DELTA
  144. } RegressFooEnumType;
  145. _GI_TEST_EXTERN
  146. GType regress_foo_enum_type_get_type (void);
  147. _GI_TEST_EXTERN
  148. int regress_foo_enum_type_method (RegressFooEnumType regress_foo_enum);
  149. _GI_TEST_EXTERN
  150. RegressFooEnumType regress_foo_enum_type_returnv (int x);
  151. typedef enum
  152. {
  153. REGRESS_FOO_FLAGS_FIRST = 1 << 0,
  154. REGRESS_FOO_FLAGS_SECOND = 1 << 1,
  155. REGRESS_FOO_FLAGS_THIRD = 1 << 2
  156. } RegressFooFlagsType;
  157. _GI_TEST_EXTERN
  158. GType regress_foo_flags_type_get_type (void);
  159. typedef enum
  160. {
  161. REGRESS_FOO_ENUM_UN = 1,
  162. REGRESS_FOO_ENUM_DEUX = 2,
  163. REGRESS_FOO_ENUM_TROIS = 3,
  164. REGRESS_FOO_ENUM_NEUF = 9
  165. } RegressFooEnumNoType;
  166. typedef enum
  167. {
  168. REGRESS_FOO_FLAGS_ETT = 1 << 0,
  169. REGRESS_FOO_FLAGS_TVA = 1 << 1,
  170. REGRESS_FOO_FLAGS_FYRA = 1 << 2
  171. } RegressFooFlagsNoType;
  172. typedef enum
  173. {
  174. REGRESS_FOO_ENUM_FULLNAME_ONE = 1,
  175. REGRESS_FOO_ENUM_FULLNAME_TWO,
  176. REGRESS_FOO_ENUM_FULLNAME_THREE
  177. } RegressFooEnumFullname;
  178. typedef enum
  179. {
  180. REGRESS_FOO_ADDRESS_INVALID,
  181. REGRESS_FOO_ADDRESS_IPV4,
  182. REGRESS_FOO_ADDRESS_IPV6
  183. } RegressFooAddressType;
  184. typedef struct _RegressFooBoxed RegressFooBoxed;
  185. _GI_TEST_EXTERN
  186. GType regress_foo_boxed_get_type (void) G_GNUC_CONST;
  187. _GI_TEST_EXTERN
  188. RegressFooBoxed* regress_foo_boxed_new (void);
  189. _GI_TEST_EXTERN
  190. void regress_foo_boxed_method (RegressFooBoxed* boxed);
  191. /* This one tests capitalization handling with respect to DBus */
  192. typedef struct _RegressFooDBusData RegressFooDBusData;
  193. _GI_TEST_EXTERN
  194. GType regress_foo_dbus_data_get_type (void) G_GNUC_CONST;
  195. _GI_TEST_EXTERN
  196. void regress_foo_dbus_data_method (RegressFooDBusData* dbusdata);
  197. /* FIXME: Scanner does not support this yet
  198. _GI_TEST_EXTERN
  199. const char *REGRESS_FOO_CONSTANT_STR = "regress_foo-constant-str";
  200. _GI_TEST_EXTERN
  201. const int REGRESS_FOO_CONSTANT_INT = 10;
  202. _GI_TEST_EXTERN
  203. const float REGRESS_FOO_CONSTANT_FLOAT = 10;
  204. */
  205. /* Callback */
  206. typedef gboolean (* RegressFooCallback) (RegressFooObject *regress_foo, gboolean b, gpointer data);
  207. /* Invalid comments, should be ignored */
  208. /* @ */
  209. /* @: */
  210. typedef struct _RegressFooStruct RegressFooStruct;
  211. typedef struct _RegressFooStructPrivate RegressFooStructPrivate;
  212. struct _RegressFooStruct
  213. {
  214. RegressFooStructPrivate *priv;
  215. int member;
  216. };
  217. typedef struct _RegressFooRectangle RegressFooRectangle;
  218. struct _RegressFooRectangle
  219. {
  220. gint x;
  221. gint y;
  222. gint width;
  223. gint height;
  224. };
  225. _GI_TEST_EXTERN
  226. void
  227. regress_foo_method_external_references (UtilityObject *object,
  228. UtilityEnumType e,
  229. UtilityFlagType f,
  230. UtilityStruct s);
  231. _GI_TEST_EXTERN
  232. void regress_foo_rectangle_add(RegressFooRectangle *r1, const RegressFooRectangle *r2);
  233. _GI_TEST_EXTERN
  234. RegressFooRectangle * regress_foo_rectangle_new (int x, int y, int width, int height);
  235. typedef struct _RegressFooEventAny RegressFooEventAny;
  236. typedef struct _RegressFooEventExpose RegressFooEventExpose;
  237. typedef union _RegressFooEvent RegressFooEvent;
  238. struct _RegressFooEventAny
  239. {
  240. gint8 send_event;
  241. };
  242. struct _RegressFooEventExpose
  243. {
  244. gint8 send_event;
  245. gint count;
  246. };
  247. union _RegressFooEvent
  248. {
  249. int type;
  250. RegressFooEventAny any;
  251. RegressFooEventExpose expose;
  252. };
  253. typedef void RegressFooXEvent;
  254. /* And now some boxed variants */
  255. typedef struct _RegressFooBRect RegressFooBRect;
  256. struct _RegressFooBRect
  257. {
  258. double x;
  259. double y;
  260. };
  261. _GI_TEST_EXTERN
  262. GType regress_foo_brect_get_type (void);
  263. _GI_TEST_EXTERN
  264. RegressFooBRect *regress_foo_brect_new (double x, double y);
  265. _GI_TEST_EXTERN
  266. void regress_foo_brect_add (RegressFooBRect *b1, RegressFooBRect *b2);
  267. typedef union _RegressFooBUnion RegressFooBUnion;
  268. union _RegressFooBUnion
  269. {
  270. int type;
  271. double v;
  272. RegressFooBRect *rect;
  273. };
  274. typedef union _RegressFooUnion RegressFooUnion;
  275. union _RegressFooUnion
  276. {
  277. int regress_foo;
  278. };
  279. typedef struct _RegressFooUtilityStruct RegressFooUtilityStruct;
  280. struct _RegressFooUtilityStruct
  281. {
  282. UtilityStruct bar;
  283. };
  284. typedef struct _RegressFooThingWithArray RegressFooThingWithArray;
  285. struct _RegressFooThingWithArray
  286. {
  287. int x;
  288. int y;
  289. char lines[80];
  290. guchar *data;
  291. } ;
  292. _GI_TEST_EXTERN
  293. RegressFooBUnion *regress_foo_bunion_new (void);
  294. _GI_TEST_EXTERN
  295. GType regress_foo_bunion_get_type (void);
  296. _GI_TEST_EXTERN
  297. int regress_foo_bunion_get_contained_type (RegressFooBUnion *bunion);
  298. _GI_TEST_EXTERN
  299. void regress_foo_test_unsigned_qualifier (unsigned int unsigned_param);
  300. _GI_TEST_EXTERN
  301. void regress_foo_test_unsigned_type (unsigned unsigned_param);
  302. _GI_TEST_EXTERN
  303. void regress_foo_test_string_array (char **array);
  304. _GI_TEST_EXTERN
  305. void regress_foo_test_string_array_with_g (gchar **array);
  306. _GI_TEST_EXTERN
  307. GArray *regress_foo_test_array (void);
  308. _GI_TEST_EXTERN
  309. const char * regress_foo_test_const_char_retval (void);
  310. _GI_TEST_EXTERN
  311. const RegressFooStruct * regress_foo_test_const_struct_retval (void);
  312. _GI_TEST_EXTERN
  313. void regress_foo_test_const_char_param (const char * param);
  314. _GI_TEST_EXTERN
  315. void regress_foo_test_const_struct_param (const RegressFooStruct * param);
  316. typedef void (*RegressFooVarargsCallback) (const char * param, ...);
  317. _GI_TEST_EXTERN
  318. void regress_foo_test_varargs_callback (gint i, RegressFooVarargsCallback callback);
  319. _GI_TEST_EXTERN
  320. void regress_foo_test_varargs_callback2 (RegressFooVarargsCallback callback);
  321. _GI_TEST_EXTERN
  322. void regress_foo_test_varargs_callback3 (RegressFooVarargsCallback callback,
  323. RegressFooVarargsCallback callback2);
  324. /* Make sure callbacks get the right scope by default */
  325. _GI_TEST_EXTERN
  326. void regress_foo_async_ready_callback(GCancellable *cancellable,
  327. GAsyncReadyCallback callback,
  328. gpointer user_data);
  329. _GI_TEST_EXTERN
  330. void regress_foo_destroy_notify_callback(RegressFooCallback callback,
  331. gpointer data,
  332. GDestroyNotify destroy);
  333. typedef enum {
  334. REGRESS_FOO_ERROR_GOOD,
  335. REGRESS_FOO_ERROR_BAD,
  336. REGRESS_FOO_ERROR_UGLY
  337. } RegressFooError;
  338. _GI_TEST_EXTERN
  339. GType regress_foo_error_get_type (void);
  340. _GI_TEST_EXTERN
  341. GQuark regress_foo_error_quark (void);
  342. typedef enum
  343. {
  344. REGRESS_FOO_LAYER_DESKTOP = 0,
  345. REGRESS_FOO_LAYER_BOTTOM = 1,
  346. REGRESS_FOO_LAYER_NORMAL = 2,
  347. REGRESS_FOO_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
  348. REGRESS_FOO_LAYER_DOCK = 4,
  349. REGRESS_FOO_LAYER_FULLSCREEN = 5,
  350. REGRESS_FOO_LAYER_FOCUSED_WINDOW = 6,
  351. REGRESS_FOO_LAYER_OVERRIDE_REDIRECT = 7,
  352. REGRESS_FOO_LAYER_LAST = 8
  353. } RegressFooStackLayer;
  354. typedef enum
  355. {
  356. REGRESS_FOO_SOME_SINGLE_ENUM
  357. } RegressFooASingle;
  358. /* Should be skipped */
  359. _GI_TEST_EXTERN
  360. void regress_foo_some_variant (guint x, va_list args);
  361. _GI_TEST_EXTERN
  362. void regress_foo_some_variant_ptr (guint x, va_list *args);
  363. /**
  364. * RegressFooSkippable: (skip)
  365. * @REGRESS_FOO_SKIPPABLE_ONE: a skippable enum value
  366. * @REGRESS_FOO_SKIPPABLE_TWO: another skippable enum value
  367. *
  368. * Some type that is only interesting from C and should not be
  369. * exposed to language bindings.
  370. */
  371. typedef enum {
  372. REGRESS_FOO_SKIPPABLE_ONE,
  373. REGRESS_FOO_SKIPPABLE_TWO
  374. } RegressFooSkippable;
  375. void regress_foo_skip_me (RegressFooSkippable fs);
  376. typedef struct _RegressFooForeignStruct RegressFooForeignStruct;
  377. struct _RegressFooForeignStruct
  378. {
  379. int regress_foo;
  380. };
  381. _GI_TEST_EXTERN
  382. RegressFooForeignStruct* regress_foo_foreign_struct_new (void);
  383. _GI_TEST_EXTERN
  384. RegressFooForeignStruct* regress_foo_foreign_struct_copy (RegressFooForeignStruct *original);
  385. /* This one should be a global, not a method on UtilityObject since
  386. * it's a separate namespace.
  387. */
  388. _GI_TEST_EXTERN
  389. void regress_foo_object_a_global_method (UtilityObject *obj);
  390. _GI_TEST_EXTERN
  391. RegressFooOtherObject * regress_foo_object_append_new_stack_layer (RegressFooObject *obj, int x);
  392. #endif /* __REGRESS_FOO_OBJECT_H__ */