2.35.1
[platform/upstream/atk.git] / atk / atkversion.h.in
1 /* ATK -  Accessibility Toolkit
2  *
3  * Copyright (C) 2012 Igalia, S.L.
4  * Copyright (C) 2014 Chun-wei Fan
5  *
6  * Author: Alejandro PiƱeiro Iglesias <apinheiro@igalia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Library General Public
10  * License as published by the Free Software Foundation; either
11  * version 2 of the License, or (at your option) any later version.
12  *
13  * This library is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Library General Public License for more details.
17  *
18  * You should have received a copy of the GNU Library General Public
19  * License along with this library; if not, write to the
20  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
21  * Boston, MA 02111-1307, USA.
22  */
23
24 #if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION)
25 #error "Only <atk/atk.h> can be included directly."
26 #endif
27
28 #ifndef __ATK_VERSION_H__
29 #define __ATK_VERSION_H__
30
31 #include <glib.h>
32
33 /**
34  * ATK_MAJOR_VERSION:
35  *
36  * Like atk_get_major_version(), but from the headers used at
37  * application compile time, rather than from the library linked
38  * against at application run time.
39  *
40  * Since: 2.7.4
41  */
42 #define ATK_MAJOR_VERSION (@ATK_MAJOR_VERSION@)
43
44 /**
45  * ATK_MINOR_VERSION:
46  *
47  * Like atk_get_minor_version(), but from the headers used at
48  * application compile time, rather than from the library linked
49  * against at application run time.
50  *
51  * Since: 2.7.4
52  */
53 #define ATK_MINOR_VERSION (@ATK_MINOR_VERSION@)
54
55 /**
56  * ATK_MICRO_VERSION:
57  *
58  * Like atk_get_micro_version(), but from the headers used at
59  * application compile time, rather than from the library linked
60  * against at application run time.
61  *
62  * Since: 2.7.4
63  */
64 #define ATK_MICRO_VERSION (@ATK_MICRO_VERSION@)
65
66 /**
67  * ATK_BINARY_AGE:
68  *
69  * Like atk_get_binary_age(), but from the headers used at
70  * application compile time, rather than from the library linked
71  * against at application run time.
72  *
73  * Since: 2.7.4
74  */
75 #define ATK_BINARY_AGE    (@ATK_BINARY_AGE@)
76
77 /**
78  * ATK_INTERFACE_AGE:
79  *
80  * Like atk_get_interface_age(), but from the headers used at
81  * application compile time, rather than from the library linked
82  * against at application run time.
83  *
84  * Since: 2.7.4
85  */
86 #define ATK_INTERFACE_AGE (@ATK_INTERFACE_AGE@)
87
88 /**
89  * ATK_CHECK_VERSION:
90  * @major: major version (e.g. 1 for version 1.2.5)
91  * @minor: minor version (e.g. 2 for version 1.2.5)
92  * @micro: micro version (e.g. 5 for version 1.2.5)
93  *
94  * Returns %TRUE if the version of the ATK header files is the same as
95  * or newer than the passed-in version.
96  *
97  * Since: 2.7.4
98  */
99 #define ATK_CHECK_VERSION(major,minor,micro)                          \
100     (ATK_MAJOR_VERSION > (major) ||                                   \
101      (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION > (minor)) || \
102      (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION == (minor) && \
103       ATK_MICRO_VERSION >= (micro)))
104
105 #ifndef _ATK_EXTERN
106 #define _ATK_EXTERN extern
107 #endif
108
109 /**
110  * ATK_VERSION_2_2:
111  *
112  * A macro that evaluates to the 2.2 version of ATK, in a format
113  * that can be used by the C pre-processor.
114  *
115  * Since: 2.14
116  */
117 #define ATK_VERSION_2_2       (G_ENCODE_VERSION (2, 2))
118
119 /**
120  * ATK_VERSION_2_4:
121  *
122  * A macro that evaluates to the 2.4 version of ATK, in a format
123  * that can be used by the C pre-processor.
124  *
125  * Since: 2.14
126  */
127 #define ATK_VERSION_2_4       (G_ENCODE_VERSION (2, 4))
128
129 /**
130  * ATK_VERSION_2_6:
131  *
132  * A macro that evaluates to the 2.6 version of ATK, in a format
133  * that can be used by the C pre-processor.
134  *
135  * Since: 2.14
136  */
137 #define ATK_VERSION_2_6       (G_ENCODE_VERSION (2, 6))
138
139 /**
140  * ATK_VERSION_2_8:
141  *
142  * A macro that evaluates to the 2.8 version of ATK, in a format
143  * that can be used by the C pre-processor.
144  *
145  * Since: 2.14
146  */
147 #define ATK_VERSION_2_8       (G_ENCODE_VERSION (2, 8))
148
149 /**
150  * ATK_VERSION_2_10:
151  *
152  * A macro that evaluates to the 2.10 version of ATK, in a format
153  * that can be used by the C pre-processor.
154  *
155  * Since: 2.14
156  */
157
158 #define ATK_VERSION_2_10       (G_ENCODE_VERSION (2, 10))
159 /**
160  * ATK_VERSION_2_12:
161  *
162  * A macro that evaluates to the 2.12 version of ATK, in a format
163  * that can be used by the C pre-processor.
164  *
165  * Since: 2.14
166  */
167 #define ATK_VERSION_2_12       (G_ENCODE_VERSION (2, 12))
168
169 /**
170  * ATK_VERSION_2_14:
171  *
172  * A macro that evaluates to the 2.14 version of ATK, in a format
173  * that can be used by the C pre-processor.
174  *
175  * Since: 2.14
176  */
177 #define ATK_VERSION_2_14       (G_ENCODE_VERSION (2, 14))
178
179 /**
180  * ATK_VERSION_2_30:
181  *
182  * A macro that evaluates to the 2.30 version of ATK, in a format
183  * that can be used by the C pre-processor.
184  *
185  * Since: 2.30
186  */
187 #define ATK_VERSION_2_30       (G_ENCODE_VERSION (2, 30))
188
189 /**
190  * ATK_VERSION_2_36:
191  *
192  * A macro that evaluates to the 2.36 version of ATK, in a format
193  * that can be used by the C pre-processor.
194  *
195  * Since: 2.36
196  */
197 #define ATK_VERSION_2_36       (G_ENCODE_VERSION (2, 36))
198
199 /* evaluates to the current stable version; for development cycles,
200  * this means the next stable target
201  */
202 #if (ATK_MINOR_VERSION % 2)
203 #define ATK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION + 1))
204 #else
205 #define ATK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION))
206 #endif
207
208 /* evaluates to the previous stable version */
209 #if (ATK_MINOR_VERSION % 2)
210 #define ATK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION - 1))
211 #else
212 #define ATK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION - 2))
213 #endif
214
215 /**
216  * ATK_VERSION_MIN_REQUIRED:
217  *
218  * A macro that should be defined by the user prior to including
219  * the atk/atk.h header.
220  * The definition should be one of the predefined ATK version
221  * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
222  *
223  * This macro defines the earliest version of ATK that the package is
224  * required to be able to compile against.
225  *
226  * If the compiler is configured to warn about the use of deprecated
227  * functions, then using functions that were deprecated in version
228  * %ATK_VERSION_MIN_REQUIRED or earlier will cause warnings (but
229  * using functions deprecated in later releases will not).
230  *
231  * Since: 2.14
232  */
233 /* If the package sets ATK_VERSION_MIN_REQUIRED to some future
234  * ATK_VERSION_X_Y value that we don't know about, it will compare as
235  * 0 in preprocessor tests.
236  */
237 #ifndef ATK_VERSION_MIN_REQUIRED
238 # define ATK_VERSION_MIN_REQUIRED      (ATK_VERSION_CUR_STABLE)
239 #elif ATK_VERSION_MIN_REQUIRED == 0
240 # undef  ATK_VERSION_MIN_REQUIRED
241 # define ATK_VERSION_MIN_REQUIRED      (ATK_VERSION_CUR_STABLE + 2)
242 #endif
243
244 /**
245  * ATK_VERSION_MAX_ALLOWED:
246  *
247  * A macro that should be defined by the user prior to including
248  * the atk/atk.h header.
249  * The definition should be one of the predefined ATK version
250  * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
251  *
252  * This macro defines the latest version of the ATK API that the
253  * package is allowed to make use of.
254  *
255  * If the compiler is configured to warn about the use of deprecated
256  * functions, then using functions added after version
257  * %ATK_VERSION_MAX_ALLOWED will cause warnings.
258  *
259  * Unless you are using ATK_CHECK_VERSION() or the like to compile
260  * different code depending on the ATK version, then this should be
261  * set to the same value as %ATK_VERSION_MIN_REQUIRED.
262  *
263  * Since: 2.14
264  */
265 #if !defined (ATK_VERSION_MAX_ALLOWED) || (ATK_VERSION_MAX_ALLOWED == 0)
266 # undef ATK_VERSION_MAX_ALLOWED
267 # define ATK_VERSION_MAX_ALLOWED      (ATK_VERSION_CUR_STABLE)
268 #endif
269
270 /* sanity checks */
271 #if ATK_VERSION_MIN_REQUIRED > ATK_VERSION_CUR_STABLE
272 #error "ATK_VERSION_MIN_REQUIRED must be <= ATK_VERSION_CUR_STABLE"
273 #endif
274 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_MIN_REQUIRED
275 #error "ATK_VERSION_MAX_ALLOWED must be >= ATK_VERSION_MIN_REQUIRED"
276 #endif
277 #if ATK_VERSION_MIN_REQUIRED < ATK_VERSION_2_2
278 #error "ATK_VERSION_MIN_REQUIRED must be >= ATK_VERSION_2_2"
279 #endif
280
281 /* these macros are used to mark deprecated functions, and thus have to be
282  * exposed in a public header.
283  *
284  * do *not* use them in other libraries depending on Atk: use G_DEPRECATED
285  * and G_DEPRECATED_FOR, or use your own wrappers around them.
286  */
287 #ifdef ATK_DISABLE_DEPRECATION_WARNINGS
288 #define ATK_DEPRECATED _ATK_EXTERN
289 #define ATK_DEPRECATED_FOR(f) _ATK_EXTERN
290 #define ATK_UNAVAILABLE(maj,min) _ATK_EXTERN
291 #else
292 #define ATK_DEPRECATED G_DEPRECATED _ATK_EXTERN
293 #define ATK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _ATK_EXTERN
294 #define ATK_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _ATK_EXTERN
295 #endif
296
297 #define ATK_AVAILABLE_IN_ALL _ATK_EXTERN
298
299 /* XXX: Every new stable minor release should add a set of macros here */
300
301 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_2
302 # define ATK_DEPRECATED_IN_2_2                ATK_DEPRECATED
303 # define ATK_DEPRECATED_IN_2_2_FOR(f)         ATK_DEPRECATED_FOR(f)
304 #else
305 # define ATK_DEPRECATED_IN_2_2                _ATK_EXTERN
306 # define ATK_DEPRECATED_IN_2_2_FOR(f)         _ATK_EXTERN
307 #endif
308
309 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_2
310 # define ATK_AVAILABLE_IN_2_2                 ATK_UNAVAILABLE(2, 2)
311 #else
312 # define ATK_AVAILABLE_IN_2_2                 _ATK_EXTERN
313 #endif
314
315 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_4
316 # define ATK_DEPRECATED_IN_2_4                ATK_DEPRECATED
317 # define ATK_DEPRECATED_IN_2_4_FOR(f)         ATK_DEPRECATED_FOR(f)
318 #else
319 # define ATK_DEPRECATED_IN_2_4                _ATK_EXTERN
320 # define ATK_DEPRECATED_IN_2_4_FOR(f)         _ATK_EXTERN
321 #endif
322
323 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_4
324 # define ATK_AVAILABLE_IN_2_4                 ATK_UNAVAILABLE(2, 4)
325 #else
326 # define ATK_AVAILABLE_IN_2_4                 _ATK_EXTERN
327 #endif
328
329 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_6
330 # define ATK_DEPRECATED_IN_2_6                ATK_DEPRECATED
331 # define ATK_DEPRECATED_IN_2_6_FOR(f)         ATK_DEPRECATED_FOR(f)
332 #else
333 # define ATK_DEPRECATED_IN_2_6                _ATK_EXTERN
334 # define ATK_DEPRECATED_IN_2_6_FOR(f)         _ATK_EXTERN
335 #endif
336
337 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_6
338 # define ATK_AVAILABLE_IN_2_6                 ATK_UNAVAILABLE(2, 6)
339 #else
340 # define ATK_AVAILABLE_IN_2_6                 _ATK_EXTERN
341 #endif
342
343 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_8
344 # define ATK_DEPRECATED_IN_2_8                ATK_DEPRECATED
345 # define ATK_DEPRECATED_IN_2_8_FOR(f)         ATK_DEPRECATED_FOR(f)
346 #else
347 # define ATK_DEPRECATED_IN_2_8                _ATK_EXTERN
348 # define ATK_DEPRECATED_IN_2_8_FOR(f)         _ATK_EXTERN
349 #endif
350
351 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_8
352 # define ATK_AVAILABLE_IN_2_8                 ATK_UNAVAILABLE(2, 8)
353 #else
354 # define ATK_AVAILABLE_IN_2_8                 _ATK_EXTERN
355 #endif
356
357 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_10
358 # define ATK_DEPRECATED_IN_2_10                ATK_DEPRECATED
359 # define ATK_DEPRECATED_IN_2_10_FOR(f)         ATK_DEPRECATED_FOR(f)
360 #else
361 # define ATK_DEPRECATED_IN_2_10                _ATK_EXTERN
362 # define ATK_DEPRECATED_IN_2_10_FOR(f)         _ATK_EXTERN
363 #endif
364
365 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_10
366 # define ATK_AVAILABLE_IN_2_10                 ATK_UNAVAILABLE(2, 10)
367 #else
368 # define ATK_AVAILABLE_IN_2_10                 _ATK_EXTERN
369 #endif
370
371 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_12
372 # define ATK_DEPRECATED_IN_2_12                ATK_DEPRECATED
373 # define ATK_DEPRECATED_IN_2_12_FOR(f)         ATK_DEPRECATED_FOR(f)
374 #else
375 # define ATK_DEPRECATED_IN_2_12                _ATK_EXTERN
376 # define ATK_DEPRECATED_IN_2_12_FOR(f)         _ATK_EXTERN
377 #endif
378
379 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_12
380 # define ATK_AVAILABLE_IN_2_12                 ATK_UNAVAILABLE(2, 12)
381 #else
382 # define ATK_AVAILABLE_IN_2_12                 _ATK_EXTERN
383 #endif
384
385 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_14
386 # define ATK_DEPRECATED_IN_2_14                ATK_DEPRECATED
387 # define ATK_DEPRECATED_IN_2_14_FOR(f)         ATK_DEPRECATED_FOR(f)
388 #else
389 # define ATK_DEPRECATED_IN_2_14                _ATK_EXTERN
390 # define ATK_DEPRECATED_IN_2_14_FOR(f)         _ATK_EXTERN
391 #endif
392
393 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_14
394 # define ATK_AVAILABLE_IN_2_14                 ATK_UNAVAILABLE(2, 14)
395 #else
396 # define ATK_AVAILABLE_IN_2_14                 _ATK_EXTERN
397 #endif
398
399 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_30
400 # define ATK_DEPRECATED_IN_2_30                ATK_DEPRECATED
401 # define ATK_DEPRECATED_IN_2_30_FOR(f)         ATK_DEPRECATED_FOR(f)
402 #else
403 # define ATK_DEPRECATED_IN_2_30                _ATK_EXTERN
404 # define ATK_DEPRECATED_IN_2_30_FOR(f)         _ATK_EXTERN
405 #endif
406
407 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_30
408 # define ATK_AVAILABLE_IN_2_30                 ATK_UNAVAILABLE(2, 30)
409 #else
410 # define ATK_AVAILABLE_IN_2_30                 _ATK_EXTERN
411 #endif
412
413 #if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_36
414 # define ATK_DEPRECATED_IN_2_36                ATK_DEPRECATED
415 # define ATK_DEPRECATED_IN_2_36_FOR(f)         ATK_DEPRECATED_FOR(f)
416 #else
417 # define ATK_DEPRECATED_IN_2_36                _ATK_EXTERN
418 # define ATK_DEPRECATED_IN_2_36_FOR(f)         _ATK_EXTERN
419 #endif
420
421 #if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_36
422 # define ATK_AVAILABLE_IN_2_36                 ATK_UNAVAILABLE(2, 36)
423 #else
424 # define ATK_AVAILABLE_IN_2_36                 _ATK_EXTERN
425 #endif
426
427 ATK_AVAILABLE_IN_2_8
428 guint atk_get_major_version (void) G_GNUC_CONST;
429 ATK_AVAILABLE_IN_2_8
430 guint atk_get_minor_version (void) G_GNUC_CONST;
431 ATK_AVAILABLE_IN_2_8
432 guint atk_get_micro_version (void) G_GNUC_CONST;
433 ATK_AVAILABLE_IN_2_8
434 guint atk_get_binary_age    (void) G_GNUC_CONST;
435 ATK_AVAILABLE_IN_2_8
436 guint atk_get_interface_age (void) G_GNUC_CONST;
437
438 #define atk_major_version atk_get_major_version ()
439 #define atk_minor_version atk_get_minor_version ()
440 #define atk_micro_version atk_get_micro_version ()
441 #define atk_binary_age atk_get_binary_age ()
442 #define atk_interface_age atk_get_interface_age ()
443
444 #endif /* __ATK_VERSION_H__ */