1 #ifndef __REGRESS_ANNOTATION_OBJECT_H__ 2 #define __REGRESS_ANNOTATION_OBJECT_H__ 3 4 #include "gitestmacros.h" 5 6 #include <glib-object.h> 7 8 typedef enum /*< flags,prefix=ANN >*/ 9 { 10 ANN_FLAG_FOO = 1, 11 ANN_FLAG_BAR = 2, 12 /** 13 * ANN_FLAG_FOOBAR: 14 * 15 * Since: 1.4 16 */ 17 ANN_FLAG_FOOBAR = 3, 18 } RegressAnnotationBitfield; 19 20 /** 21 * RegressAnnotationCallback: 22 * @in: (in) (transfer none): array of ints 23 * 24 * This is a callback. 25 * Return value: (transfer none): array of ints 26 */ 27 typedef const gint* (*RegressAnnotationCallback) (const gint *in); 28 29 /** 30 * RegressAnnotationListCallback: 31 * @in: (in) (transfer none) (element-type utf8): list of strings 32 * 33 * This is a callback taking a list. 34 * Return value: (transfer container) (element-type utf8): list of strings 35 */ 36 typedef GList* (*RegressAnnotationListCallback) (GList *in); 37 38 /** 39 * RegressAnnotationNotifyFunc: 40 * @data: (closure): The user data 41 * 42 * This is a callback with a 'closure' argument that is not named 43 * 'user_data' and hence has to be annotated. 44 */ 45 typedef void (*RegressAnnotationNotifyFunc) (gpointer data); 46 47 /** 48 * RegressAnnotationObject: (attributes org.example.Test=cows) 49 * 50 * This is an object used to test annotations. 51 */ 52 typedef struct _RegressAnnotationObject RegressAnnotationObject; 53 typedef struct _RegressAnnotationObjectClass RegressAnnotationObjectClass; 54 55 typedef void (*RegressAnnotationForeachFunc) (RegressAnnotationObject *object, 56 const char *item, 57 gpointer user_data); 58 59 struct _RegressAnnotationObject 60 { 61 GObject parent_instance; 62 }; 63 64 struct _RegressAnnotationObjectClass 65 { 66 GObjectClass parent_class; 67 }; 68 69 _GI_TEST_EXTERN 70 GType regress_annotation_object_get_type (void); 71 72 _GI_TEST_EXTERN 73 gint regress_annotation_object_method (RegressAnnotationObject *object); 74 75 _GI_TEST_EXTERN 76 gint regress_annotation_object_out (RegressAnnotationObject *object, 77 int *outarg); 78 79 _GI_TEST_EXTERN 80 GObject* regress_annotation_object_create_object(RegressAnnotationObject *object); 81 82 _GI_TEST_EXTERN 83 GObject* regress_annotation_object_allow_none (RegressAnnotationObject *object, 84 const gchar *somearg); 85 86 _GI_TEST_EXTERN 87 GObject* regress_annotation_object_notrans (RegressAnnotationObject *object); 88 89 _GI_TEST_EXTERN 90 gint regress_annotation_object_inout (RegressAnnotationObject *object, 91 int *inoutarg); 92 93 _GI_TEST_EXTERN 94 gint regress_annotation_object_inout2 (RegressAnnotationObject *object, 95 int *inoutarg); 96 97 _GI_TEST_EXTERN 98 gint regress_annotation_object_inout3 (RegressAnnotationObject *object, 99 int *inoutarg); 100 101 _GI_TEST_EXTERN 102 gint regress_annotation_object_in (RegressAnnotationObject *object, 103 int *inarg); 104 105 _GI_TEST_EXTERN 106 gint regress_annotation_object_calleeowns (RegressAnnotationObject *object, 107 GObject **toown); 108 109 _GI_TEST_EXTERN 110 gint regress_annotation_object_calleesowns (RegressAnnotationObject *object, 111 GObject **toown1, 112 GObject **toown2); 113 114 _GI_TEST_EXTERN 115 GList* regress_annotation_object_get_strings (RegressAnnotationObject *object); 116 117 _GI_TEST_EXTERN 118 GHashTable*regress_annotation_object_get_hash (RegressAnnotationObject *object); 119 120 _GI_TEST_EXTERN 121 void regress_annotation_object_with_voidp (RegressAnnotationObject *object, 122 void *data); 123 124 _GI_TEST_EXTERN 125 GSList* regress_annotation_object_get_objects (RegressAnnotationObject *object); 126 127 128 _GI_TEST_EXTERN 129 void regress_annotation_object_use_buffer (RegressAnnotationObject *object, 130 guchar *bytes); 131 132 133 _GI_TEST_EXTERN 134 void regress_annotation_object_compute_sum (RegressAnnotationObject *object, 135 int *nums); 136 137 138 _GI_TEST_EXTERN 139 void regress_annotation_object_compute_sum_n(RegressAnnotationObject *object, 140 int *nums, 141 int n_nums); 142 143 _GI_TEST_EXTERN 144 void regress_annotation_object_compute_sum_nz(RegressAnnotationObject *object, 145 int *nums, 146 int n_nums); 147 148 _GI_TEST_EXTERN 149 void regress_annotation_object_parse_args (RegressAnnotationObject *object, 150 int *argc, 151 char ***argv); 152 153 _GI_TEST_EXTERN 154 gboolean regress_annotation_object_string_out (RegressAnnotationObject *object, 155 char **str_out); 156 157 _GI_TEST_EXTERN 158 void regress_annotation_object_foreach (RegressAnnotationObject *object, 159 RegressAnnotationForeachFunc func, 160 gpointer user_data); 161 162 163 _GI_TEST_EXTERN 164 void regress_annotation_object_set_data (RegressAnnotationObject *object, 165 const guchar *data, 166 gsize length); 167 168 _GI_TEST_EXTERN 169 void regress_annotation_object_set_data2 (RegressAnnotationObject *object, 170 const gchar *data, 171 gsize length); 172 173 _GI_TEST_EXTERN 174 void regress_annotation_object_set_data3 (RegressAnnotationObject *object, 175 gpointer data, 176 gsize length); 177 178 179 _GI_TEST_EXTERN 180 GObject* regress_annotation_object_do_not_use (RegressAnnotationObject *object); 181 182 _GI_TEST_EXTERN 183 void regress_annotation_object_watch (RegressAnnotationObject *object, 184 RegressAnnotationForeachFunc func, 185 gpointer user_data); 186 187 _GI_TEST_EXTERN 188 void regress_annotation_object_watch_full (RegressAnnotationObject *object, 189 RegressAnnotationForeachFunc func, 190 gpointer user_data, 191 GDestroyNotify destroy); 192 193 _GI_TEST_EXTERN 194 void regress_annotation_object_hidden_self (gpointer object); 195 196 197 _GI_TEST_EXTERN 198 void regress_annotation_init (int *argc, 199 char ***argv); 200 201 _GI_TEST_EXTERN 202 char ** regress_annotation_return_array (int *length); 203 204 _GI_TEST_EXTERN 205 void regress_annotation_versioned (void); 206 207 _GI_TEST_EXTERN 208 char ** regress_annotation_string_zero_terminated (void); 209 210 _GI_TEST_EXTERN 211 void regress_annotation_string_zero_terminated_out (char ***out); 212 213 214 _GI_TEST_EXTERN 215 void regress_annotation_string_array_length (guint n_properties, const gchar * const properties[]); 216 217 218 _GI_TEST_EXTERN 219 void regress_annotation_object_extra_annos (RegressAnnotationObject *object); 220 221 222 _GI_TEST_EXTERN 223 void regress_annotation_custom_destroy (RegressAnnotationCallback callback, 224 RegressAnnotationNotifyFunc destroy, 225 gpointer data); 226 227 _GI_TEST_EXTERN 228 char * regress_annotation_get_source_file (void); 229 230 _GI_TEST_EXTERN 231 void regress_annotation_set_source_file (const char *fname); 232 233 234 _GI_TEST_EXTERN 235 gint regress_annotation_attribute_func (RegressAnnotationObject *object, 236 const gchar *data); 237 238 239 _GI_TEST_EXTERN 240 void regress_annotation_invalid_regress_annotation (int foo); 241 242 /** 243 * RegressAnnotationStruct: 244 * 245 * This is a test of an array of object in an field of a struct. 246 */ 247 struct RegressAnnotationStruct 248 { 249 RegressAnnotationObject *objects[10]; 250 }; 251 252 /** 253 * RegressAnnotationFields: 254 * @field1: Some documentation 255 * @arr: (array length=len): an array of length @len 256 * @len: the length of array 257 * 258 * This is a struct for testing field documentation and annotations 259 */ 260 struct RegressAnnotationFields 261 { 262 int field1; 263 guchar *arr; 264 gulong len; 265 /** 266 * RegressAnnotationFields.field4: 267 * 268 * A new field, breaking ABI is fun! 269 * 270 * Since: 1.4 271 */ 272 guint field4; 273 }; 274 275 _GI_TEST_EXTERN 276 void regress_annotation_ptr_array (GPtrArray *array); 277 278 279 _GI_TEST_EXTERN 280 GObject * regress_annotation_test_parsing_bug630862 (void); 281 282 283 _GI_TEST_EXTERN 284 void regress_annotation_space_after_comment_bug631690 (void); 285 286 287 _GI_TEST_EXTERN 288 gchar* regress_annotation_return_filename (void); 289 290 291 _GI_TEST_EXTERN 292 GObject * regress_annotation_transfer_floating (GObject *object); 293 294 /* This one we can handle properly */ 295 #define REGRESS_ANNOTATION_CALCULATED_DEFINE (10 * 10) 296 297 /** 298 * REGRESS_ANNOTATION_CALCULATED_LARGE: (value 10000000000UL) 299 * 300 * Constant to define a calculated large value 301 * 302 * Since: 1.4 303 */ 304 #define REGRESS_ANNOTATION_CALCULATED_LARGE (1000 * G_GINT64_CONSTANT (10000000)) 305 306 /** 307 * REGRESS_ANNOTATION_CALCULATED_LARGE_DIV: (value 1000000UL) 308 * 309 * Constant to define a calculated large value 310 */ 311 #define REGRESS_ANNOTATION_CALCULATED_LARGE_DIV (1000 / G_GINT64_CONSTANT (10000000)) 312 313 #endif /* __REGRESS_ANNOTATION_OBJECT_H__ */ 314 315