1
0
Fork 0
mirror of https://github.com/bolero-MURAKAMI/Sprout synced 2024-11-12 21:09:01 +00:00
Sprout/sprout/config/suffix.hpp

305 lines
11 KiB
C++
Raw Normal View History

2013-08-08 09:54:33 +00:00
/*=============================================================================
Copyright (c) 2011-2017 Bolero MURAKAMI
2013-08-08 09:54:33 +00:00
https://github.com/bolero-MURAKAMI/Sprout
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_SUFFIX_HPP
#define SPROUT_CONFIG_SUFFIX_HPP
2013-02-19 16:12:56 +00:00
//
// SPROUT_CONSTEXPR
// SPROUT_CONSTEXPR_OR_CONST
// SPROUT_STATIC_CONSTEXPR
// SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER
// SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_CONSTEXPR
# define SPROUT_CONSTEXPR constexpr
# ifndef SPROUT_NO_STATIC_CONSTEXPR_INITIALIZATION
# define SPROUT_CONSTEXPR_OR_CONST constexpr
# define SPROUT_STATIC_CONSTEXPR static constexpr
2012-10-22 14:10:11 +00:00
#
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(EXPR) = EXPR
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(EXPR)
# else
# define SPROUT_CONSTEXPR_OR_CONST const
# define SPROUT_STATIC_CONSTEXPR static const
#
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(EXPR)
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(EXPR) = EXPR
# endif
2012-10-22 14:10:11 +00:00
#else // #ifndef SPROUT_CONFIG_DISABLE_CONSTEXPR
# define SPROUT_CONSTEXPR
# define SPROUT_CONSTEXPR_OR_CONST const
# define SPROUT_STATIC_CONSTEXPR static const
#
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(EXPR)
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(EXPR) = EXPR
#endif // #ifndef SPROUT_CONFIG_DISABLE_CONSTEXPR
//
// SPROUT_CXX14_CONSTEXPR
// SPROUT_CXX14_CONSTEXPR_OR_CONST
// SPROUT_CXX14_STATIC_CONSTEXPR
//
#ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
2014-08-01 06:24:00 +00:00
# define SPROUT_CXX14_CONSTEXPR SPROUT_CONSTEXPR
# define SPROUT_CXX14_CONSTEXPR_OR_CONST SPROUT_CONSTEXPR_OR_CONST
# define SPROUT_CXX14_STATIC_CONSTEXPR SPROUT_STATIC_CONSTEXPR
#else // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
# define SPROUT_CXX14_CONSTEXPR
# define SPROUT_CXX14_CONSTEXPR_OR_CONST const
# define SPROUT_CXX14_STATIC_CONSTEXPR static const
#endif // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
//
// SPROUT_INITIALIZER_LIST_CONSTEXPR
//
#ifndef SPROUT_NO_CXX14_INITIALIZER_LIST
# define SPROUT_INITIALIZER_LIST_CONSTEXPR SPROUT_CXX14_CONSTEXPR
#else // #ifndef SPROUT_NO_CXX14_INITIALIZER_LIST
# define SPROUT_INITIALIZER_LIST_CONSTEXPR
#endif // #ifndef SPROUT_NO_CXX14_INITIALIZER_LIST
2013-11-02 09:28:18 +00:00
//
// SPROUT_NON_CONSTEXPR
//
#define SPROUT_NON_CONSTEXPR
2013-02-19 16:12:56 +00:00
//
// SPROUT_DEFAULTED_DEFAULT_CONSTRUCTOR_DECL
// SPROUT_DEFAULTED_DESTRUCTOR_DECL
//
2012-12-17 14:10:23 +00:00
#ifndef SPROUT_CONFIG_DISABLE_DEFAULTED_FUNCTIONS
# define SPROUT_DEFAULTED_FUNCTION_DECL = default;
# define SPROUT_DEFAULTED_DEFAULT_CONSTRUCTOR_DECL SPROUT_DEFAULTED_FUNCTION_DECL
# define SPROUT_DEFAULTED_DESTRUCTOR_DECL SPROUT_DEFAULTED_FUNCTION_DECL
# define SPROUT_DEFAULTED_FUNCTION(FUNC, BODY) FUNC SPROUT_DEFAULTED_FUNCTION_DECL
2012-12-17 14:10:23 +00:00
#else // #ifndef SPROUT_CONFIG_DISABLE_DEFAULTED_FUNCTIONS
# define SPROUT_DEFAULTED_FUNCTION_DECL SPROUT_NOEXCEPT {}
# define SPROUT_DEFAULTED_DEFAULT_CONSTRUCTOR_DECL SPROUT_DEFAULTED_FUNCTION_DECL
# define SPROUT_DEFAULTED_DESTRUCTOR_DECL SPROUT_DEFAULTED_FUNCTION_DECL
# define SPROUT_DEFAULTED_FUNCTION(FUNC, BODY) FUNC BODY
2012-12-17 14:10:23 +00:00
#endif // #ifndef SPROUT_CONFIG_DISABLE_DEFAULTED_FUNCTIONS
2013-02-19 16:12:56 +00:00
//
// SPROUT_DELETED_FUNCTION_DECL
//
2012-12-17 14:10:23 +00:00
#ifndef SPROUT_CONFIG_DISABLE_DELETED_FUNCTIONS
# define SPROUT_DELETED_FUNCTION_DECL = delete;
# define SPROUT_DELETED_FUNCTION(FUNC) FUNC SPROUT_DELETED_FUNCTION_DECL
2012-12-17 14:10:23 +00:00
#else // #ifndef SPROUT_CONFIG_DISABLE_DELETED_FUNCTIONS
# define SPROUT_DELETED_FUNCTION_DECL ;
# define SPROUT_DELETED_FUNCTION(FUNC) private: FUNC SPROUT_DELETED_FUNCTION_DECL
2012-12-17 14:10:23 +00:00
#endif // #ifndef SPROUT_CONFIG_DISABLE_DELETED_FUNCTIONS
2014-02-20 15:25:55 +00:00
//
// SPROUT_DEPRECATED
//
#if defined(__GNUC__) || defined(__clang__)
# define SPROUT_DEPRECATED __attribute__((deprecated))
#elif defined(_MSC_VER)
2015-02-10 04:55:17 +00:00
# define SPROUT_DEPRECATED __declspec(deprecated)
2014-02-20 15:25:55 +00:00
#else
# define SPROUT_DEPRECATED
#endif
//
// SPROUT_FORCEINLINE
//
#if defined(_MSC_VER)
# define SPROUT_FORCEINLINE __forceinline
#elif defined(__GNUC__) && (__GNUC__ > 3)
# define SPROUT_FORCEINLINE inline __attribute__ ((__always_inline__))
#else
# define SPROUT_FORCEINLINE inline
#endif
//
// SPROUT_NOINLINE
//
#if defined(_MSC_VER)
# define SPROUT_NOINLINE __declspec(noinline)
#elif defined(__GNUC__) && (__GNUC__ > 3)
# if defined(__CUDACC__)
# define SPROUT_NOINLINE __attribute__ ((noinline))
# else
# define SPROUT_NOINLINE __attribute__ ((__noinline__))
# endif
#else
# define SPROUT_NOINLINE
#endif
//
// SPROUT_NORETURN
//
#if defined(_MSC_VER)
# define SPROUT_NORETURN __declspec(noreturn)
#elif defined(__GNUC__)
# define SPROUT_NORETURN __attribute__ ((__noreturn__))
#else
# define SPROUT_NORETURN
#endif
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS
// SPROUT_EXPLICIT_CONVERSION
2013-02-19 16:12:56 +00:00
//
#ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
# define SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS 1
# define SPROUT_EXPLICIT_CONVERSION explicit
#else // #ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
# define SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS 0
# define SPROUT_EXPLICIT_CONVERSION
#endif // #ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
2013-02-19 16:12:56 +00:00
//
// SPROUT_NOEXCEPT
2014-08-14 13:55:49 +00:00
// SPROUT_NOEXCEPT_OR_NOTHROW
// SPROUT_NOEXCEPT_IF
2013-02-19 16:12:56 +00:00
// SPROUT_NOEXCEPT_EXPR
// SPROUT_NOEXCEPT_EXPR_OR_DEFAULT
2014-08-14 13:55:49 +00:00
// SPROUT_NOEXCEPT_IF_EXPR
2013-02-19 16:12:56 +00:00
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
# define SPROUT_NOEXCEPT noexcept
2014-08-14 13:55:49 +00:00
# define SPROUT_NOEXCEPT_OR_NOTHROW noexcept
# define SPROUT_NOEXCEPT_IF(COND) noexcept((COND))
# define SPROUT_NOEXCEPT_EXPR(EXPR) noexcept((EXPR))
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) noexcept((EXPR))
# define SPROUT_NOEXCEPT_IF_EXPR(EXPR) noexcept(noexcept((EXPR)))
2012-10-22 14:10:11 +00:00
#else // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
# define SPROUT_NOEXCEPT
2014-08-14 13:55:49 +00:00
# define SPROUT_NOEXCEPT_OR_NOTHROW throw()
# define SPROUT_NOEXCEPT_IF(COND)
# define SPROUT_NOEXCEPT_EXPR(EXPR) false
2012-10-22 14:10:11 +00:00
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) C
2014-08-14 13:55:49 +00:00
# define SPROUT_NOEXCEPT_IF_EXPR(EXPR)
2012-10-22 14:10:11 +00:00
#endif // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_TEMPLATE_ALIASES
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_TEMPLATE_ALIASES
# define SPROUT_USE_TEMPLATE_ALIASES 1
#else // #ifndef SPROUT_CONFIG_DISABLE_TEMPLATE_ALIASES
# define SPROUT_USE_TEMPLATE_ALIASES 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_TEMPLATE_ALIASES
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_USER_DEFINED_LITERALS
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_USER_DEFINED_LITERALS
# define SPROUT_USE_USER_DEFINED_LITERALS 1
#else // #ifndef SPROUT_CONFIG_DISABLE_USER_DEFINED_LITERALS
# define SPROUT_USE_USER_DEFINED_LITERALS 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_USER_DEFINED_LITERALS
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_DELEGATING_CONSTRUCTORS
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_DELEGATING_CONSTRUCTORS
# define SPROUT_USE_DELEGATING_CONSTRUCTORS 1
#else // #ifndef SPROUT_CONFIG_DISABLE_DELEGATING_CONSTRUCTORS
# define SPROUT_USE_DELEGATING_CONSTRUCTORS 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_DELEGATING_CONSTRUCTORS
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_UNICODE_LITERALS
//
#ifndef SPROUT_CONFIG_DISABLE_UNICODE_LITERALS
# define SPROUT_USE_UNICODE_LITERALS 1
#else // #ifndef SPROUT_CONFIG_DISABLE_UNICODE_LITERALS
# define SPROUT_USE_UNICODE_LITERALS 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_UNICODE_LITERALS
//
// SPROUT_USE_VARIABLE_TEMPLATES
//
#ifndef SPROUT_CONFIG_DISABLE_VARIABLE_TEMPLATES
# define SPROUT_USE_VARIABLE_TEMPLATES 1
#else // #ifndef SPROUT_CONFIG_DISABLE_VARIABLE_TEMPLATES
# define SPROUT_USE_VARIABLE_TEMPLATES 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_VARIABLE_TEMPLATES
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_BUILTIN_CMATH_FUNCTION
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_BUILTIN_CMATH_FUNCTION
# define SPROUT_USE_BUILTIN_CMATH_FUNCTION 1
#else // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_CMATH_FUNCTION
# define SPROUT_USE_BUILTIN_CMATH_FUNCTION 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_CMATH_FUNCTION
2014-03-19 10:50:00 +00:00
//
// SPROUT_USE_BUILTIN_COPYSIGN_FUNCTION
//
#ifndef SPROUT_CONFIG_DISABLE_BUILTIN_COPYSIGN_FUNCTION
# define SPROUT_USE_BUILTIN_COPYSIGN_FUNCTION 1
#else // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_COPYSIGN_FUNCTION
# define SPROUT_USE_BUILTIN_COPYSIGN_FUNCTION 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_COPYSIGN_FUNCTION
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_BUILTIN_BIT_OPERATION
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_BUILTIN_BIT_OPERATION
# define SPROUT_USE_BUILTIN_BIT_OPERATION 1
#else // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_BIT_OPERATION
# define SPROUT_USE_BUILTIN_BIT_OPERATION 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_BUILTIN_BIT_OPERATION
2013-02-19 16:12:56 +00:00
//
// SPROUT_NOERROR_LARGE_FLOAT_ROUNDING
//
2013-01-13 08:41:45 +00:00
#ifndef SPROUT_CONFIG_DISABLE_LARGE_FLOAT_ROUNDING
# define SPROUT_NOERROR_LARGE_FLOAT_ROUNDING 1
#else // #ifndef SPROUT_CONFIG_DISABLE_LARGE_FLOAT_ROUNDING
# define SPROUT_NOERROR_LARGE_FLOAT_ROUNDING 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_LARGE_FLOAT_ROUNDING
2012-12-02 08:06:37 +00:00
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION
//
2012-10-22 14:10:11 +00:00
#ifndef SPROUT_CONFIG_DISABLE_SUPPORT_TEMPORARY_CONTAINER_ITERATION
# define SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION 1
#else // #ifndef SPROUT_CONFIG_DISABLE_SUPPORT_TEMPORARY_CONTAINER_ITERATION
# ifdef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
# error config conflict: SPROUT_CONFIG_DISABLE_SUPPORT_TEMPORARY_CONTAINER_ITERATION, SPROUT_CONFIG_DISABLE_SUPPORT_TEMPORARY_CONTAINER_ITERATION
# endif // #ifndef SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
# define SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_SUPPORT_TEMPORARY_CONTAINER_ITERATION
2013-02-19 16:12:56 +00:00
//
// SPROUT_USE_PTR_INDEX_ITERATOR_IMPLEMENTATION
//
#ifndef SPROUT_CONFIG_DISABLE_SUPPORT_EFFICIENT_ARRAY_ITERATION
# define SPROUT_USE_PTR_INDEX_ITERATOR_IMPLEMENTATION 1
#else // #ifndef SPROUT_CONFIG_DISABLE_SUPPORT_EFFICIENT_ARRAY_ITERATION
# define SPROUT_USE_PTR_INDEX_ITERATOR_IMPLEMENTATION 0
#endif // #ifndef SPROUT_CONFIG_DISABLE_SUPPORT_EFFICIENT_ARRAY_ITERATION
2013-02-19 16:12:56 +00:00
//
// HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT
// HDR_ALGORITHM_MIN_MAX_SSCRISK_CEL_OR_SPROUT
// NS_SSCRISK_CEL_OR_SPROUT
//
#ifndef SPROUT_CONFIG_USE_SSCRISK_CEL
# define HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT <sprout/functional/functor.hpp>
# define HDR_ALGORITHM_MIN_MAX_SSCRISK_CEL_OR_SPROUT <sprout/detail/algorithm_min_max.hpp>
# define NS_SSCRISK_CEL_OR_SPROUT sprout
#else // #ifndef SPROUT_CONFIG_USE_SSCRISK_CEL
# define HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT <sscrisk/cel/functional.hpp>
# define HDR_ALGORITHM_MIN_MAX_SSCRISK_CEL_OR_SPROUT <sscrisk/cel/algorithm.hpp>
# define NS_SSCRISK_CEL_OR_SPROUT sscrisk::cel
#endif // #ifndef SPROUT_CONFIG_USE_SSCRISK_CEL
2014-06-05 07:44:19 +00:00
//
// SPROUT_PREVENT_MACRO_SUBSTITUTION
//
#define SPROUT_PREVENT_MACRO_SUBSTITUTION
2012-10-22 14:10:11 +00:00
#endif // #ifndef SPROUT_CONFIG_SUFFIX_HPP