1
0
Fork 0
mutter-performance-source/clutter/clutter-version.h.in
Emmanuele Bassi 780a11b926 Add flexible versioning scheme
GLib introduced macros that allows defining the lower and upper bounds
of the API to be used by application code.

The lower bound allows to define the minimum version that will trigger
deprecation warnings; the upper bound defines the maximum version that
will trigger compiler warnings for unavailable symbols.

This scheme allows gradually porting application code to a new version
of the API, especially in case of resynchronization after multiple
development cycles.
2012-02-27 15:21:31 +00:00

232 lines
6.1 KiB
C

/*
* Clutter.
*
* An OpenGL based 'interactive canvas' library.
*
* Authored By Matthew Allum <mallum@openedhand.com>
*
* Copyright (C) 2006 OpenedHand
*
* 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
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*
*/
#if !defined(__CLUTTER_H_INSIDE__) && !defined(CLUTTER_COMPILATION)
#error "Only <clutter/clutter.h> can be included directly."
#endif
/**
* SECTION:clutter-version
* @short_description: Versioning utility macros
*
* Clutter offers a set of macros for checking the version of the library
* an application was linked to.
*/
#ifndef __CLUTTER_VERSION_H__
#define __CLUTTER_VERSION_H__
#include <glib.h>
G_BEGIN_DECLS
/**
* CLUTTER_MAJOR_VERSION:
*
* The major version of the Clutter library (1, if %CLUTTER_VERSION is 1.2.3)
*/
#define CLUTTER_MAJOR_VERSION (@CLUTTER_MAJOR_VERSION@)
/**
* CLUTTER_MINOR_VERSION:
*
* The minor version of the Clutter library (2, if %CLUTTER_VERSION is 1.2.3)
*/
#define CLUTTER_MINOR_VERSION (@CLUTTER_MINOR_VERSION@)
/**
* CLUTTER_MICRO_VERSION:
*
* The micro version of the Clutter library (3, if %CLUTTER_VERSION is 1.2.3)
*/
#define CLUTTER_MICRO_VERSION (@CLUTTER_MICRO_VERSION@)
/**
* CLUTTER_VERSION:
*
* The full version of the Clutter library, like 1.2.3
*/
#define CLUTTER_VERSION @CLUTTER_VERSION@
/**
* CLUTTER_VERSION_S:
*
* The full version of the Clutter library, in string form (suited for
* string concatenation)
*/
#define CLUTTER_VERSION_S "@CLUTTER_VERSION@"
/**
* CLUTTER_VERSION_HEX:
*
* Numerically encoded version of the Clutter library, like 0x010203
*/
#define CLUTTER_VERSION_HEX ((CLUTTER_MAJOR_VERSION << 24) | \
(CLUTTER_MINOR_VERSION << 16) | \
(CLUTTER_MICRO_VERSION << 8))
/* XXX - Every new stable minor release bump should add a macro here */
/**
* CLUTTER_VERSION_1_0:
*
* A macro that evaluates to the 1.0 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_0 (G_ENCODE_VERSION (1, 0))
/**
* CLUTTER_VERSION_1_2:
*
* A macro that evaluates to the 1.2 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_2 (G_ENCODE_VERSION (1, 2))
/**
* CLUTTER_VERSION_1_4:
*
* A macro that evaluates to the 1.4 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_4 (G_ENCODE_VERSION (1, 4))
/**
* CLUTTER_VERSION_1_6:
*
* A macro that evaluates to the 1.6 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_6 (G_ENCODE_VERSION (1, 6))
/**
* CLUTTER_VERSION_1_8:
*
* A macro that evaluates to the 1.8 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_8 (G_ENCODE_VERSION (1, 8))
/**
* CLUTTER_VERSION_1_10:
*
* A macro that evaluates to the 1.10 version of Clutter, in a format
* that can be used by the C pre-processor.
*
* Since: 1.10
*/
#define CLUTTER_VERSION_1_10 (G_ENCODE_VERSION (1, 10))
/* evaluates to the current stable version; for development cycles,
* this means the next stable target
*/
#if (CLUTTER_MINOR_VERSION % 2)
# define CLUTTER_VERSION_CUR_STABLE (G_ENCODE_VERSION (CLUTTER_MAJOR_VERSION, CLUTTER_MINOR_VERSION + 1))
#else
# define CLUTTER_VERSION_CUR_STABLE (G_ENCODE_VERSION (CLUTTER_MAJOR_VERSION, CLUTTER_MINOR_VERSION))
#endif
/* evaluates to the previous stable version */
#if (CLUTTER_MINOR_VERSION % 2)
# define CLUTTER_VERSION_PREV_STABLE (G_ENCODE_VERSION (CLUTTER_MAJOR_VERSION, CLUTTER_MINOR_VERSION - 1))
#else
# define CLUTTER_VERSION_PREV_STABLE (G_ENCODE_VERSION (CLUTTER_MAJOR_VERSION, CLUTTER_MINOR_VERSION - 2))
#endif
/**
* CLUTTER_CHECK_VERSION:
* @major: major version, like 1 in 1.2.3
* @minor: minor version, like 2 in 1.2.3
* @micro: micro version, like 3 in 1.2.3
*
* Evaluates to %TRUE if the version of the Clutter library is greater
* than @major, @minor and @micro
*/
#define CLUTTER_CHECK_VERSION(major,minor,micro) \
(CLUTTER_MAJOR_VERSION > (major) || \
(CLUTTER_MAJOR_VERSION == (major) && CLUTTER_MINOR_VERSION > (minor)) || \
(CLUTTER_MAJOR_VERSION == (major) && CLUTTER_MINOR_VERSION == (minor) && CLUTTER_MICRO_VERSION >= (micro)))
/**
* clutter_major_version:
*
* The major component of the Clutter library version, e.g. 1 if the version
* is 1.2.3
*
* This value can be used for run-time version checks
*
* For a compile-time check, use %CLUTTER_MAJOR_VERSION
*
* Since: 1.2
*/
extern const guint clutter_major_version;
/**
* clutter_minor_version:
*
* The minor component of the Clutter library version, e.g. 2 if the version
* is 1.2.3
*
* This value can be used for run-time version checks
*
* For a compile-time check, use %CLUTTER_MINOR_VERSION
*
* Since: 1.2
*/
extern const guint clutter_minor_version;
/**
* clutter_micro_version:
*
* The micro component of the Clutter library version, e.g. 3 if the version
* is 1.2.3
*
* This value can be used for run-time version checks
*
* For a compile-time check, use %CLUTTER_MICRO_VERSION
*
* Since: 1.2
*/
extern const guint clutter_micro_version;
gboolean clutter_check_version (guint major,
guint minor,
guint micro);
gboolean clutter_check_windowing_backend (const char *backend_type);
G_END_DECLS
#endif /* __CLUTTER_VERSION_H__ */