1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/bind.hpp Wed Mar 31 12:33:34 2010 +0100
1.3 @@ -0,0 +1,561 @@
1.4 +
1.5 +// Copyright Peter Dimov 2001
1.6 +// Copyright Aleksey Gurtovoy 2001-2004
1.7 +//
1.8 +// Distributed under the Boost Software License, Version 1.0.
1.9 +// (See accompanying file LICENSE_1_0.txt or copy at
1.10 +// http://www.boost.org/LICENSE_1_0.txt)
1.11 +//
1.12 +
1.13 +// Preprocessed version of "boost/mpl/bind.hpp" header
1.14 +// -- DO NOT modify by hand!
1.15 +
1.16 +namespace boost { namespace mpl {
1.17 +
1.18 +namespace aux {
1.19 +
1.20 +template<
1.21 + typename T, typename U1, typename U2, typename U3, typename U4
1.22 + , typename U5
1.23 + >
1.24 +struct resolve_bind_arg
1.25 +{
1.26 + typedef T type;
1.27 +};
1.28 +
1.29 +template<
1.30 + typename T
1.31 + , typename Arg
1.32 + >
1.33 +struct replace_unnamed_arg
1.34 +{
1.35 + typedef Arg next;
1.36 + typedef T type;
1.37 +};
1.38 +
1.39 +template<
1.40 + typename Arg
1.41 + >
1.42 +struct replace_unnamed_arg< arg< -1 >, Arg >
1.43 +{
1.44 + typedef typename Arg::next next;
1.45 + typedef Arg type;
1.46 +};
1.47 +
1.48 +template<
1.49 + int N, typename U1, typename U2, typename U3, typename U4, typename U5
1.50 + >
1.51 +struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
1.52 +{
1.53 + typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
1.54 +};
1.55 +
1.56 +template<
1.57 + typename F, typename T1, typename T2, typename T3, typename T4
1.58 + , typename T5, typename U1, typename U2, typename U3, typename U4
1.59 + , typename U5
1.60 + >
1.61 +struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
1.62 +{
1.63 + typedef bind< F,T1,T2,T3,T4,T5 > f_;
1.64 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.65 +};
1.66 +
1.67 +} // namespace aux
1.68 +
1.69 +template<
1.70 + typename F
1.71 + >
1.72 +struct bind0
1.73 +{
1.74 + template<
1.75 + typename U1 = na, typename U2 = na, typename U3 = na
1.76 + , typename U4 = na, typename U5 = na
1.77 + >
1.78 + struct apply
1.79 + {
1.80 + private:
1.81 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.82 + typedef typename r0::type a0;
1.83 + typedef typename r0::next n1;
1.84 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.85 + ///
1.86 + public:
1.87 + typedef typename apply_wrap0<
1.88 + f_
1.89 + >::type type;
1.90 +
1.91 + };
1.92 +};
1.93 +
1.94 +namespace aux {
1.95 +
1.96 +template<
1.97 + typename F, typename U1, typename U2, typename U3, typename U4
1.98 + , typename U5
1.99 + >
1.100 +struct resolve_bind_arg<
1.101 + bind0<F>, U1, U2, U3, U4, U5
1.102 + >
1.103 +{
1.104 + typedef bind0<F> f_;
1.105 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.106 +};
1.107 +
1.108 +} // namespace aux
1.109 +
1.110 +BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
1.111 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
1.112 +
1.113 +template<
1.114 + typename F
1.115 + >
1.116 +struct bind< F,na,na,na,na,na >
1.117 + : bind0<F>
1.118 +{
1.119 +};
1.120 +
1.121 +template<
1.122 + typename F, typename T1
1.123 + >
1.124 +struct bind1
1.125 +{
1.126 + template<
1.127 + typename U1 = na, typename U2 = na, typename U3 = na
1.128 + , typename U4 = na, typename U5 = na
1.129 + >
1.130 + struct apply
1.131 + {
1.132 + private:
1.133 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.134 + typedef typename r0::type a0;
1.135 + typedef typename r0::next n1;
1.136 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.137 + ///
1.138 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.139 + typedef typename r1::type a1;
1.140 + typedef typename r1::next n2;
1.141 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.142 + ///
1.143 + public:
1.144 + typedef typename apply_wrap1<
1.145 + f_
1.146 + , typename t1::type
1.147 + >::type type;
1.148 +
1.149 + };
1.150 +};
1.151 +
1.152 +namespace aux {
1.153 +
1.154 +template<
1.155 + typename F, typename T1, typename U1, typename U2, typename U3
1.156 + , typename U4, typename U5
1.157 + >
1.158 +struct resolve_bind_arg<
1.159 + bind1< F,T1 >, U1, U2, U3, U4, U5
1.160 + >
1.161 +{
1.162 + typedef bind1< F,T1 > f_;
1.163 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.164 +};
1.165 +
1.166 +} // namespace aux
1.167 +
1.168 +BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
1.169 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
1.170 +
1.171 +template<
1.172 + typename F, typename T1
1.173 + >
1.174 +struct bind< F,T1,na,na,na,na >
1.175 + : bind1< F,T1 >
1.176 +{
1.177 +};
1.178 +
1.179 +template<
1.180 + typename F, typename T1, typename T2
1.181 + >
1.182 +struct bind2
1.183 +{
1.184 + template<
1.185 + typename U1 = na, typename U2 = na, typename U3 = na
1.186 + , typename U4 = na, typename U5 = na
1.187 + >
1.188 + struct apply
1.189 + {
1.190 + private:
1.191 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.192 + typedef typename r0::type a0;
1.193 + typedef typename r0::next n1;
1.194 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.195 + ///
1.196 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.197 + typedef typename r1::type a1;
1.198 + typedef typename r1::next n2;
1.199 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.200 + ///
1.201 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.202 + typedef typename r2::type a2;
1.203 + typedef typename r2::next n3;
1.204 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.205 + ///
1.206 + public:
1.207 + typedef typename apply_wrap2<
1.208 + f_
1.209 + , typename t1::type, typename t2::type
1.210 + >::type type;
1.211 +
1.212 + };
1.213 +};
1.214 +
1.215 +namespace aux {
1.216 +
1.217 +template<
1.218 + typename F, typename T1, typename T2, typename U1, typename U2
1.219 + , typename U3, typename U4, typename U5
1.220 + >
1.221 +struct resolve_bind_arg<
1.222 + bind2< F,T1,T2 >, U1, U2, U3, U4, U5
1.223 + >
1.224 +{
1.225 + typedef bind2< F,T1,T2 > f_;
1.226 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.227 +};
1.228 +
1.229 +} // namespace aux
1.230 +
1.231 +BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
1.232 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
1.233 +
1.234 +template<
1.235 + typename F, typename T1, typename T2
1.236 + >
1.237 +struct bind< F,T1,T2,na,na,na >
1.238 + : bind2< F,T1,T2 >
1.239 +{
1.240 +};
1.241 +
1.242 +template<
1.243 + typename F, typename T1, typename T2, typename T3
1.244 + >
1.245 +struct bind3
1.246 +{
1.247 + template<
1.248 + typename U1 = na, typename U2 = na, typename U3 = na
1.249 + , typename U4 = na, typename U5 = na
1.250 + >
1.251 + struct apply
1.252 + {
1.253 + private:
1.254 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.255 + typedef typename r0::type a0;
1.256 + typedef typename r0::next n1;
1.257 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.258 + ///
1.259 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.260 + typedef typename r1::type a1;
1.261 + typedef typename r1::next n2;
1.262 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.263 + ///
1.264 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.265 + typedef typename r2::type a2;
1.266 + typedef typename r2::next n3;
1.267 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.268 + ///
1.269 + typedef aux::replace_unnamed_arg< T3,n3 > r3;
1.270 + typedef typename r3::type a3;
1.271 + typedef typename r3::next n4;
1.272 + typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
1.273 + ///
1.274 + public:
1.275 + typedef typename apply_wrap3<
1.276 + f_
1.277 + , typename t1::type, typename t2::type, typename t3::type
1.278 + >::type type;
1.279 +
1.280 + };
1.281 +};
1.282 +
1.283 +namespace aux {
1.284 +
1.285 +template<
1.286 + typename F, typename T1, typename T2, typename T3, typename U1
1.287 + , typename U2, typename U3, typename U4, typename U5
1.288 + >
1.289 +struct resolve_bind_arg<
1.290 + bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
1.291 + >
1.292 +{
1.293 + typedef bind3< F,T1,T2,T3 > f_;
1.294 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.295 +};
1.296 +
1.297 +} // namespace aux
1.298 +
1.299 +BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
1.300 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
1.301 +
1.302 +template<
1.303 + typename F, typename T1, typename T2, typename T3
1.304 + >
1.305 +struct bind< F,T1,T2,T3,na,na >
1.306 + : bind3< F,T1,T2,T3 >
1.307 +{
1.308 +};
1.309 +
1.310 +template<
1.311 + typename F, typename T1, typename T2, typename T3, typename T4
1.312 + >
1.313 +struct bind4
1.314 +{
1.315 + template<
1.316 + typename U1 = na, typename U2 = na, typename U3 = na
1.317 + , typename U4 = na, typename U5 = na
1.318 + >
1.319 + struct apply
1.320 + {
1.321 + private:
1.322 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.323 + typedef typename r0::type a0;
1.324 + typedef typename r0::next n1;
1.325 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.326 + ///
1.327 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.328 + typedef typename r1::type a1;
1.329 + typedef typename r1::next n2;
1.330 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.331 + ///
1.332 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.333 + typedef typename r2::type a2;
1.334 + typedef typename r2::next n3;
1.335 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.336 + ///
1.337 + typedef aux::replace_unnamed_arg< T3,n3 > r3;
1.338 + typedef typename r3::type a3;
1.339 + typedef typename r3::next n4;
1.340 + typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
1.341 + ///
1.342 + typedef aux::replace_unnamed_arg< T4,n4 > r4;
1.343 + typedef typename r4::type a4;
1.344 + typedef typename r4::next n5;
1.345 + typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
1.346 + ///
1.347 + public:
1.348 + typedef typename apply_wrap4<
1.349 + f_
1.350 + , typename t1::type, typename t2::type, typename t3::type
1.351 + , typename t4::type
1.352 + >::type type;
1.353 +
1.354 + };
1.355 +};
1.356 +
1.357 +namespace aux {
1.358 +
1.359 +template<
1.360 + typename F, typename T1, typename T2, typename T3, typename T4
1.361 + , typename U1, typename U2, typename U3, typename U4, typename U5
1.362 + >
1.363 +struct resolve_bind_arg<
1.364 + bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
1.365 + >
1.366 +{
1.367 + typedef bind4< F,T1,T2,T3,T4 > f_;
1.368 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.369 +};
1.370 +
1.371 +} // namespace aux
1.372 +
1.373 +BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
1.374 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
1.375 +
1.376 +template<
1.377 + typename F, typename T1, typename T2, typename T3, typename T4
1.378 + >
1.379 +struct bind< F,T1,T2,T3,T4,na >
1.380 + : bind4< F,T1,T2,T3,T4 >
1.381 +{
1.382 +};
1.383 +
1.384 +template<
1.385 + typename F, typename T1, typename T2, typename T3, typename T4
1.386 + , typename T5
1.387 + >
1.388 +struct bind5
1.389 +{
1.390 + template<
1.391 + typename U1 = na, typename U2 = na, typename U3 = na
1.392 + , typename U4 = na, typename U5 = na
1.393 + >
1.394 + struct apply
1.395 + {
1.396 + private:
1.397 + typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
1.398 + typedef typename r0::type a0;
1.399 + typedef typename r0::next n1;
1.400 + typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
1.401 + ///
1.402 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.403 + typedef typename r1::type a1;
1.404 + typedef typename r1::next n2;
1.405 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.406 + ///
1.407 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.408 + typedef typename r2::type a2;
1.409 + typedef typename r2::next n3;
1.410 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.411 + ///
1.412 + typedef aux::replace_unnamed_arg< T3,n3 > r3;
1.413 + typedef typename r3::type a3;
1.414 + typedef typename r3::next n4;
1.415 + typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
1.416 + ///
1.417 + typedef aux::replace_unnamed_arg< T4,n4 > r4;
1.418 + typedef typename r4::type a4;
1.419 + typedef typename r4::next n5;
1.420 + typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
1.421 + ///
1.422 + typedef aux::replace_unnamed_arg< T5,n5 > r5;
1.423 + typedef typename r5::type a5;
1.424 + typedef typename r5::next n6;
1.425 + typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
1.426 + ///
1.427 + public:
1.428 + typedef typename apply_wrap5<
1.429 + f_
1.430 + , typename t1::type, typename t2::type, typename t3::type
1.431 + , typename t4::type, typename t5::type
1.432 + >::type type;
1.433 +
1.434 + };
1.435 +};
1.436 +
1.437 +namespace aux {
1.438 +
1.439 +template<
1.440 + typename F, typename T1, typename T2, typename T3, typename T4
1.441 + , typename T5, typename U1, typename U2, typename U3, typename U4
1.442 + , typename U5
1.443 + >
1.444 +struct resolve_bind_arg<
1.445 + bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
1.446 + >
1.447 +{
1.448 + typedef bind5< F,T1,T2,T3,T4,T5 > f_;
1.449 + typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
1.450 +};
1.451 +
1.452 +} // namespace aux
1.453 +
1.454 +BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
1.455 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
1.456 +
1.457 +/// primary template (not a specialization!)
1.458 +
1.459 +template<
1.460 + typename F, typename T1, typename T2, typename T3, typename T4
1.461 + , typename T5
1.462 + >
1.463 +struct bind
1.464 + : bind5< F,T1,T2,T3,T4,T5 >
1.465 +{
1.466 +};
1.467 +
1.468 +/// if_/eval_if specializations
1.469 +template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
1.470 +struct quote3;
1.471 +
1.472 +template< typename T1, typename T2, typename T3 > struct if_;
1.473 +
1.474 +template<
1.475 + typename Tag, typename T1, typename T2, typename T3
1.476 + >
1.477 +struct bind3<
1.478 + quote3< if_,Tag >
1.479 + , T1, T2, T3
1.480 + >
1.481 +{
1.482 + template<
1.483 + typename U1 = na, typename U2 = na, typename U3 = na
1.484 + , typename U4 = na, typename U5 = na
1.485 + >
1.486 + struct apply
1.487 + {
1.488 + private:
1.489 + typedef mpl::arg<1> n1;
1.490 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.491 + typedef typename r1::type a1;
1.492 + typedef typename r1::next n2;
1.493 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.494 + ///
1.495 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.496 + typedef typename r2::type a2;
1.497 + typedef typename r2::next n3;
1.498 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.499 + ///
1.500 + typedef aux::replace_unnamed_arg< T3,n3 > r3;
1.501 + typedef typename r3::type a3;
1.502 + typedef typename r3::next n4;
1.503 + typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
1.504 + ///
1.505 + typedef typename if_<
1.506 + typename t1::type
1.507 + , t2, t3
1.508 + >::type f_;
1.509 +
1.510 + public:
1.511 + typedef typename f_::type type;
1.512 + };
1.513 +};
1.514 +
1.515 +template<
1.516 + template< typename T1, typename T2, typename T3 > class F, typename Tag
1.517 + >
1.518 +struct quote3;
1.519 +
1.520 +template< typename T1, typename T2, typename T3 > struct eval_if;
1.521 +
1.522 +template<
1.523 + typename Tag, typename T1, typename T2, typename T3
1.524 + >
1.525 +struct bind3<
1.526 + quote3< eval_if,Tag >
1.527 + , T1, T2, T3
1.528 + >
1.529 +{
1.530 + template<
1.531 + typename U1 = na, typename U2 = na, typename U3 = na
1.532 + , typename U4 = na, typename U5 = na
1.533 + >
1.534 + struct apply
1.535 + {
1.536 + private:
1.537 + typedef mpl::arg<1> n1;
1.538 + typedef aux::replace_unnamed_arg< T1,n1 > r1;
1.539 + typedef typename r1::type a1;
1.540 + typedef typename r1::next n2;
1.541 + typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
1.542 + ///
1.543 + typedef aux::replace_unnamed_arg< T2,n2 > r2;
1.544 + typedef typename r2::type a2;
1.545 + typedef typename r2::next n3;
1.546 + typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
1.547 + ///
1.548 + typedef aux::replace_unnamed_arg< T3,n3 > r3;
1.549 + typedef typename r3::type a3;
1.550 + typedef typename r3::next n4;
1.551 + typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
1.552 + ///
1.553 + typedef typename eval_if<
1.554 + typename t1::type
1.555 + , t2, t3
1.556 + >::type f_;
1.557 +
1.558 + public:
1.559 + typedef typename f_::type type;
1.560 + };
1.561 +};
1.562 +
1.563 +}}
1.564 +