apply.hpp
Go to the documentation of this file.
1 
2 #if !defined(BOOST_PP_IS_ITERATING)
3 
5 
6 #ifndef BOOST_MPL_APPLY_HPP_INCLUDED
7 #define BOOST_MPL_APPLY_HPP_INCLUDED
8 
9 // Copyright Aleksey Gurtovoy 2000-2004
10 //
11 // Distributed under the Boost Software License, Version 1.0.
12 // (See accompanying file LICENSE_1_0.txt or copy at
13 // http://www.boost.org/LICENSE_1_0.txt)
14 //
15 // See http://www.boost.org/libs/mpl for documentation.
16 
17 // $Id: apply.hpp 13472 2017-08-22 07:53:44Z richean $
18 // $Date: 2017-08-22 09:53:44 +0200 (Di, 22 Aug 2017) $
19 // $Revision: 13472 $
20 
21 #if !defined(BOOST_MPL_PREPROCESSING_MODE)
22 # include <boost/mpl/apply_fwd.hpp>
23 # include <boost/mpl/apply_wrap.hpp>
25 # include <boost/mpl/lambda.hpp>
26 # include <boost/mpl/aux_/na.hpp>
28 #endif
29 
31 
32 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
33  && !defined(BOOST_MPL_PREPROCESSING_MODE)
34 
35 # define BOOST_MPL_PREPROCESSED_HEADER apply.hpp
37 
38 #else
39 
51 
56 
57 namespace boost { namespace mpl {
58 
59 // local macros, #undef-ined at the end of the header
60 # define AUX778076_APPLY_PARAMS(param) \
61  BOOST_MPL_PP_PARAMS( \
62  BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
63  , param \
64  ) \
65 
66 
67 # define AUX778076_APPLY_DEF_PARAMS(param, value) \
68  BOOST_MPL_PP_DEFAULT_PARAMS( \
69  BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
70  , param \
71  , value \
72  ) \
73 
74 
75 # define AUX778076_APPLY_N_PARAMS(n, param) \
76  BOOST_MPL_PP_PARAMS(n, param) \
77 
78 
79 # define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
80  BOOST_PP_COMMA_IF(n) \
81  BOOST_MPL_PP_PARAMS(n, param) \
82 
83 
84 # define AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(n, param, def) \
85  BOOST_PP_COMMA_IF(n) \
86  BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
87 
88 
89 # define AUX778076_APPLY_N_SPEC_PARAMS(n, param) \
90  BOOST_MPL_PP_ENUM(BOOST_PP_INC(n), param) \
91 
92 
93 
94 #define BOOST_PP_ITERATION_PARAMS_1 \
95  (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply.hpp>))
96 #include BOOST_PP_ITERATE()
97 
98 # if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
99 // real C++ version is already taken care of
100 # if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
101 
102 namespace aux {
103 // apply_count_args
104 #define AUX778076_COUNT_ARGS_PREFIX apply
105 #define AUX778076_COUNT_ARGS_DEFAULT na
106 #define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
108 }
109 
110 
111 template<
112  typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
113  >
114 struct apply
115  : aux::apply_chooser<
116  aux::apply_count_args< AUX778076_APPLY_PARAMS(T) >::value
117  >::template result_< F, AUX778076_APPLY_PARAMS(T) >::type
118 {
119 };
120 
121 # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
122 # endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
123 
124 # undef AUX778076_APPLY_N_SPEC_PARAMS
125 # undef AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS
126 # undef AUX778076_APPLY_N_COMMA_PARAMS
127 # undef AUX778076_APPLY_N_PARAMS
128 # undef AUX778076_APPLY_DEF_PARAMS
129 # undef AUX778076_APPLY_PARAMS
130 
131 }}
132 
133 #endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
134 #endif // BOOST_MPL_APPLY_HPP_INCLUDED
135 
137 
138 // For gcc 4.4 compatability, we must include the
139 // BOOST_PP_ITERATION_DEPTH test inside an #else clause.
140 #else // BOOST_PP_IS_ITERATING
141 #if BOOST_PP_ITERATION_DEPTH() == 1
142 
143 # define i_ BOOST_PP_FRAME_ITERATION(1)
144 
145 template<
146  typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
147  >
148 struct BOOST_PP_CAT(apply,i_)
149 #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
150  : BOOST_PP_CAT(apply_wrap,i_)<
151  typename lambda<F>::type
152  AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
153  >
154 {
155 #else
156 {
157  typedef typename BOOST_PP_CAT(apply_wrap,i_)<
158  typename lambda<F>::type
159  AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
160  >::type type;
161 #endif
163  BOOST_PP_INC(i_)
164  , BOOST_PP_CAT(apply,i_)
165  , (F AUX778076_APPLY_N_COMMA_PARAMS(i_,T))
166  )
167 };
168 
169 
170 #if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
171 template<>
173 struct BOOST_PP_CAT(apply,i_)<AUX778076_APPLY_N_SPEC_PARAMS(i_, int)>
174 {
175  typedef int type;
176 };
177 #endif
178 
179 # if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
180 # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
181 
182 #if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
183 template<
185  typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
186  >
187 struct apply
188  : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
189 {
190 };
191 #else
192 template<
193  typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
194  >
195 struct apply< F AUX778076_APPLY_N_PARTIAL_SPEC_PARAMS(i_, T, na) >
196  : BOOST_PP_CAT(apply,i_)< F AUX778076_APPLY_N_COMMA_PARAMS(i_, T) >
197 {
198 };
199 #endif
200 
201 # else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
202 
203 #if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
204 namespace aux {
205 
206 template<>
207 struct apply_chooser<i_>
208 {
209  template<
210  typename F, AUX778076_APPLY_PARAMS(typename T)
211  >
212  struct result_
213  {
214  typedef BOOST_PP_CAT(apply,i_)<
215  F AUX778076_APPLY_N_COMMA_PARAMS(i_, T)
216  > type;
217  };
218 };
219 
220 } // namespace aux
221 #endif
222 
223 # endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
224 # endif // BOOST_MPL_CFG_NO_APPLY_TEMPLATE
225 
226 # undef i_
227 
228 #endif // BOOST_PP_ITERATION_DEPTH()
229 #endif // BOOST_PP_IS_ITERATING
BOOST_PP_CAT
struct BOOST_PP_CAT(AUX778076_COUNT_ARGS_PREFIX, _count_args)
Definition: count_args.hpp:86
apply_fwd.hpp
BOOST_WORKAROUND
#define BOOST_WORKAROUND(symbol, test)
Definition: detail/workaround.hpp:233
lambda.hpp
na
Definition: na_fwd.hpp:22
BOOST_PP_INC
#define BOOST_PP_INC(x)
Definition: arithmetic/inc.hpp:24
T
T
Definition: mem_fn_cc.hpp:25
use_preprocessed.hpp
lambda.hpp
count_args.hpp
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
arity.hpp
cat.hpp
BOOST_MPL_AUX_LAMBDA_SUPPORT
#define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params)
Definition: lambda_support.hpp:22
na.hpp
default_params.hpp
workaround.hpp
inc.hpp
dtp.hpp
msvc.hpp
nttp_decl.hpp
eti.hpp
apply_wrap.hpp
include_preprocessed.hpp
params.hpp
comma_if.hpp
partial_spec_params.hpp
BOOST_MSVC
#define BOOST_MSVC
Definition: visualc.hpp:23
enum.hpp
placeholders.hpp
lambda_support.hpp
iterate.hpp


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