sequence_wrapper.hpp
Go to the documentation of this file.
1 
2 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
3 
4 #if !defined(BOOST_PP_IS_ITERATING)
5 
7 
8 // Copyright Aleksey Gurtovoy 2000-2008
9 //
10 // Distributed under the Boost Software License, Version 1.0.
11 // (See accompanying file LICENSE_1_0.txt or copy at
12 // http://www.boost.org/LICENSE_1_0.txt)
13 //
14 // See http://www.boost.org/libs/mpl for documentation.
15 
16 // $Id: sequence_wrapper.hpp 13472 2017-08-22 07:53:44Z richean $
17 // $Date: 2017-08-22 09:53:44 +0200 (Di, 22 Aug 2017) $
18 // $Revision: 13472 $
19 
23 
32 
33 #if defined(BOOST_MPL_PREPROCESSING_MODE)
34 # undef LONG_MAX
35 #endif
36 
37 namespace boost { namespace mpl {
38 
39 #if !defined(AUX778076_SEQUENCE_BASE_NAME)
40 # define AUX778076_SEQUENCE_BASE_NAME AUX778076_SEQUENCE_NAME
41 #endif
42 
43 #if !defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
44 
45 # define AUX778076_SEQUENCE_PARAM_NAME T
46 # define AUX778076_SEQUENCE_TEMPLATE_PARAM typename T
47 # define AUX778076_SEQUENCE_DEFAULT na
48 
49 # define AUX778076_SEQUENCE_NAME_N(n) \
50  BOOST_PP_CAT(AUX778076_SEQUENCE_BASE_NAME,n) \
51 
52 
53 # define AUX778076_SEQUENCE_PARAMS() \
54  BOOST_PP_ENUM_PARAMS( \
55  AUX778076_SEQUENCE_LIMIT \
56  , AUX778076_SEQUENCE_TEMPLATE_PARAM \
57  ) \
58 
59 
60 # define AUX778076_SEQUENCE_ARGS() \
61  BOOST_PP_ENUM_PARAMS( \
62  AUX778076_SEQUENCE_LIMIT \
63  , T \
64  ) \
65 
66 
67 # define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
68  BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
69  AUX778076_SEQUENCE_LIMIT \
70  , AUX778076_SEQUENCE_TEMPLATE_PARAM \
71  , AUX778076_SEQUENCE_DEFAULT \
72  ) \
73 
74 
75 # define AUX778076_SEQUENCE_N_PARAMS(n) \
76  BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
77 
78 
79 # define AUX778076_SEQUENCE_N_ARGS(n) \
80  BOOST_PP_ENUM_PARAMS(n, T) \
81 
82 
83 # define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
84  BOOST_PP_ENUM_PARAMS(n, T) \
85  BOOST_PP_COMMA_IF(n) \
86  BOOST_PP_ENUM( \
87  BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
88  , BOOST_PP_TUPLE_ELEM_3_2 \
89  , AUX778076_SEQUENCE_DEFAULT \
90  ) \
91 
92 
93 #else // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
94 
95 # define AUX778076_SEQUENCE_PARAM_NAME C
96 # define AUX778076_SEQUENCE_TEMPLATE_PARAM BOOST_MPL_AUX_NTTP_DECL(long, C)
97 # define AUX778076_SEQUENCE_DEFAULT LONG_MAX
98 
99 # define AUX778076_SEQUENCE_PARAMS() \
100  typename T, BOOST_PP_ENUM_PARAMS( \
101  AUX778076_SEQUENCE_LIMIT \
102  , AUX778076_SEQUENCE_TEMPLATE_PARAM \
103  ) \
104 
105 
106 # define AUX778076_SEQUENCE_ARGS() \
107  T, BOOST_PP_ENUM_PARAMS( \
108  AUX778076_SEQUENCE_LIMIT \
109  , C \
110  ) \
111 
112 
113 # define AUX778076_SEQUENCE_DEFAULT_PARAMS() \
114  typename T, \
115  BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT( \
116  AUX778076_SEQUENCE_LIMIT \
117  , AUX778076_SEQUENCE_TEMPLATE_PARAM \
118  , AUX778076_SEQUENCE_DEFAULT \
119  ) \
120 
121 
122 # define AUX778076_SEQUENCE_N_PARAMS(n) \
123  typename T BOOST_PP_COMMA_IF(n) \
124  BOOST_PP_ENUM_PARAMS(n, AUX778076_SEQUENCE_TEMPLATE_PARAM) \
125 
126 
127 # if !defined(AUX778076_SEQUENCE_CONVERT_CN_TO)
128 # define AUX778076_SEQUENCE_CONVERT_CN_TO(z,n,TARGET) BOOST_PP_CAT(C,n)
129 # endif
130 
131 # define AUX778076_SEQUENCE_N_ARGS(n) \
132  T BOOST_PP_COMMA_IF(n) \
133  BOOST_PP_ENUM(n,AUX778076_SEQUENCE_CONVERT_CN_TO,T) \
134 
135 
136 # define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n) \
137  T, BOOST_PP_ENUM_PARAMS(n, C) \
138  BOOST_PP_COMMA_IF(n) \
139  BOOST_PP_ENUM( \
140  BOOST_PP_SUB_D(1,AUX778076_SEQUENCE_LIMIT,n) \
141  , BOOST_PP_TUPLE_ELEM_3_2 \
142  , AUX778076_SEQUENCE_DEFAULT \
143  ) \
144 
145 
146 #endif // AUX778076_SEQUENCE_INTEGRAL_WRAPPER
147 
148 
149 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
150 // forward declaration
151 template<
153  >
155 #else
156 namespace aux {
157 template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
158 struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser);
159 }
160 #endif
161 
162 #define BOOST_PP_ITERATION_PARAMS_1 \
163  (3,(0, AUX778076_SEQUENCE_LIMIT, <boost/mpl/aux_/sequence_wrapper.hpp>))
164 #include BOOST_PP_ITERATE()
165 
166 // real C++ version is already taken care of
167 #if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
168 
169 namespace aux {
170 // ???_count_args
171 #define AUX778076_COUNT_ARGS_PREFIX AUX778076_SEQUENCE_NAME
172 #define AUX778076_COUNT_ARGS_DEFAULT AUX778076_SEQUENCE_DEFAULT
173 #define AUX778076_COUNT_ARGS_PARAM_NAME AUX778076_SEQUENCE_PARAM_NAME
174 #define AUX778076_COUNT_ARGS_TEMPLATE_PARAM AUX778076_SEQUENCE_TEMPLATE_PARAM
175 #define AUX778076_COUNT_ARGS_ARITY AUX778076_SEQUENCE_LIMIT
176 #define AUX778076_COUNT_ARGS_USE_STANDARD_PP_PRIMITIVES
178 
179 template<
181  >
182 struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)
183 {
184  typedef aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_count_args)<
185  BOOST_PP_ENUM_PARAMS(AUX778076_SEQUENCE_LIMIT, AUX778076_SEQUENCE_PARAM_NAME)
186  > arg_num_;
187 
188  typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)< arg_num_::value >
189  ::template result_< AUX778076_SEQUENCE_ARGS() >::type type;
190 };
191 
192 } // namespace aux
193 
194 template<
196  >
197 struct AUX778076_SEQUENCE_NAME
198  : aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
199  AUX778076_SEQUENCE_ARGS()
200  >::type
201 {
202  typedef typename aux::BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_impl)<
204  >::type type;
205 };
206 
207 #endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
208 
209 # undef AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS
210 # undef AUX778076_SEQUENCE_N_ARGS
211 # undef AUX778076_SEQUENCE_CONVERT_CN_TO
212 # undef AUX778076_SEQUENCE_N_PARAMS
213 # undef AUX778076_SEQUENCE_DEFAULT_PARAMS
214 # undef AUX778076_SEQUENCE_ARGS
215 # undef AUX778076_SEQUENCE_PARAMS
216 # undef AUX778076_SEQUENCE_NAME_N
217 # undef AUX778076_SEQUENCE_DEFAULT
218 # undef AUX778076_SEQUENCE_TEMPLATE_PARAM
219 # undef AUX778076_SEQUENCE_PARAM_NAME
220 # undef AUX778076_SEQUENCE_LIMIT
221 # undef AUX778076_SEQUENCE_BASE_NAME
222 # undef AUX778076_SEQUENCE_NAME
223 # undef AUX778076_SEQUENCE_INTEGRAL_WRAPPER
224 
225 }}
226 
228 
229 #else
230 #define i_ BOOST_PP_FRAME_ITERATION(1)
231 
232 # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
233 
234 #if i_ == AUX778076_SEQUENCE_LIMIT
235 
237 template<
239  >
240 struct AUX778076_SEQUENCE_NAME
241  : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
242 {
243  typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
244 };
245 
246 #else
247 
248 template<
250  >
251 struct AUX778076_SEQUENCE_NAME< AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(i_) >
252  : AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >
253 {
254 #if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
255  typedef typename AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
256 #else
257  typedef AUX778076_SEQUENCE_NAME_N(i_)< AUX778076_SEQUENCE_N_ARGS(i_) >::type type;
258 #endif
259 };
260 
261 #endif // i_ == AUX778076_SEQUENCE_LIMIT
262 
263 # else
264 
265 namespace aux {
266 
267 template<>
268 struct BOOST_PP_CAT(AUX778076_SEQUENCE_NAME,_chooser)<i_>
269 {
270  template<
272  >
273  struct result_
274  {
275 #if i_ > 0 || defined(AUX778076_SEQUENCE_INTEGRAL_WRAPPER)
276  typedef typename AUX778076_SEQUENCE_NAME_N(i_)<
278  >::type type;
279 #else
280  typedef AUX778076_SEQUENCE_NAME_N(i_)<
282  >::type type;
283 #endif
284  };
285 };
286 
287 } // namespace aux
288 
289 # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
290 
291 #undef i_
292 #endif // BOOST_PP_IS_ITERATING
BOOST_PP_CAT
struct BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX, _count_args)
Definition: count_args.hpp:86
AUX778076_SEQUENCE_NAME_N
#define AUX778076_SEQUENCE_NAME_N(n)
Definition: sequence_wrapper.hpp:49
boost::mpl::aux::BOOST_PP_CAT
struct BOOST_PP_CAT(AUX778076_OP_NAME, impl)
Definition: logical_op.hpp:64
boost::mpl::AUX778076_SEQUENCE_NAME
Definition: sequence_wrapper.hpp:154
enum_params_with_a_default.hpp
ctps.hpp
count_args.hpp
AUX778076_SEQUENCE_PARAM_NAME
#define AUX778076_SEQUENCE_PARAM_NAME
Definition: sequence_wrapper.hpp:45
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
sub.hpp
AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS
#define AUX778076_SEQUENCE_N_PARTIAL_SPEC_ARGS(n)
Definition: sequence_wrapper.hpp:83
nttp_decl.hpp
enum.hpp
AUX778076_SEQUENCE_PARAMS
#define AUX778076_SEQUENCE_PARAMS()
Definition: sequence_wrapper.hpp:53
comma_if.hpp
BOOST_PP_ENUM_PARAMS
#define BOOST_PP_ENUM_PARAMS(count, param)
Definition: repetition/enum_params.hpp:26
elem.hpp
AUX778076_SEQUENCE_ARGS
#define AUX778076_SEQUENCE_ARGS()
Definition: sequence_wrapper.hpp:60
AUX778076_SEQUENCE_N_PARAMS
#define AUX778076_SEQUENCE_N_PARAMS(n)
Definition: sequence_wrapper.hpp:75
AUX778076_SEQUENCE_DEFAULT_PARAMS
#define AUX778076_SEQUENCE_DEFAULT_PARAMS()
Definition: sequence_wrapper.hpp:67
enum_params.hpp
repeat.hpp
static_constant.hpp
AUX778076_SEQUENCE_N_ARGS
#define AUX778076_SEQUENCE_N_ARGS(n)
Definition: sequence_wrapper.hpp:79
iterate.hpp


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:46:46