Versioning utility macros

Versioning utility macros — Macros for determining the version of Cogl being used

Types and Values

Description

Cogl offers a set of macros for checking the version of the library at compile time.

Cogl adds version information to both API deprecations and additions; by definining the macros COGL_VERSION_MIN_REQUIRED and COGL_VERSION_MAX_ALLOWED, you can specify the range of Cogl versions whose API you want to use. Functions that were deprecated before, or introduced after, this range will trigger compiler warnings. For instance, if we define the following symbols:

1
2
COGL_VERSION_MIN_REQUIRED = COGL_VERSION_1_6
COGL_VERSION_MAX_ALLOWED  = COGL_VERSION_1_8

and we have the following functions annotated in the Cogl headers:

1
2
3
4
COGL_DEPRECATED_IN_1_4 void cogl_function_A (void);
COGL_DEPRECATED_IN_1_6 void cogl_function_B (void);
COGL_AVAILABLE_IN_1_8 void cogl_function_C (void);
COGL_AVAILABLE_IN_1_10 void cogl_function_D (void);

then any application code using the functions above will get the output:

1
2
3
4
cogl_function_A: deprecation warning
cogl_function_B: no warning
cogl_function_C: no warning
cogl_function_D: symbol not available warning

It is possible to disable the compiler warnings by defining the macro COGL_DISABLE_DEPRECATION_WARNINGS before including the cogl.h header.

Functions

COGL_VERSION_ENCODE()

#define             COGL_VERSION_ENCODE(major, minor, micro)

Encodes a 3 part version number into a single integer. This can be used to compare the Cogl version. For example if there is a known bug in Cogl versions between 1.3.2 and 1.3.4 you could use the following code to provide a workaround:

1
2
3
4
#if COGL_VERSION >= COGL_VERSION_ENCODE (1, 3, 2) && \
    COGL_VERSION <= COGL_VERSION_ENCODE (1, 3, 4)
  /<!-- -->* Do the workaround *<!-- -->/
#endif

Parameters

major

The major part of a version number

 

minor

The minor part of a version number

 

micro

The micro part of a version number

 

Since: 1.12.0


COGL_VERSION_CHECK()

#define             COGL_VERSION_CHECK(major, minor, micro)

A convenient macro to check whether the Cogl version being compiled against is at least the given version number. For example if the function cogl_pipeline_frobnicate was added in version 2.0.1 and you want to conditionally use that function when it is available, you could write the following:

1
2
3
4
5
6
#if COGL_VERSION_CHECK (2, 0, 1)
cogl_pipeline_frobnicate (pipeline);
#else
/<!-- -->* Frobnication is not supported. Use a red color instead *<!-- -->/
cogl_pipeline_set_color_4f (pipeline, 1.0f, 0.0f, 0.0f, 1.0f);
#endif

Parameters

major

The major part of a version number

 

minor

The minor part of a version number

 

micro

The micro part of a version number

 

Returns

TRUE if the Cogl version being compiled against is greater than or equal to the given three part version number.

Since: 1.12.0


COGL_VERSION_GET_MAJOR()

#define             COGL_VERSION_GET_MAJOR(version)

Extracts the major part of an encoded version number.

Parameters

version

An encoded version number

 

Since: 1.12.0


COGL_VERSION_GET_MINOR()

#define             COGL_VERSION_GET_MINOR(version)

Extracts the minor part of an encoded version number.

Parameters

version

An encoded version number

 

Since: 1.12.0


COGL_VERSION_GET_MICRO()

#define             COGL_VERSION_GET_MICRO(version)

Extracts the micro part of an encoded version number.

Parameters

version

An encoded version number

 

Since: 1.12.0

Types and Values

COGL_VERSION_MAJOR

#define COGL_VERSION_MAJOR COGL_VERSION_MAJOR_INTERNAL

The major version of the Cogl library (1, if COGL_VERSION is 1.2.3)

Since: 1.12.0


COGL_VERSION_MINOR

#define COGL_VERSION_MINOR COGL_VERSION_MINOR_INTERNAL

The minor version of the Cogl library (2, if COGL_VERSION is 1.2.3)

Since: 1.12.0


COGL_VERSION_MICRO

#define COGL_VERSION_MICRO COGL_VERSION_MICRO_INTERNAL

The micro version of the Cogl library (3, if COGL_VERSION is 1.2.3)

Since: 1.12.0


COGL_VERSION_STRING

#define COGL_VERSION_STRING COGL_VERSION_STRING_INTERNAL

The full version of the Cogl library, in string form (suited for string concatenation)

Since: 1.12.0


COGL_VERSION

#define             COGL_VERSION

The Cogl version encoded into a single integer using the COGL_VERSION_ENCODE() macro. This can be used for quick comparisons with particular versions.

Since: 1.12.0