summaryrefslogtreecommitdiff
path: root/tests/scanner/annotation.h
blob: 92c0b6bd55f38c048ba207848bb4d75e01aee667 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
#ifndef __REGRESS_ANNOTATION_OBJECT_H__
#define __REGRESS_ANNOTATION_OBJECT_H__

#include "gitestmacros.h"

#include <glib-object.h>

typedef enum /*< flags,prefix=ANN >*/
{
  ANN_FLAG_FOO = 1,
  ANN_FLAG_BAR = 2
} RegressAnnotationBitfield;

/**
 * RegressAnnotationCallback:
 * @in: (in) (transfer none): array of ints
 *
 * This is a callback.
 * Return value: (transfer none): array of ints
 */
typedef const gint* (*RegressAnnotationCallback) (const gint *in);

/**
 * RegressAnnotationListCallback:
 * @in: (in) (transfer none) (element-type utf8): list of strings
 *
 * This is a callback taking a list.
 * Return value: (transfer container) (element-type utf8): list of strings
 */
typedef GList* (*RegressAnnotationListCallback) (GList *in);

/**
 * RegressAnnotationNotifyFunc:
 * @data: (closure): The user data
 *
 * This is a callback with a 'closure' argument that is not named
 * 'user_data' and hence has to be annotated.
 */
typedef void (*RegressAnnotationNotifyFunc) (gpointer data);

/**
 * RegressAnnotationObject: (attributes org.example.Test=cows)
 *
 * This is an object used to test annotations.
 */
typedef struct _RegressAnnotationObject          RegressAnnotationObject;
typedef struct _RegressAnnotationObjectClass     RegressAnnotationObjectClass;

typedef void (*RegressAnnotationForeachFunc) (RegressAnnotationObject *object,
                                       const char *item,
                                       gpointer user_data);

struct _RegressAnnotationObject
{
  GObject parent_instance;
};

struct _RegressAnnotationObjectClass
{
  GObjectClass parent_class;
};

_GI_TEST_EXTERN
GType    regress_annotation_object_get_type (void);

_GI_TEST_EXTERN
gint     regress_annotation_object_method       (RegressAnnotationObject *object);

_GI_TEST_EXTERN
gint     regress_annotation_object_out          (RegressAnnotationObject *object,
					 int              *outarg);

_GI_TEST_EXTERN
GObject* regress_annotation_object_create_object(RegressAnnotationObject *object);

_GI_TEST_EXTERN
GObject* regress_annotation_object_allow_none   (RegressAnnotationObject *object,
					 const gchar      *somearg);

_GI_TEST_EXTERN
GObject* regress_annotation_object_notrans      (RegressAnnotationObject *object);

_GI_TEST_EXTERN
gint     regress_annotation_object_inout        (RegressAnnotationObject *object,
					 int              *inoutarg);

_GI_TEST_EXTERN
gint     regress_annotation_object_inout2       (RegressAnnotationObject *object,
					 int              *inoutarg);

_GI_TEST_EXTERN
gint     regress_annotation_object_inout3       (RegressAnnotationObject *object,
					 int              *inoutarg);

_GI_TEST_EXTERN
gint     regress_annotation_object_in           (RegressAnnotationObject *object,
					 int              *inarg);

_GI_TEST_EXTERN
gint     regress_annotation_object_calleeowns   (RegressAnnotationObject *object,
					 GObject          **toown);

_GI_TEST_EXTERN
gint     regress_annotation_object_calleesowns  (RegressAnnotationObject *object,
					 GObject          **toown1,
					 GObject          **toown2);

_GI_TEST_EXTERN
GList*   regress_annotation_object_get_strings  (RegressAnnotationObject *object);

_GI_TEST_EXTERN
GHashTable*regress_annotation_object_get_hash   (RegressAnnotationObject *object);

_GI_TEST_EXTERN
void     regress_annotation_object_with_voidp   (RegressAnnotationObject *object,
					 void             *data);

_GI_TEST_EXTERN
GSList*  regress_annotation_object_get_objects  (RegressAnnotationObject *object);


_GI_TEST_EXTERN
void     regress_annotation_object_use_buffer   (RegressAnnotationObject *object,
					 guchar           *bytes);


_GI_TEST_EXTERN
void     regress_annotation_object_compute_sum  (RegressAnnotationObject *object,
					 int              *nums);


_GI_TEST_EXTERN
void     regress_annotation_object_compute_sum_n(RegressAnnotationObject *object,
					 int              *nums,
					 int               n_nums);

_GI_TEST_EXTERN
void     regress_annotation_object_compute_sum_nz(RegressAnnotationObject *object,
                                          int             *nums,
                                          int              n_nums);

_GI_TEST_EXTERN
void     regress_annotation_object_parse_args   (RegressAnnotationObject *object,
                                         int              *argc,
                                         char           ***argv);

_GI_TEST_EXTERN
gboolean regress_annotation_object_string_out   (RegressAnnotationObject *object,
                                         char            **str_out);

_GI_TEST_EXTERN
void     regress_annotation_object_foreach      (RegressAnnotationObject *object,
                                         RegressAnnotationForeachFunc func,
                                         gpointer user_data);


_GI_TEST_EXTERN
void     regress_annotation_object_set_data     (RegressAnnotationObject *object,
                                         const guchar     *data,
                                         gsize             length);

_GI_TEST_EXTERN
void     regress_annotation_object_set_data2    (RegressAnnotationObject *object,
                                         const gchar      *data,
                                         gsize             length);

_GI_TEST_EXTERN
void     regress_annotation_object_set_data3    (RegressAnnotationObject *object,
                                         gpointer          data,
                                         gsize             length);


_GI_TEST_EXTERN
GObject* regress_annotation_object_do_not_use   (RegressAnnotationObject *object);

_GI_TEST_EXTERN
void     regress_annotation_object_watch        (RegressAnnotationObject *object,
                                         RegressAnnotationForeachFunc func,
                                         gpointer user_data);

_GI_TEST_EXTERN
void     regress_annotation_object_watch_full   (RegressAnnotationObject *object,
                                         RegressAnnotationForeachFunc func,
                                         gpointer user_data,
                                         GDestroyNotify destroy);

_GI_TEST_EXTERN
void     regress_annotation_object_hidden_self  (gpointer object);


_GI_TEST_EXTERN
void     regress_annotation_init                (int              *argc, 
					 char           ***argv);

_GI_TEST_EXTERN
char **  regress_annotation_return_array        (int             *length);

_GI_TEST_EXTERN
void     regress_annotation_versioned           (void);

_GI_TEST_EXTERN
char **  regress_annotation_string_zero_terminated (void);

_GI_TEST_EXTERN
void     regress_annotation_string_zero_terminated_out (char ***out);


_GI_TEST_EXTERN
void     regress_annotation_string_array_length (guint n_properties, const gchar * const properties[]);


_GI_TEST_EXTERN
void     regress_annotation_object_extra_annos (RegressAnnotationObject *object);


_GI_TEST_EXTERN
void     regress_annotation_custom_destroy (RegressAnnotationCallback callback,
                                    RegressAnnotationNotifyFunc destroy,
                                    gpointer data);

_GI_TEST_EXTERN
char *   regress_annotation_get_source_file (void);

_GI_TEST_EXTERN
void     regress_annotation_set_source_file (const char *fname);


_GI_TEST_EXTERN
gint     regress_annotation_attribute_func (RegressAnnotationObject *object,
                                    const gchar      *data);


_GI_TEST_EXTERN
void     regress_annotation_invalid_regress_annotation (int foo);

/**
 * RegressAnnotationStruct:
 *
 * This is a test of an array of object in an field of a struct.
 */
struct RegressAnnotationStruct
{
  RegressAnnotationObject *objects[10];
};

/**
 * RegressAnnotationFields:
 * @field1: Some documentation
 * @arr: (array length=len): an array of length @len
 * @len: the length of array
 *
 * This is a struct for testing field documentation and annotations
 */
struct RegressAnnotationFields
{
  int field1;
  guchar *arr;
  gulong len;
};


_GI_TEST_EXTERN
void    regress_annotation_ptr_array (GPtrArray *array);


_GI_TEST_EXTERN
GObject  * regress_annotation_test_parsing_bug630862 (void);


_GI_TEST_EXTERN
void regress_annotation_space_after_comment_bug631690 (void);


_GI_TEST_EXTERN
gchar* regress_annotation_return_filename (void);


_GI_TEST_EXTERN
GObject * regress_annotation_transfer_floating (GObject *object);

/* This one we can handle properly */
#define REGRESS_ANNOTATION_CALCULATED_DEFINE (10 * 10)

/**
 * REGRESS_ANNOTATION_CALCULATED_LARGE: (value 10000000000UL)
 *
 * Constant to define a calculated large value
 *
 * Since: 1.4
 */
#define REGRESS_ANNOTATION_CALCULATED_LARGE (1000 * G_GINT64_CONSTANT (10000000))

/**
 * REGRESS_ANNOTATION_CALCULATED_LARGE_DIV: (value 1000000UL)
 *
 * Constant to define a calculated large value
 */
#define REGRESS_ANNOTATION_CALCULATED_LARGE_DIV (1000 / G_GINT64_CONSTANT (10000000))

#endif /* __REGRESS_ANNOTATION_OBJECT_H__ */