144 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			144 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/*=============================================================================
							 | 
						||
| 
								 | 
							
								    Copyright (c) 2001-2007 Joel de Guzman
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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)
							 | 
						||
| 
								 | 
							
								==============================================================================*/
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_PHOENIX_CORE_LIMITS_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_PHOENIX_CORE_LIMITS_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/detail/workaround.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/preprocessor/arithmetic/add.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/preprocessor/inc.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/preprocessor/dec.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/preprocessor/stringize.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/version.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/phoenix/support/preprocessor/round.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								# if !defined( BOOST_PROTO_MAX_ARITY )
							 | 
						||
| 
								 | 
							
								#  define BOOST_PROTO_MAX_ARITY BOOST_PHOENIX_LIMIT
							 | 
						||
| 
								 | 
							
								# elif (BOOST_PROTO_MAX_ARITY < BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#  error "BOOST_PROTO_MAX_ARITY is set too low"
							 | 
						||
| 
								 | 
							
								# endif
							 | 
						||
| 
								 | 
							
								#include <boost/proto/proto_fwd.hpp>
							 | 
						||
| 
								 | 
							
								#else
							 | 
						||
| 
								 | 
							
								#include <boost/proto/proto_fwd.hpp>
							 | 
						||
| 
								 | 
							
								#define BOOST_PHOENIX_LIMIT BOOST_PROTO_MAX_ARITY
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#define PHOENIX_LIMIT BOOST_PHOENIX_LIMIT
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define BOOST_PHOENIX_LIMIT_STR BOOST_PP_STRINGIZE(BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_ACTOR
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_CALL
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EQUAL
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_PHX2_RESULT
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_EXPRESSION
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_BIND
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_SCOPE
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_ACTOR
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if BOOST_WORKAROUND(BOOST_MSVC, == 1800)
							 | 
						||
| 
								 | 
							
								// FIXME: temporary disable on MSVC 2013.
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_SCOPE
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
							 | 
						||
| 
								 | 
							
								// FIXME: Due to proto, some compilers cannot expand parameter pack.
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_ACTOR
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_CALL
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION_EVAL
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_PHX2_RESULT
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_EXPRESSION
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_BIND
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_SCOPE
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_OBJECT
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_OPERATOR
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_NO_VARIADIC_FUNCTION
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_ARG_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_ARG_LIMIT < 5)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_ARG_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_ARG_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_ACTOR_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_ACTOR_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT"
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_ACTOR_LIMIT < 3)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_ACTOR_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_ACTOR_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_PERFECT_FORWARD_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_PERFECT_FORWARD_LIMIT 3
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT"
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT < 3)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_PERFECT_FORWARD_LIMIT != 3 && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_COMPOSITE_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_COMPOSITE_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_COMPOSITE_LIMIT < 5)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_COMPOSITE_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_COMPOSITE_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_MEMBER_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_MEMBER_LIMIT BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT"
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_MEMBER_LIMIT < 3)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_MEMBER_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_MEMBER_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_CATCH_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_CATCH_LIMIT BOOST_PHOENIX_COMPOSITE_LIMIT
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_CATCH_LIMIT < 1)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_CATCH_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_CATCH_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_DYNAMIC_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DYNAMIC_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_DYNAMIC_LIMIT < 1)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_DYNAMIC_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_DYNAMIC_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if !defined(BOOST_PHOENIX_LOCAL_LIMIT)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_LOCAL_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
							 | 
						||
| 
								 | 
							
								#elif (BOOST_PHOENIX_LOCAL_LIMIT < 3)
							 | 
						||
| 
								 | 
							
								# error "BOOST_PHOENIX_LOCAL_LIMIT is set too low"
							 | 
						||
| 
								 | 
							
								#elif BOOST_PHOENIX_LOCAL_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
							 | 
						||
| 
								 | 
							
								# define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 |