2012-02-27 12:04:30 +00:00
|
|
|
/* 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
|
2014-01-12 12:56:49 +00:00
|
|
|
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
2012-02-27 12:04:30 +00:00
|
|
|
*/
|
|
|
|
|
2019-11-27 13:33:43 +00:00
|
|
|
#if !defined (__GDK_H_INSIDE__) && !defined (__GTK_CSS_H_INSIDE__) && !defined (GTK_COMPILATION) && !defined (GTK_CSS_COMPILATION)
|
2012-02-27 12:04:30 +00:00
|
|
|
#error "Only <gdk/gdk.h> can be included directly."
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#ifndef __GDK_VERSION_MACROS_H__
|
|
|
|
#define __GDK_VERSION_MACROS_H__
|
|
|
|
|
|
|
|
#include <glib.h>
|
|
|
|
|
2020-12-16 14:40:12 +00:00
|
|
|
/**
|
|
|
|
* GDK_MAJOR_VERSION:
|
|
|
|
*
|
|
|
|
* The major version component of the library's version, e.g. "1" for "1.2.3".
|
|
|
|
*/
|
2012-02-27 12:04:30 +00:00
|
|
|
#define GDK_MAJOR_VERSION (@GTK_MAJOR_VERSION@)
|
2020-12-16 14:40:12 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* GDK_MINOR_VERSION:
|
|
|
|
*
|
|
|
|
* The minor version component of the library's version, e.g. "2" for "1.2.3".
|
|
|
|
*/
|
2012-02-27 12:04:30 +00:00
|
|
|
#define GDK_MINOR_VERSION (@GTK_MINOR_VERSION@)
|
2020-12-16 14:40:12 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* GDK_MICRO_VERSION:
|
|
|
|
*
|
|
|
|
* The micro version component of the library's version, e.g. "3" for "1.2.3".
|
|
|
|
*/
|
2012-02-27 12:04:30 +00:00
|
|
|
#define GDK_MICRO_VERSION (@GTK_MICRO_VERSION@)
|
|
|
|
|
2013-03-15 12:30:23 +00:00
|
|
|
#ifndef _GDK_EXTERN
|
|
|
|
#define _GDK_EXTERN extern
|
|
|
|
#endif
|
|
|
|
|
2012-02-27 12:56:29 +00:00
|
|
|
/**
|
|
|
|
* GDK_DISABLE_DEPRECATION_WARNINGS:
|
|
|
|
*
|
2020-12-08 17:37:46 +00:00
|
|
|
* A macro that should be defined before including the `gdk.h` header.
|
|
|
|
*
|
|
|
|
* If this symbol is defined, no compiler warnings will be produced for
|
|
|
|
* uses of deprecated GDK and GTK APIs.
|
2012-02-27 12:56:29 +00:00
|
|
|
*/
|
|
|
|
|
2012-02-27 12:04:30 +00:00
|
|
|
#ifdef GDK_DISABLE_DEPRECATION_WARNINGS
|
2013-03-15 12:30:23 +00:00
|
|
|
#define GDK_DEPRECATED _GDK_EXTERN
|
|
|
|
#define GDK_DEPRECATED_FOR(f) _GDK_EXTERN
|
|
|
|
#define GDK_UNAVAILABLE(maj,min) _GDK_EXTERN
|
2012-02-27 12:04:30 +00:00
|
|
|
#else
|
2013-03-15 12:30:23 +00:00
|
|
|
#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
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/* XXX: Every new stable minor release bump should add a macro here */
|
|
|
|
|
2017-10-19 10:18:12 +00:00
|
|
|
/**
|
2018-02-05 19:13:20 +00:00
|
|
|
* GDK_VERSION_4_0:
|
2017-10-19 10:18:12 +00:00
|
|
|
*
|
2018-02-05 19:13:20 +00:00
|
|
|
* A macro that evaluates to the 4.0 version of GDK, in a format
|
2017-10-19 10:18:12 +00:00
|
|
|
* that can be used by the C pre-processor.
|
|
|
|
*/
|
2018-02-05 19:13:20 +00:00
|
|
|
#define GDK_VERSION_4_0 (G_ENCODE_VERSION (4, 0))
|
2017-10-19 10:18:12 +00:00
|
|
|
|
2017-04-09 09:54:02 +00:00
|
|
|
|
2012-02-27 12:04:30 +00:00
|
|
|
/* evaluates to the current stable version; for development cycles,
|
2020-12-08 17:37:46 +00:00
|
|
|
* this means the next stable target, with a hard backstop to the
|
|
|
|
* beginning of the stable series
|
2012-02-27 12:04:30 +00:00
|
|
|
*/
|
2020-12-08 17:37:46 +00:00
|
|
|
#if GDK_MAJOR_VERSION >= 4 && (GDK_MINOR_VERSION % 2)
|
|
|
|
# define GDK_VERSION_CUR_STABLE (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION + 1))
|
|
|
|
#elif G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION) > GDK_VERSION_4_0
|
|
|
|
# define GDK_VERSION_CUR_STABLE (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION))
|
2012-02-27 12:04:30 +00:00
|
|
|
#else
|
2020-12-08 17:37:46 +00:00
|
|
|
# define GDK_VERSION_CUR_STABLE GDK_VERSION_4_0
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
|
|
|
|
2020-12-08 17:37:46 +00:00
|
|
|
/* evaluates to the previous stable version, with a hard backstop
|
|
|
|
* to the beginning of the stable series
|
|
|
|
*/
|
|
|
|
#if GDK_MAJOR_VERSION >= 4 && (GDK_MINOR_VERSION % 2)
|
|
|
|
# define GDK_VERSION_PREV_STABLE (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 1))
|
|
|
|
#elif GDK_MAJOR_VERSION >= 4 && GDK_MINOR_VERSION > 2
|
|
|
|
# define GDK_VERSION_PREV_STABLE (G_ENCODE_VERSION (GDK_MAJOR_VERSION, GDK_MINOR_VERSION - 2))
|
2012-02-27 12:04:30 +00:00
|
|
|
#else
|
2020-12-08 17:37:46 +00:00
|
|
|
# define GDK_VERSION_PREV_STABLE GDK_VERSION_4_0
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GDK_VERSION_MIN_REQUIRED:
|
|
|
|
*
|
|
|
|
* A macro that should be defined by the user prior to including
|
2020-12-08 17:37:46 +00:00
|
|
|
* the `gdk.h` header.
|
|
|
|
*
|
2012-02-27 12:04:30 +00:00
|
|
|
* The definition should be one of the predefined GDK version
|
2018-02-05 19:13:20 +00:00
|
|
|
* macros: %GDK_VERSION_4_0, %GDK_VERSION_4_2,...
|
2012-02-27 12:04:30 +00:00
|
|
|
*
|
2012-04-30 18:45:34 +00:00
|
|
|
* This macro defines the lower bound for the GDK API to use.
|
2012-02-27 12:04:30 +00:00
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
#ifndef GDK_VERSION_MIN_REQUIRED
|
2012-04-30 18:45:47 +00:00
|
|
|
# define GDK_VERSION_MIN_REQUIRED (GDK_VERSION_CUR_STABLE)
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* GDK_VERSION_MAX_ALLOWED:
|
|
|
|
*
|
|
|
|
* A macro that should be defined by the user prior to including
|
2020-12-08 17:37:46 +00:00
|
|
|
* the `gdk.h` header.
|
|
|
|
*
|
2012-02-27 12:04:30 +00:00
|
|
|
* The definition should be one of the predefined GDK version
|
2018-02-05 19:13:20 +00:00
|
|
|
* macros: %GDK_VERSION_4_0, %GDK_VERSION_4_2,...
|
2012-02-27 12:04:30 +00:00
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*/
|
|
|
|
#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
|
2020-12-08 17:37:46 +00:00
|
|
|
# error "GDK_VERSION_MAX_ALLOWED must be >= GDK_VERSION_MIN_REQUIRED"
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
2020-12-08 17:37:46 +00:00
|
|
|
#if GDK_VERSION_MIN_REQUIRED < GDK_VERSION_4_0
|
|
|
|
# error "GDK_VERSION_MIN_REQUIRED must be >= GDK_VERSION_4_0"
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif
|
|
|
|
|
2013-03-15 12:30:23 +00:00
|
|
|
#define GDK_AVAILABLE_IN_ALL _GDK_EXTERN
|
2013-03-15 01:22:22 +00:00
|
|
|
|
2012-02-27 12:04:30 +00:00
|
|
|
/* XXX: Every new stable minor release should add a set of macros here */
|
|
|
|
|
2020-12-08 17:37:46 +00:00
|
|
|
/* This is not really necessary for 4.0, since there can't be an
|
|
|
|
* earlier version, and there are no deprecated symbols. We just
|
|
|
|
* include it for completeness, and because it's easier to copy
|
|
|
|
* this stanza every time a new development cycle starts.
|
|
|
|
*/
|
2018-02-05 19:13:20 +00:00
|
|
|
#if GDK_VERSION_MAX_ALLOWED < GDK_VERSION_4_0
|
2020-12-08 17:37:46 +00:00
|
|
|
# define GDK_AVAILABLE_IN_4_0 GDK_UNAVAILABLE(4, 0)
|
2017-10-19 10:18:12 +00:00
|
|
|
#else
|
2020-12-08 17:37:46 +00:00
|
|
|
# define GDK_AVAILABLE_IN_4_0 _GDK_EXTERN
|
2017-10-19 10:18:12 +00:00
|
|
|
#endif
|
|
|
|
|
2020-12-08 17:37:46 +00:00
|
|
|
#if GDK_VERSION_MIN_REQUIRED >= GDK_VERSION_4_0
|
|
|
|
# define GDK_DEPRECATED_IN_4_0 GDK_DEPRECATED
|
|
|
|
# define GDK_DEPRECATED_IN_4_0_FOR(f) GDK_DEPRECATED_FOR(f)
|
2019-02-25 16:31:14 +00:00
|
|
|
#else
|
2020-12-08 17:37:46 +00:00
|
|
|
# define GDK_DEPRECATED_IN_4_0 _GDK_EXTERN
|
|
|
|
# define GDK_DEPRECATED_IN_4_0_FOR(f) _GDK_EXTERN
|
2019-02-25 16:31:14 +00:00
|
|
|
#endif
|
2017-04-09 09:54:02 +00:00
|
|
|
|
2012-02-27 12:04:30 +00:00
|
|
|
#endif /* __GDK_VERSION_MACROS_H__ */
|