summaryrefslogtreecommitdiff
path: root/atk/atkversion.h.in
blob: bba9f494195d2f70289ddb55c12fa2eb87aee4ab (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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
/* ATK -  Accessibility Toolkit
 *
 * Copyright (C) 2012 Igalia, S.L.
 * Copyright (C) 2014 Chun-wei Fan
 *
 * Author: Alejandro PiƱeiro Iglesias <apinheiro@igalia.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */

#if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION)
#error "Only <atk/atk.h> can be included directly."
#endif

#ifndef __ATK_VERSION_H__
#define __ATK_VERSION_H__

#include <glib.h>

/**
 * ATK_MAJOR_VERSION:
 *
 * Like atk_get_major_version(), but from the headers used at
 * application compile time, rather than from the library linked
 * against at application run time.
 *
 * Since: 2.7.4
 */
#define ATK_MAJOR_VERSION (@ATK_MAJOR_VERSION@)

/**
 * ATK_MINOR_VERSION:
 *
 * Like atk_get_minor_version(), but from the headers used at
 * application compile time, rather than from the library linked
 * against at application run time.
 *
 * Since: 2.7.4
 */
#define ATK_MINOR_VERSION (@ATK_MINOR_VERSION@)

/**
 * ATK_MICRO_VERSION:
 *
 * Like atk_get_micro_version(), but from the headers used at
 * application compile time, rather than from the library linked
 * against at application run time.
 *
 * Since: 2.7.4
 */
#define ATK_MICRO_VERSION (@ATK_MICRO_VERSION@)

/**
 * ATK_BINARY_AGE:
 *
 * Like atk_get_binary_age(), but from the headers used at
 * application compile time, rather than from the library linked
 * against at application run time.
 *
 * Since: 2.7.4
 */
#define ATK_BINARY_AGE    (@ATK_BINARY_AGE@)

/**
 * ATK_INTERFACE_AGE:
 *
 * Like atk_get_interface_age(), but from the headers used at
 * application compile time, rather than from the library linked
 * against at application run time.
 *
 * Since: 2.7.4
 */
#define ATK_INTERFACE_AGE (@ATK_INTERFACE_AGE@)

/**
 * ATK_CHECK_VERSION:
 * @major: major version (e.g. 1 for version 1.2.5)
 * @minor: minor version (e.g. 2 for version 1.2.5)
 * @micro: micro version (e.g. 5 for version 1.2.5)
 *
 * Returns %TRUE if the version of the ATK header files is the same as
 * or newer than the passed-in version.
 *
 * Since: 2.7.4
 */
#define ATK_CHECK_VERSION(major,minor,micro)                          \
    (ATK_MAJOR_VERSION > (major) ||                                   \
     (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION > (minor)) || \
     (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION == (minor) && \
      ATK_MICRO_VERSION >= (micro)))

#ifndef _ATK_EXTERN
#define _ATK_EXTERN extern
#endif

/**
 * ATK_VERSION_2_2:
 *
 * A macro that evaluates to the 2.2 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_2       (G_ENCODE_VERSION (2, 2))

/**
 * ATK_VERSION_2_4:
 *
 * A macro that evaluates to the 2.4 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_4       (G_ENCODE_VERSION (2, 4))

/**
 * ATK_VERSION_2_6:
 *
 * A macro that evaluates to the 2.6 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_6       (G_ENCODE_VERSION (2, 6))

/**
 * ATK_VERSION_2_8:
 *
 * A macro that evaluates to the 2.8 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_8       (G_ENCODE_VERSION (2, 8))

/**
 * ATK_VERSION_2_10:
 *
 * A macro that evaluates to the 2.10 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */

#define ATK_VERSION_2_10       (G_ENCODE_VERSION (2, 10))
/**
 * ATK_VERSION_2_12:
 *
 * A macro that evaluates to the 2.12 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_12       (G_ENCODE_VERSION (2, 12))

/**
 * ATK_VERSION_2_14:
 *
 * A macro that evaluates to the 2.14 version of ATK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 2.14
 */
#define ATK_VERSION_2_14       (G_ENCODE_VERSION (2, 14))

/* evaluates to the current stable version; for development cycles,
 * this means the next stable target
 */
#if (ATK_MINOR_VERSION % 2)
#define ATK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION + 1))
#else
#define ATK_VERSION_CUR_STABLE         (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION))
#endif

/* evaluates to the previous stable version */
#if (ATK_MINOR_VERSION % 2)
#define ATK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION - 1))
#else
#define ATK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (ATK_MAJOR_VERSION, ATK_MINOR_VERSION - 2))
#endif

/**
 * ATK_VERSION_MIN_REQUIRED:
 *
 * A macro that should be defined by the user prior to including
 * the atk/atk.h header.
 * The definition should be one of the predefined ATK version
 * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
 *
 * This macro defines the earliest version of ATK that the package is
 * required to be able to compile against.
 *
 * If the compiler is configured to warn about the use of deprecated
 * functions, then using functions that were deprecated in version
 * %ATK_VERSION_MIN_REQUIRED or earlier will cause warnings (but
 * using functions deprecated in later releases will not).
 *
 * Since: 2.14
 */
/* If the package sets ATK_VERSION_MIN_REQUIRED to some future
 * ATK_VERSION_X_Y value that we don't know about, it will compare as
 * 0 in preprocessor tests.
 */
#ifndef ATK_VERSION_MIN_REQUIRED
# define ATK_VERSION_MIN_REQUIRED      (ATK_VERSION_CUR_STABLE)
#elif ATK_VERSION_MIN_REQUIRED == 0
# undef  ATK_VERSION_MIN_REQUIRED
# define ATK_VERSION_MIN_REQUIRED      (ATK_VERSION_CUR_STABLE + 2)
#endif

/**
 * ATK_VERSION_MAX_ALLOWED:
 *
 * A macro that should be defined by the user prior to including
 * the atk/atk.h header.
 * The definition should be one of the predefined ATK version
 * macros: %ATK_VERSION_2_12, %ATK_VERSION_2_14,...
 *
 * This macro defines the latest version of the ATK API that the
 * package is allowed to make use of.
 *
 * If the compiler is configured to warn about the use of deprecated
 * functions, then using functions added after version
 * %ATK_VERSION_MAX_ALLOWED will cause warnings.
 *
 * Unless you are using ATK_CHECK_VERSION() or the like to compile
 * different code depending on the ATK version, then this should be
 * set to the same value as %ATK_VERSION_MIN_REQUIRED.
 *
 * Since: 2.14
 */
#if !defined (ATK_VERSION_MAX_ALLOWED) || (ATK_VERSION_MAX_ALLOWED == 0)
# undef ATK_VERSION_MAX_ALLOWED
# define ATK_VERSION_MAX_ALLOWED      (ATK_VERSION_CUR_STABLE)
#endif

/* sanity checks */
#if ATK_VERSION_MIN_REQUIRED > ATK_VERSION_CUR_STABLE
#error "ATK_VERSION_MIN_REQUIRED must be <= ATK_VERSION_CUR_STABLE"
#endif
#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_MIN_REQUIRED
#error "ATK_VERSION_MAX_ALLOWED must be >= ATK_VERSION_MIN_REQUIRED"
#endif
#if ATK_VERSION_MIN_REQUIRED < ATK_VERSION_2_2
#error "ATK_VERSION_MIN_REQUIRED must be >= ATK_VERSION_2_2"
#endif

/* these macros are used to mark deprecated functions, and thus have to be
 * exposed in a public header.
 *
 * do *not* use them in other libraries depending on Atk: use G_DEPRECATED
 * and G_DEPRECATED_FOR, or use your own wrappers around them.
 */
#ifdef ATK_DISABLE_DEPRECATION_WARNINGS
#define ATK_DEPRECATED _ATK_EXTERN
#define ATK_DEPRECATED_FOR(f) _ATK_EXTERN
#define ATK_UNAVAILABLE(maj,min) _ATK_EXTERN
#else
#define ATK_DEPRECATED G_DEPRECATED _ATK_EXTERN
#define ATK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _ATK_EXTERN
#define ATK_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _ATK_EXTERN
#endif

#define ATK_AVAILABLE_IN_ALL _ATK_EXTERN

/* XXX: Every new stable minor release should add a set of macros here */

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_2
# define ATK_DEPRECATED_IN_2_2                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_2_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_2                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_2_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_2
# define ATK_AVAILABLE_IN_2_2                 ATK_UNAVAILABLE(2, 2)
#else
# define ATK_AVAILABLE_IN_2_2                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_4
# define ATK_DEPRECATED_IN_2_4                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_4_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_4                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_4_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_4
# define ATK_AVAILABLE_IN_2_4                 ATK_UNAVAILABLE(2, 4)
#else
# define ATK_AVAILABLE_IN_2_4                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_6
# define ATK_DEPRECATED_IN_2_6                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_6_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_6                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_6_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_6
# define ATK_AVAILABLE_IN_2_6                 ATK_UNAVAILABLE(2, 6)
#else
# define ATK_AVAILABLE_IN_2_6                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_8
# define ATK_DEPRECATED_IN_2_8                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_8_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_8                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_8_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_8
# define ATK_AVAILABLE_IN_2_8                 ATK_UNAVAILABLE(2, 8)
#else
# define ATK_AVAILABLE_IN_2_8                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_10
# define ATK_DEPRECATED_IN_2_10                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_10_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_10                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_10_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_10
# define ATK_AVAILABLE_IN_2_10                 ATK_UNAVAILABLE(2, 10)
#else
# define ATK_AVAILABLE_IN_2_10                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_12
# define ATK_DEPRECATED_IN_2_12                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_12_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_12                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_12_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_12
# define ATK_AVAILABLE_IN_2_12                 ATK_UNAVAILABLE(2, 12)
#else
# define ATK_AVAILABLE_IN_2_12                 _ATK_EXTERN
#endif

#if ATK_VERSION_MIN_REQUIRED >= ATK_VERSION_2_14
# define ATK_DEPRECATED_IN_2_14                ATK_DEPRECATED
# define ATK_DEPRECATED_IN_2_14_FOR(f)         ATK_DEPRECATED_FOR(f)
#else
# define ATK_DEPRECATED_IN_2_14                _ATK_EXTERN
# define ATK_DEPRECATED_IN_2_14_FOR(f)         _ATK_EXTERN
#endif

#if ATK_VERSION_MAX_ALLOWED < ATK_VERSION_2_14
# define ATK_AVAILABLE_IN_2_14                 ATK_UNAVAILABLE(2, 14)
#else
# define ATK_AVAILABLE_IN_2_14                 _ATK_EXTERN
#endif

ATK_AVAILABLE_IN_2_8
guint atk_get_major_version (void) G_GNUC_CONST;
ATK_AVAILABLE_IN_2_8
guint atk_get_minor_version (void) G_GNUC_CONST;
ATK_AVAILABLE_IN_2_8
guint atk_get_micro_version (void) G_GNUC_CONST;
ATK_AVAILABLE_IN_2_8
guint atk_get_binary_age    (void) G_GNUC_CONST;
ATK_AVAILABLE_IN_2_8
guint atk_get_interface_age (void) G_GNUC_CONST;

#define atk_major_version atk_get_major_version ()
#define atk_minor_version atk_get_minor_version ()
#define atk_micro_version atk_get_micro_version ()
#define atk_binary_age atk_get_binary_age ()
#define atk_interface_age atk_get_interface_age ()

#endif /* __ATK_VERSION_H__ */