/*! * \file /utl/core/version.h * \brief version and cpp version checks * * Copyright (C) 2018 Christos Choutouridis * * This program 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 3 * of the License, or (at your option) any later version. * * This program 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 program. If not, see . * */ #ifndef __utl_core_version_h__ #define __utl_core_version_h__ //!\defgroup version version //! Definitions of the utl version //!@{ //! utl version #define UTL_VERSION "0.0.1" #define UTL_VERSION_MAJOR 0 #define UTL_VERSION_MINOR 0 #define UTL_VERSION_PATCH 1 #define UTL_VERSION_VALUE ( (UTL_VERSION_MAJOR * 10000) \ + (UTL_VERSION_MINOR * 100) \ + UTL_VERSION_PATCH) //! C++ versions #define CXX_VER __cplusplus #define CXX_VER_STD_11 201103L #define CXX_VER_STD_14 201402L #define CXX_VER_STD_17 201703L //#include //! Check for variable templates #ifndef CXX_VARIABLE_TEMPLATES #ifdef __cpp_variable_templates #define CXX_VARIABLE_TEMPLATES __cpp_variable_templates #else #define CXX_VARIABLE_TEMPLATES (CXX_VER >= CXX_VER_STD_14) #endif #endif //! Check integer sequence #ifndef CXX_INTEGER_SEQUENCE #ifdef __cpp_lib_integer_sequence #define CXX_INTEGER_SEQUENCE __cpp_lib_integer_sequence #else #define CXX_INTEGER_SEQUENCE (CXX_VER >= CXX_VER_STD_14) #endif #endif //! Check concepts #ifndef CXX_CONCEPTS #ifdef __cpp_concepts #define CXX_CONCEPTS __cpp_concepts #else #define CXX_CONCEPTS 0 #endif #endif //! Check for inline variables #ifndef CXX_INLINE_VARIABLES #ifdef __cpp_inline_variables #define CXX_INLINE_VARIABLES __cpp_inline_variables #else #define CXX_INLINE_VARIABLES (CXX_VER >= CXX_VER_STD_17) #endif #endif #ifndef CXX_FOLD_EXPRESSIONS #ifdef __cpp_fold_expressions #define CXX_FOLD_EXPRESSIONS __cpp_fold_expressions #else #define CXX_FOLD_EXPRESSIONS (CXX_VER >= CXX_VER_STD_17) #endif #endif /* * Workaround inspection */ #if defined(__GNUC__) && (__GNUC__ < 5) // https://wg21.link/cwg1558 #define UTL_WORKAROUND_CWG_1558 #endif //! Base library requirement #if __cplusplus < CXX_VER_STD_11 #error "uTL requires C++11" #endif //!@} #endif /* #ifndef __utl_core_version_h__ */