2013-08-08 09:54:33 +00:00
|
|
|
/*=============================================================================
|
2014-01-08 07:48:12 +00:00
|
|
|
Copyright (c) 2011-2014 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
|
|
|
|
# define SPROUT_CONSTEXPR_OR_CONST constexpr
|
|
|
|
# define SPROUT_STATIC_CONSTEXPR static constexpr
|
|
|
|
#
|
|
|
|
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_INNER(EXPR) = EXPR
|
|
|
|
# define SPROUT_STATIC_CONSTEXPR_DATA_MEMBER_OUTER(EXPR)
|
|
|
|
#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
|
|
|
|
|
2013-06-15 13:14:24 +00:00
|
|
|
//
|
|
|
|
// SPROUT_CXX14_CONSTEXPR
|
|
|
|
//
|
2013-06-29 04:27:11 +00:00
|
|
|
#ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
|
|
|
|
# define SPROUT_CXX14_CONSTEXPR constexpr
|
|
|
|
#else // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
|
|
|
|
# define SPROUT_CXX14_CONSTEXPR
|
|
|
|
#endif // #ifndef SPROUT_CONFIG_DISABLE_CXX14_CONSTEXPR
|
2013-06-15 13:14:24 +00:00
|
|
|
|
2013-10-27 07:25:13 +00:00
|
|
|
//
|
|
|
|
// 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_DEFAULT_CONSTRUCTOR_DECL = default;
|
|
|
|
# define SPROUT_DEFAULTED_DESTRUCTOR_DECL = default;
|
|
|
|
#else // #ifndef SPROUT_CONFIG_DISABLE_DEFAULTED_FUNCTIONS
|
2014-01-13 15:18:06 +00:00
|
|
|
# define SPROUT_DEFAULTED_DEFAULT_CONSTRUCTOR_DECL SPROUT_NOEXCEPT {}
|
|
|
|
# define SPROUT_DEFAULTED_DESTRUCTOR_DECL SPROUT_NOEXCEPT {}
|
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;
|
|
|
|
#else // #ifndef SPROUT_CONFIG_DISABLE_DELETED_FUNCTIONS
|
|
|
|
# define SPROUT_DELETED_FUNCTION_DECL ;
|
|
|
|
#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)
|
|
|
|
# define SPROUT_DEPRECATED) __declspec(deprecated)
|
|
|
|
#else
|
|
|
|
# define SPROUT_DEPRECATED
|
|
|
|
#endif
|
|
|
|
|
2013-02-19 16:12:56 +00:00
|
|
|
//
|
|
|
|
// SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS
|
2013-05-28 03:36:36 +00:00
|
|
|
// SPROUT_EXPLICIT_CONVERSION
|
2013-02-19 16:12:56 +00:00
|
|
|
//
|
2013-02-18 17:49:10 +00:00
|
|
|
#ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
|
|
|
|
# define SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS 1
|
2013-05-28 03:36:36 +00:00
|
|
|
# define SPROUT_EXPLICIT_CONVERSION explicit
|
2013-02-18 17:49:10 +00:00
|
|
|
#else // #ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
|
|
|
|
# define SPROUT_USE_EXPLICIT_CONVERSION_OPERATORS 0
|
2013-05-28 03:36:36 +00:00
|
|
|
# define SPROUT_EXPLICIT_CONVERSION
|
2013-02-18 17:49:10 +00:00
|
|
|
#endif // #ifndef SPROUT_CONFIG_DISABLE_EXPLICIT_CONVERSION_OPERATORS
|
|
|
|
|
2013-02-19 16:12:56 +00:00
|
|
|
//
|
|
|
|
// SPROUT_NOEXCEPT
|
|
|
|
// SPROUT_NOEXCEPT_EXPR
|
|
|
|
// SPROUT_NOEXCEPT_EXPR_OR_DEFAULT
|
|
|
|
//
|
2012-10-22 14:10:11 +00:00
|
|
|
#ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
|
|
|
|
# define SPROUT_NOEXCEPT noexcept
|
|
|
|
# define SPROUT_NOEXCEPT_EXPR(EXPR) noexcept(EXPR)
|
|
|
|
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) noexcept(EXPR)
|
|
|
|
#else // #ifndef SPROUT_CONFIG_DISABLE_NOEXCEPT
|
|
|
|
# define SPROUT_NOEXCEPT
|
|
|
|
# define SPROUT_NOEXCEPT_EXPR(EXPR)
|
|
|
|
# define SPROUT_NOEXCEPT_EXPR_OR_DEFAULT(EXPR, C) C
|
|
|
|
#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
|
|
|
|
//
|
2013-02-18 17:49:10 +00:00
|
|
|
#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
|
|
|
|
|
2014-01-06 13:45:41 +00:00
|
|
|
//
|
|
|
|
// 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
|
|
|
|
|
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
|
|
|
|
//
|
2012-12-21 13:35:48 +00:00
|
|
|
#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
|
|
|
|
|
2012-10-22 14:10:11 +00:00
|
|
|
#endif // #ifndef SPROUT_CONFIG_SUFFIX_HPP
|