Chris@16
|
1 /*=============================================================================
|
Chris@16
|
2 Copyright (c) 2001-2007 Joel de Guzman
|
Chris@16
|
3
|
Chris@16
|
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Chris@16
|
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
6 ==============================================================================*/
|
Chris@16
|
7 #ifndef BOOST_PHOENIX_CORE_LIMITS_HPP
|
Chris@16
|
8 #define BOOST_PHOENIX_CORE_LIMITS_HPP
|
Chris@16
|
9
|
Chris@16
|
10 #include <boost/preprocessor/arithmetic/add.hpp>
|
Chris@16
|
11 #include <boost/preprocessor/inc.hpp>
|
Chris@16
|
12 #include <boost/preprocessor/dec.hpp>
|
Chris@16
|
13 #include <boost/preprocessor/stringize.hpp>
|
Chris@16
|
14 #include <boost/phoenix/version.hpp>
|
Chris@16
|
15 #include <boost/phoenix/support/preprocessor/round.hpp>
|
Chris@16
|
16
|
Chris@16
|
17
|
Chris@16
|
18 #if defined(BOOST_PHOENIX_LIMIT)
|
Chris@101
|
19 # if !defined( BOOST_PROTO_MAX_ARITY )
|
Chris@101
|
20 # define BOOST_PROTO_MAX_ARITY BOOST_PHOENIX_LIMIT
|
Chris@101
|
21 # elif (BOOST_PROTO_MAX_ARITY < BOOST_PHOENIX_LIMIT)
|
Chris@101
|
22 # error "BOOST_PROTO_MAX_ARITY is set too low"
|
Chris@101
|
23 # endif
|
Chris@16
|
24 #include <boost/proto/proto_fwd.hpp>
|
Chris@16
|
25 #else
|
Chris@16
|
26 #include <boost/proto/proto_fwd.hpp>
|
Chris@16
|
27 #define BOOST_PHOENIX_LIMIT BOOST_PROTO_MAX_ARITY
|
Chris@16
|
28 #endif
|
Chris@16
|
29
|
Chris@101
|
30 #if !defined(PHOENIX_LIMIT)
|
Chris@16
|
31 #define PHOENIX_LIMIT BOOST_PHOENIX_LIMIT
|
Chris@101
|
32 #endif
|
Chris@16
|
33
|
Chris@16
|
34 #define BOOST_PHOENIX_LIMIT_STR BOOST_PP_STRINGIZE(BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT))
|
Chris@16
|
35
|
Chris@16
|
36 #if !defined(BOOST_PHOENIX_ARG_LIMIT)
|
Chris@16
|
37 # define BOOST_PHOENIX_ARG_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
|
Chris@16
|
38 #elif (BOOST_PHOENIX_ARG_LIMIT < 5)
|
Chris@16
|
39 # error "BOOST_PHOENIX_ARG_LIMIT is set too low"
|
Chris@16
|
40 #elif BOOST_PHOENIX_ARG_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
41 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
42 #endif
|
Chris@16
|
43
|
Chris@16
|
44 #if !defined(BOOST_PHOENIX_ACTOR_LIMIT)
|
Chris@16
|
45 # define BOOST_PHOENIX_ACTOR_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
|
Chris@16
|
46 #elif (BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT)
|
Chris@16
|
47 # error "BOOST_PHOENIX_ACTOR_LIMIT > BOOST_PHOENIX_ARG_LIMIT"
|
Chris@16
|
48 #elif (BOOST_PHOENIX_ACTOR_LIMIT < 3)
|
Chris@16
|
49 # error "BOOST_PHOENIX_ACTOR_LIMIT is set too low"
|
Chris@16
|
50 #elif BOOST_PHOENIX_ACTOR_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
51 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
52 #endif
|
Chris@16
|
53
|
Chris@16
|
54 #if !defined(BOOST_PHOENIX_PERFECT_FORWARD_LIMIT)
|
Chris@16
|
55 # define BOOST_PHOENIX_PERFECT_FORWARD_LIMIT 3
|
Chris@16
|
56 #elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT)
|
Chris@16
|
57 # error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT > BOOST_PHOENIX_ACTOR_LIMIT"
|
Chris@16
|
58 #elif (BOOST_PHOENIX_PERFECT_FORWARD_LIMIT < 3)
|
Chris@16
|
59 # error "BOOST_PHOENIX_PERFECT_FORWARD_LIMIT is set too low"
|
Chris@16
|
60 #elif BOOST_PHOENIX_PERFECT_FORWARD_LIMIT != 3 && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
61 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
62 #endif
|
Chris@16
|
63
|
Chris@16
|
64 #if !defined(BOOST_PHOENIX_COMPOSITE_LIMIT)
|
Chris@16
|
65 # define BOOST_PHOENIX_COMPOSITE_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
|
Chris@16
|
66 #elif (BOOST_PHOENIX_COMPOSITE_LIMIT < 5)
|
Chris@16
|
67 # error "BOOST_PHOENIX_COMPOSITE_LIMIT is set too low"
|
Chris@16
|
68 #elif BOOST_PHOENIX_COMPOSITE_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
69 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
70 #endif
|
Chris@16
|
71
|
Chris@16
|
72 #if !defined(BOOST_PHOENIX_MEMBER_LIMIT)
|
Chris@16
|
73 # define BOOST_PHOENIX_MEMBER_LIMIT BOOST_PP_DEC(BOOST_PHOENIX_COMPOSITE_LIMIT)
|
Chris@16
|
74 #elif (BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT)
|
Chris@16
|
75 # error "BOOST_PHOENIX_MEMBER_LIMIT > BOOST_PHOENIX_COMPOSITE_LIMIT"
|
Chris@16
|
76 #elif (BOOST_PHOENIX_MEMBER_LIMIT < 3)
|
Chris@16
|
77 # error "BOOST_PHOENIX_MEMBER_LIMIT is set too low"
|
Chris@16
|
78 #elif BOOST_PHOENIX_MEMBER_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
79 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
80 #endif
|
Chris@16
|
81
|
Chris@16
|
82 #if !defined(BOOST_PHOENIX_CATCH_LIMIT)
|
Chris@16
|
83 # define BOOST_PHOENIX_CATCH_LIMIT BOOST_PHOENIX_COMPOSITE_LIMIT
|
Chris@16
|
84 #elif (BOOST_PHOENIX_CATCH_LIMIT < 1)
|
Chris@16
|
85 # error "BOOST_PHOENIX_CATCH_LIMIT is set too low"
|
Chris@16
|
86 #elif BOOST_PHOENIX_CATCH_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
87 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
88 #endif
|
Chris@16
|
89
|
Chris@16
|
90 #if !defined(BOOST_PHOENIX_DYNAMIC_LIMIT)
|
Chris@16
|
91 # define BOOST_PHOENIX_DYNAMIC_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
|
Chris@16
|
92 #elif (BOOST_PHOENIX_DYNAMIC_LIMIT < 1)
|
Chris@16
|
93 # error "BOOST_PHOENIX_DYNAMIC_LIMIT is set too low"
|
Chris@16
|
94 #elif BOOST_PHOENIX_DYNAMIC_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
95 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
96 #endif
|
Chris@16
|
97
|
Chris@16
|
98 #if !defined(BOOST_PHOENIX_LOCAL_LIMIT)
|
Chris@16
|
99 # define BOOST_PHOENIX_LOCAL_LIMIT BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT)
|
Chris@16
|
100 #elif (BOOST_PHOENIX_LOCAL_LIMIT < 3)
|
Chris@16
|
101 # error "BOOST_PHOENIX_LOCAL_LIMIT is set too low"
|
Chris@16
|
102 #elif BOOST_PHOENIX_LOCAL_LIMIT != BOOST_PHOENIX_PP_ROUND_UP(BOOST_PHOENIX_LIMIT) && !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
Chris@16
|
103 # define BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES
|
Chris@16
|
104 #endif
|
Chris@16
|
105
|
Chris@16
|
106 #endif
|