gdkversionmacros.h.in 9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
/* gdkversionmacros.h - version boundaries checks
 * Copyright (C) 2012 Red Hat, Inc.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
15
 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
 */

#if !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
#error "Only <gdk/gdk.h> can be included directly."
#endif

#ifndef __GDK_VERSION_MACROS_H__
#define __GDK_VERSION_MACROS_H__

#include <glib.h>

#define GDK_MAJOR_VERSION (@GTK_MAJOR_VERSION@)
#define GDK_MINOR_VERSION (@GTK_MINOR_VERSION@)
#define GDK_MICRO_VERSION (@GTK_MICRO_VERSION@)

31 32 33 34
#ifndef _GDK_EXTERN
#define _GDK_EXTERN extern
#endif

35 36 37 38 39 40 41 42
/**
 * GDK_DISABLE_DEPRECATION_WARNINGS:
 *
 * A macro that should be defined before including the gdk.h header.
 * If it is defined, no compiler warnings will be produced for uses
 * of deprecated GDK and GTK+ APIs.
 */

43
#ifdef GDK_DISABLE_DEPRECATION_WARNINGS
44 45 46
#define GDK_DEPRECATED _GDK_EXTERN
#define GDK_DEPRECATED_FOR(f) _GDK_EXTERN
#define GDK_UNAVAILABLE(maj,min) _GDK_EXTERN
47
#else
48 49 50
#define GDK_DEPRECATED G_DEPRECATED _GDK_EXTERN
#define GDK_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _GDK_EXTERN
#define GDK_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _GDK_EXTERN
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
#endif

/* XXX: Every new stable minor release bump should add a macro here */

/**
 * GDK_VERSION_3_0:
 *
 * A macro that evaluates to the 3.0 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.4
 */
#define GDK_VERSION_3_0         (G_ENCODE_VERSION (3, 0))

/**
 * GDK_VERSION_3_2:
 *
 * A macro that evaluates to the 3.2 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.4
 */
#define GDK_VERSION_3_2         (G_ENCODE_VERSION (3, 2))

/**
 * GDK_VERSION_3_4:
 *
 * A macro that evaluates to the 3.4 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.4
 */
#define GDK_VERSION_3_4         (G_ENCODE_VERSION (3, 4))

85 86 87 88 89 90 91 92 93 94
/**
 * GDK_VERSION_3_6:
 *
 * A macro that evaluates to the 3.6 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.6
 */
#define GDK_VERSION_3_6         (G_ENCODE_VERSION (3, 6))

Matthias Clasen's avatar
Matthias Clasen committed
95 96 97 98 99 100 101 102 103 104
/**
 * GDK_VERSION_3_8:
 *
 * A macro that evaluates to the 3.8 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.8
 */
#define GDK_VERSION_3_8         (G_ENCODE_VERSION (3, 8))

Matthias Clasen's avatar
Matthias Clasen committed
105 106 107 108 109 110 111 112 113 114
/**
 * GDK_VERSION_3_10:
 *
 * A macro that evaluates to the 3.10 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.10
 */
#define GDK_VERSION_3_10        (G_ENCODE_VERSION (3, 10))

115 116 117 118 119 120 121 122 123 124
/**
 * GDK_VERSION_3_12:
 *
 * A macro that evaluates to the 3.12 version of GDK, in a format
 * that can be used by the C pre-processor.
 *
 * Since: 3.12
 */
#define GDK_VERSION_3_12        (G_ENCODE_VERSION (3, 12))

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

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

/* evaluates to the previous stable version */
#if (GDK_MINOR_VERSION % 2)
#define GDK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 1))
#else
#define GDK_VERSION_PREV_STABLE        (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 2))
#endif

/**
 * GDK_VERSION_MIN_REQUIRED:
 *
 * A macro that should be defined by the user prior to including
 * the gdk.h header.
 * The definition should be one of the predefined GDK version
 * macros: %GDK_VERSION_3_0, %GDK_VERSION_3_2,...
 *
Benjamin Otte's avatar
Benjamin Otte committed
150
 * This macro defines the lower bound for the GDK API to use.
151 152 153 154 155 156 157 158
 *
 * If a function has been deprecated in a newer version of GDK,
 * it is possible to use this symbol to avoid the compiler warnings
 * without disabling warning for every deprecated function.
 *
 * Since: 3.4
 */
#ifndef GDK_VERSION_MIN_REQUIRED
159
# define GDK_VERSION_MIN_REQUIRED      (GDK_VERSION_CUR_STABLE)
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
#endif

/**
 * GDK_VERSION_MAX_ALLOWED:
 *
 * A macro that should be defined by the user prior to including
 * the gdk.h header.
 * The definition should be one of the predefined GDK version
 * macros: %GDK_VERSION_3_0, %GDK_VERSION_3_2,...
 *
 * This macro defines the upper bound for the GDK API to use.
 *
 * If a function has been introduced in a newer version of GDK,
 * it is possible to use this symbol to get compiler warnings when
 * trying to use that function.
 *
 * Since: 3.4
 */
#ifndef GDK_VERSION_MAX_ALLOWED
# if GDK_VERSION_MIN_REQUIRED > GDK_VERSION_PREV_STABLE
#  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_MIN_REQUIRED
# else
#  define GDK_VERSION_MAX_ALLOWED      GDK_VERSION_CUR_STABLE
# endif
#endif

/* sanity checks */
#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_MIN_REQUIRED
#error "GDK_VERSION_MAX_ALLOWED must be >= GDK_VERSION_MIN_REQUIRED"
#endif
#if GDK_VERSION_MIN_REQUIRED < GDK_VERSION_3_0
#error "GDK_VERSION_MIN_REQUIRED must be >= GDK_VERSION_3_0"
#endif

194
#define GDK_AVAILABLE_IN_ALL                  _GDK_EXTERN
195

196 197 198 199 200 201
/* XXX: Every new stable minor release should add a set of macros here */

#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_0
# define GDK_DEPRECATED_IN_3_0                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_0_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
202 203
# define GDK_DEPRECATED_IN_3_0                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_0_FOR(f)         _GDK_EXTERN
204 205 206 207 208
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_0
# define GDK_AVAILABLE_IN_3_0                 GDK_UNAVAILABLE(3, 0)
#else
209
# define GDK_AVAILABLE_IN_3_0                 _GDK_EXTERN
210 211 212 213 214 215
#endif

#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_2
# define GDK_DEPRECATED_IN_3_2                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_2_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
216 217
# define GDK_DEPRECATED_IN_3_2                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_2_FOR(f)         _GDK_EXTERN
218 219 220 221 222
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_2
# define GDK_AVAILABLE_IN_3_2                 GDK_UNAVAILABLE(3, 2)
#else
223
# define GDK_AVAILABLE_IN_3_2                 _GDK_EXTERN
224 225 226 227 228 229
#endif

#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_4
# define GDK_DEPRECATED_IN_3_4                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_4_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
230 231
# define GDK_DEPRECATED_IN_3_4                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_4_FOR(f)         _GDK_EXTERN
232 233 234 235 236
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_4
# define GDK_AVAILABLE_IN_3_4                 GDK_UNAVAILABLE(3, 4)
#else
237
# define GDK_AVAILABLE_IN_3_4                 _GDK_EXTERN
238 239
#endif

240 241 242 243
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_6
# define GDK_DEPRECATED_IN_3_6                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_6_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
244 245
# define GDK_DEPRECATED_IN_3_6                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_6_FOR(f)         _GDK_EXTERN
246 247 248 249 250
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_6
# define GDK_AVAILABLE_IN_3_6                 GDK_UNAVAILABLE(3, 6)
#else
251
# define GDK_AVAILABLE_IN_3_6                 _GDK_EXTERN
252 253
#endif

254 255 256 257
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_8
# define GDK_DEPRECATED_IN_3_8                GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_8_FOR(f)         GDK_DEPRECATED_FOR(f)
#else
258 259
# define GDK_DEPRECATED_IN_3_8                _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_8_FOR(f)         _GDK_EXTERN
260 261 262 263 264
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_8
# define GDK_AVAILABLE_IN_3_8                 GDK_UNAVAILABLE(3, 8)
#else
265
# define GDK_AVAILABLE_IN_3_8                 _GDK_EXTERN
266 267
#endif

Matthias Clasen's avatar
Matthias Clasen committed
268 269 270 271
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_10
# define GDK_DEPRECATED_IN_3_10               GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_10_FOR(f)        GDK_DEPRECATED_FOR(f)
#else
272 273
# define GDK_DEPRECATED_IN_3_10               _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_10_FOR(f)        _GDK_EXTERN
Matthias Clasen's avatar
Matthias Clasen committed
274 275 276 277 278
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_10
# define GDK_AVAILABLE_IN_3_10                GDK_UNAVAILABLE(3, 10)
#else
279
# define GDK_AVAILABLE_IN_3_10                _GDK_EXTERN
Matthias Clasen's avatar
Matthias Clasen committed
280 281
#endif

282 283 284 285 286 287 288 289 290 291 292 293 294 295
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_3_12
# define GDK_DEPRECATED_IN_3_12               GDK_DEPRECATED
# define GDK_DEPRECATED_IN_3_12_FOR(f)        GDK_DEPRECATED_FOR(f)
#else
# define GDK_DEPRECATED_IN_3_12               _GDK_EXTERN
# define GDK_DEPRECATED_IN_3_12_FOR(f)        _GDK_EXTERN
#endif

#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_3_12
# define GDK_AVAILABLE_IN_3_12                GDK_UNAVAILABLE(3, 12)
#else
# define GDK_AVAILABLE_IN_3_12                _GDK_EXTERN
#endif

296
#endif  /* __GDK_VERSION_MACROS_H__ */