Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-15 10:01:32

0001 /*=============================================================================
0002     Copyright (c) 2001-2007 Joel de Guzman
0003 
0004     Distributed under the Boost Software License, Version 1.0. (See accompanying 
0005     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0006 ==============================================================================*/
0007 #ifndef BOOST_PHOENIX_CORE_LIMITS_HPP
0008 #define BOOST_PHOENIX_CORE_LIMITS_HPP
0009 
0010 #include <boost/config.hpp>
0011 #include <boost/detail/workaround.hpp>
0012 #include <boost/preprocessor/arithmetic/add.hpp>
0013 #include <boost/preprocessor/inc.hpp>
0014 #include <boost/preprocessor/dec.hpp>
0015 #include <boost/preprocessor/stringize.hpp>
0016 #include <boost/phoenix/version.hpp>
0017 #include <boost/phoenix/support/preprocessor/round.hpp>
0018 
0019 
0020 #if defined(BOOST_PHOENIX_LIMIT)
0021 # if !defined( BOOST_PROTO_MAX_ARITY )
0022 #  define BOOST_PROTO_MAX_ARITY BOOST_PHOENIX_LIMIT
0023 # elif (BOOST_PROTO_MAX_ARITY < BOOST_PHOENIX_LIMIT)
0024 #  error "BOOST_PROTO_MAX_ARITY is set too low"
0025 # endif
0026 #include <boost/proto/proto_fwd.hpp>
0027 #else
0028 #include <boost/proto/proto_fwd.hpp>
0029 #define BOOST_PHOENIX_LIMIT BOOST_PROTO_MAX_ARITY
0030 #endif
0031 
0032 #if !defined(PHOENIX_LIMIT)
0033 #define PHOENIX_LIMIT BOOST_PHOENIX_LIMIT
0034 #endif
0035 
0036 #define BOOST_PHOENIX_LIMIT_STR BOOST_PP_STRINGIZE(BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT))
0037 
0038 #ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
0039 # define BOOST_PHOENIX_NO_VARIADIC_ACTOR
0040 # define BOOST_PHOENIX_NO_VARIADIC_CALL
0041 # define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EQUAL
0042 # define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
0043 # define BOOST_PHOENIX_NO_VARIADIC_EXPRESSION
0044 # define BOOST_PHOENIX_NO_VARIADIC_BIND
0045 # define BOOST_PHOENIX_NO_VARIADIC_SCOPE
0046 #endif
0047 #ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
0048 # define BOOST_PHOENIX_NO_VARIADIC_ACTOR
0049 # define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
0050 #endif
0051 
0052 #if BOOST_WORKAROUND(BOOST_MSVC, == 1800)
0053 // FIXME: temporary disable on MSVC 2013.
0054 # define BOOST_PHOENIX_NO_VARIADIC_SCOPE
0055 #endif
0056 
0057 #ifdef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
0058 // FIXME: Due to proto, some compilers cannot expand parameter pack.
0059 # define BOOST_PHOENIX_NO_VARIADIC_ACTOR
0060 # define BOOST_PHOENIX_NO_VARIADIC_CALL
0061 # define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
0062 # define BOOST_PHOENIX_NO_VARIADIC_EXPRESSION
0063 # define BOOST_PHOENIX_NO_VARIADIC_BIND
0064 # define BOOST_PHOENIX_NO_VARIADIC_SCOPE
0065 #endif
0066 
0067 # define BOOST_PHOENIX_NO_VARIADIC_OBJECT
0068 # define BOOST_PHOENIX_NO_VARIADIC_OPERATOR
0069 # define BOOST_PHOENIX_NO_VARIADIC_FUNCTION
0070 
0071 #if !defined(BOOST_PHOENIX_ARG_LIMIT)
0072 # define BOOST_PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
0073 #elif (BOOST_PHOENIX_ARG_LIMIT < 5)
0074 # error "BOOST_PHOENIX_ARG_LIMIT is set too low"
0075 #elif BOOST_PHOENIX_ARG_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0076 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0077 #endif
0078 
0079 #if !defined(BOOST_PHOENIX_ACTOR_LIMIT)
0080 # define BOOST_PHOENIX_ACTOR_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
0081 #elif (BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT)
0082 # error "BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT"
0083 #elif (BOOST_PHOENIX_ACTOR_LIMIT < 3)
0084 # error "BOOST_PHOENIX_ACTOR_LIMIT is set too low"
0085 #elif BOOST_PHOENIX_ACTOR_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0086 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0087 #endif
0088 
0089 #if !defined(BOOST_PHOENIX_PERFECT_FORWARD_LIMIT)
0090 # define BOOST_PHOENIX_PERFECT_FORWARD_LIMIT 3
0091 #elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT)
0092 # error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT"
0093 #elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT < 3)
0094 # error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT is set too low"
0095 #elif BOOST_PHOENIX_PERFECT_FORWARD_LIMIT != 3 && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0096 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0097 #endif
0098 
0099 #if !defined(BOOST_PHOENIX_COMPOSITE_LIMIT)
0100 # define BOOST_PHOENIX_COMPOSITE_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
0101 #elif (BOOST_PHOENIX_COMPOSITE_LIMIT < 5)
0102 # error "BOOST_PHOENIX_COMPOSITE_LIMIT is set too low"
0103 #elif BOOST_PHOENIX_COMPOSITE_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0104 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0105 #endif
0106 
0107 #if !defined(BOOST_PHOENIX_MEMBER_LIMIT)
0108 # define BOOST_PHOENIX_MEMBER_LIMIT BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)
0109 #elif (BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT)
0110 # error "BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT"
0111 #elif (BOOST_PHOENIX_MEMBER_LIMIT < 3)
0112 # error "BOOST_PHOENIX_MEMBER_LIMIT is set too low"
0113 #elif BOOST_PHOENIX_MEMBER_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0114 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0115 #endif
0116 
0117 #if !defined(BOOST_PHOENIX_CATCH_LIMIT)
0118 # define BOOST_PHOENIX_CATCH_LIMIT BOOST_PHOENIX_COMPOSITE_LIMIT
0119 #elif (BOOST_PHOENIX_CATCH_LIMIT < 1)
0120 # error "BOOST_PHOENIX_CATCH_LIMIT is set too low"
0121 #elif BOOST_PHOENIX_CATCH_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0122 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0123 #endif
0124 
0125 #if !defined(BOOST_PHOENIX_DYNAMIC_LIMIT)
0126 # define BOOST_PHOENIX_DYNAMIC_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
0127 #elif (BOOST_PHOENIX_DYNAMIC_LIMIT < 1)
0128 # error "BOOST_PHOENIX_DYNAMIC_LIMIT is set too low"
0129 #elif BOOST_PHOENIX_DYNAMIC_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0130 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0131 #endif
0132 
0133 #if !defined(BOOST_PHOENIX_LOCAL_LIMIT)
0134 # define BOOST_PHOENIX_LOCAL_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
0135 #elif (BOOST_PHOENIX_LOCAL_LIMIT < 3)
0136 # error "BOOST_PHOENIX_LOCAL_LIMIT is set too low"
0137 #elif BOOST_PHOENIX_LOCAL_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
0138 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
0139 #endif
0140 
0141 #endif