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 427ATK_AVAILABLE_IN_2_8 428guint atk_get_major_version (void) G_GNUC_CONST; 429ATK_AVAILABLE_IN_2_8 430guint atk_get_minor_version (void) G_GNUC_CONST; 431ATK_AVAILABLE_IN_2_8 432guint atk_get_micro_version (void) G_GNUC_CONST; 433ATK_AVAILABLE_IN_2_8 434guint atk_get_binary_age (void) G_GNUC_CONST; 435ATK_AVAILABLE_IN_2_8 436guint 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__ */ 445