/*
* Copyright (C) 1999 Red Hat Software
* Copyright (C) 2012 Ryan Lortie, Matthias Clasen and Emmanuele Bassi
* Copyright (C) 2016 Chun-wei Fan
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library 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
* Library 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 .
*/
#pragma once
#include
#include
#ifndef _PANGO2_EXTERN
#define _PANGO2_EXTERN extern
#endif
#define PANGO2_AVAILABLE_IN_ALL _PANGO2_EXTERN
/* XXX: Every new stable minor release bump should add a macro here */
/**
* PANGO2_VERSION_0_90
*
* A macro that evaluates to the 0.90 version of Pango2, in a format
* that can be used by the C pre-processor.
*/
#define PANGO2_VERSION_0_90 (G_ENCODE_VERSION (0, 90))
/**
* PANGO2_VERSION_1_0
*
* A macro that evaluates to the 1.0 version of Pango2, in a format
* that can be used by the C pre-processor.
*/
#define PANGO2_VERSION_1_0 (G_ENCODE_VERSION (1, 0))
/* evaluates to the current stable version; for development cycles,
* this means the next stable target
*/
#if (PANGO2_VERSION_MINOR % 2)
#define PANGO2_VERSION_CUR_STABLE (G_ENCODE_VERSION (PANGO2_VERSION_MAJOR, PANGO2_VERSION_MINOR + 1))
#else
#define PANGO2_VERSION_CUR_STABLE (G_ENCODE_VERSION (PANGO2_VERSION_MAJOR, PANGO2_VERSION_MINOR))
#endif
/* evaluates to the previous stable version */
#if (PANGO2_VERSION_MINOR % 2)
#define PANGO2_VERSION_PREV_STABLE (G_ENCODE_VERSION (PANGO2_VERSION_MAJOR, PANGO2_VERSION_MINOR - 1))
#else
#define PANGO2_VERSION_PREV_STABLE (G_ENCODE_VERSION (PANGO2_VERSION_MAJOR, PANGO2_VERSION_MINOR - 2))
#endif
/**
* PANGO2_VERSION_MIN_REQUIRED:
*
* A macro that should be defined by the user prior to including
* the pango.h header.
* The definition should be one of the predefined Pango version
* macros: %PANGO2_VERSION_2_0,…
*
* This macro defines the earliest version of Pango that the package is
* required to be able to compile against.
*
* If the compiler is configured to warn about the use of deprecated
* functions, then using functions that were deprecated in version
* %PANGO2_VERSION_MIN_REQUIRED or earlier will cause warnings (but
* using functions deprecated in later releases will not).
*/
/* If the package sets PANGO2_VERSION_MIN_REQUIRED to some future
* PANGO2_VERSION_X_Y value that we don't know about, it will compare as
* 0 in preprocessor tests.
*/
#ifndef PANGO2_VERSION_MIN_REQUIRED
# define PANGO2_VERSION_MIN_REQUIRED (PANGO2_VERSION_CUR_STABLE)
#elif PANGO2_VERSION_MIN_REQUIRED == 0
# undef PANGO2_VERSION_MIN_REQUIRED
# define PANGO2_VERSION_MIN_REQUIRED (PANGO2_VERSION_CUR_STABLE + 2)
#endif
/**
* PANGO2_VERSION_MAX_ALLOWED:
*
* A macro that should be defined by the user prior to including
* the glib.h header.
* The definition should be one of the predefined Pango version
* macros: %PANGO2_VERSION_2_0,…
*
* This macro defines the latest version of the Pango API that the
* package is allowed to make use of.
*
* If the compiler is configured to warn about the use of deprecated
* functions, then using functions added after version
* %PANGO2_VERSION_MAX_ALLOWED will cause warnings.
*
* Unless you are using PANGO2_VERSION_CHECK() or the like to compile
* different code depending on the Pango version, then this should be
* set to the same value as %PANGO2_VERSION_MIN_REQUIRED.
*/
#if !defined (PANGO2_VERSION_MAX_ALLOWED) || (PANGO2_VERSION_MAX_ALLOWED == 0)
# undef PANGO2_VERSION_MAX_ALLOWED
# define PANGO2_VERSION_MAX_ALLOWED (PANGO2_VERSION_CUR_STABLE)
#endif
/* sanity checks */
#if PANGO2_VERSION_MIN_REQUIRED > PANGO2_VERSION_CUR_STABLE
#error "PANGO2_VERSION_MIN_REQUIRED must be <= PANGO2_VERSION_CUR_STABLE"
#endif
#if PANGO2_VERSION_MAX_ALLOWED < PANGO2_VERSION_MIN_REQUIRED
#error "PANGO2_VERSION_MAX_ALLOWED must be >= PANGO2_VERSION_MIN_REQUIRED"
#endif
#if PANGO2_VERSION_MIN_REQUIRED < PANGO2_VERSION_0_90
#error "PANGO2_VERSION_MIN_REQUIRED must be >= PANGO2_VERSION_0_90"
#endif
/* These macros are used to mark deprecated functions in Pango headers,
* and thus have to be exposed in installed headers.
*/
#ifdef PANGO2_DISABLE_DEPRECATION_WARNINGS
# define PANGO2_DEPRECATED _PANGO2_EXTERN
# define PANGO2_DEPRECATED_FOR(f) _PANGO2_EXTERN
# define PANGO2_UNAVAILABLE(maj,min) _PANGO2_EXTERN
#else
# define PANGO2_DEPRECATED G_DEPRECATED _PANGO2_EXTERN
# define PANGO2_DEPRECATED_FOR(f) G_DEPRECATED_FOR(f) _PANGO2_EXTERN
# define PANGO2_UNAVAILABLE(maj,min) G_UNAVAILABLE(maj,min) _PANGO2_EXTERN
#endif
/* XXX: Every new stable minor release should add a set of macros here */
#if PANGO2_VERSION_MIN_REQUIRED >= PANGO2_VERSION_1_0
# define PANGO2_DEPRECATED_IN_1_0 PANGO2_DEPRECATED
# define PANGO2_DEPRECATED_IN_1_0_FOR(f) PANGO2_DEPRECATED_FOR(f)
#else
# define PANGO2_DEPRECATED_IN_1_0 _PANGO2_EXTERN
# define PANGO2_DEPRECATED_IN_1_0_FOR(f) _PANGO2_EXTERN
#endif
#if PANGO2_VERSION_MAX_ALLOWED < PANGO2_VERSION_1_0
# define PANGO2_AVAILABLE_IN_1_0 PANGO2_UNAVAILABLE(2, 0)
#else
# define PANGO2_AVAILABLE_IN_1_0 _PANGO2_EXTERN
#endif