Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:00

0001 
0002 // Copyright Peter Dimov 2001
0003 // Copyright Aleksey Gurtovoy 2001-2004
0004 //
0005 // Distributed under the Boost Software License, Version 1.0. 
0006 // (See accompanying file LICENSE_1_0.txt or copy at 
0007 // http://www.boost.org/LICENSE_1_0.txt)
0008 //
0009 
0010 // *Preprocessed* version of the main "bind.hpp" header
0011 // -- DO NOT modify by hand!
0012 
0013 namespace boost { namespace mpl {
0014 
0015 namespace aux {
0016 
0017 template<
0018       typename T, typename U1, typename U2, typename U3, typename U4
0019     , typename U5
0020     >
0021 struct resolve_bind_arg
0022 {
0023     typedef T type;
0024 };
0025 
0026 template<
0027       typename T
0028     , typename Arg
0029     >
0030 struct replace_unnamed_arg
0031 {
0032     typedef Arg next;
0033     typedef T type;
0034 };
0035 
0036 template<
0037       typename Arg
0038     >
0039 struct replace_unnamed_arg< arg< -1 >, Arg >
0040 {
0041     typedef typename Arg::next next;
0042     typedef Arg type;
0043 };
0044 
0045 template<
0046       int N, typename U1, typename U2, typename U3, typename U4, typename U5
0047     >
0048 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
0049 {
0050     typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
0051 };
0052 
0053 } // namespace aux
0054 
0055 template<
0056       typename F
0057     >
0058 struct bind0
0059 {
0060     template<
0061           typename U1, typename U2, typename U3, typename U4, typename U5
0062         >
0063     struct apply
0064     {
0065      private:
0066         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0067         typedef typename r0::type a0;
0068         typedef typename r0::next n1;
0069         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0070         ///
0071      public:
0072         typedef typename apply_wrap0<
0073               f_
0074             >::type type;
0075 
0076     };
0077 };
0078 
0079 namespace aux {
0080 
0081 template<
0082       typename F, typename U1, typename U2, typename U3, typename U4
0083     , typename U5
0084     >
0085 struct resolve_bind_arg<
0086       bind0<F>, U1, U2, U3, U4, U5
0087     >
0088 {
0089     typedef bind0<F> f_;
0090     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0091 };
0092 
0093 } // namespace aux
0094 
0095 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
0096 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
0097 
0098 template<
0099       typename F, typename T1
0100     >
0101 struct bind1
0102 {
0103     template<
0104           typename U1, typename U2, typename U3, typename U4, typename U5
0105         >
0106     struct apply
0107     {
0108      private:
0109         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0110         typedef typename r0::type a0;
0111         typedef typename r0::next n1;
0112         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0113         ///
0114         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0115         typedef typename r1::type a1;
0116         typedef typename r1::next n2;
0117         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0118         ///
0119      public:
0120         typedef typename apply_wrap1<
0121               f_
0122             , typename t1::type
0123             >::type type;
0124 
0125     };
0126 };
0127 
0128 namespace aux {
0129 
0130 template<
0131       typename F, typename T1, typename U1, typename U2, typename U3
0132     , typename U4, typename U5
0133     >
0134 struct resolve_bind_arg<
0135       bind1< F,T1 >, U1, U2, U3, U4, U5
0136     >
0137 {
0138     typedef bind1< F,T1 > f_;
0139     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0140 };
0141 
0142 } // namespace aux
0143 
0144 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
0145 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
0146 
0147 template<
0148       typename F, typename T1, typename T2
0149     >
0150 struct bind2
0151 {
0152     template<
0153           typename U1, typename U2, typename U3, typename U4, typename U5
0154         >
0155     struct apply
0156     {
0157      private:
0158         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0159         typedef typename r0::type a0;
0160         typedef typename r0::next n1;
0161         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0162         ///
0163         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0164         typedef typename r1::type a1;
0165         typedef typename r1::next n2;
0166         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0167         ///
0168         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0169         typedef typename r2::type a2;
0170         typedef typename r2::next n3;
0171         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0172         ///
0173      public:
0174         typedef typename apply_wrap2<
0175               f_
0176             , typename t1::type, typename t2::type
0177             >::type type;
0178 
0179     };
0180 };
0181 
0182 namespace aux {
0183 
0184 template<
0185       typename F, typename T1, typename T2, typename U1, typename U2
0186     , typename U3, typename U4, typename U5
0187     >
0188 struct resolve_bind_arg<
0189       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
0190     >
0191 {
0192     typedef bind2< F,T1,T2 > f_;
0193     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0194 };
0195 
0196 } // namespace aux
0197 
0198 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
0199 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
0200 
0201 template<
0202       typename F, typename T1, typename T2, typename T3
0203     >
0204 struct bind3
0205 {
0206     template<
0207           typename U1, typename U2, typename U3, typename U4, typename U5
0208         >
0209     struct apply
0210     {
0211      private:
0212         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0213         typedef typename r0::type a0;
0214         typedef typename r0::next n1;
0215         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0216         ///
0217         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0218         typedef typename r1::type a1;
0219         typedef typename r1::next n2;
0220         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0221         ///
0222         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0223         typedef typename r2::type a2;
0224         typedef typename r2::next n3;
0225         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0226         ///
0227         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0228         typedef typename r3::type a3;
0229         typedef typename r3::next n4;
0230         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0231         ///
0232      public:
0233         typedef typename apply_wrap3<
0234               f_
0235             , typename t1::type, typename t2::type, typename t3::type
0236             >::type type;
0237 
0238     };
0239 };
0240 
0241 namespace aux {
0242 
0243 template<
0244       typename F, typename T1, typename T2, typename T3, typename U1
0245     , typename U2, typename U3, typename U4, typename U5
0246     >
0247 struct resolve_bind_arg<
0248       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
0249     >
0250 {
0251     typedef bind3< F,T1,T2,T3 > f_;
0252     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0253 };
0254 
0255 } // namespace aux
0256 
0257 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
0258 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
0259 
0260 template<
0261       typename F, typename T1, typename T2, typename T3, typename T4
0262     >
0263 struct bind4
0264 {
0265     template<
0266           typename U1, typename U2, typename U3, typename U4, typename U5
0267         >
0268     struct apply
0269     {
0270      private:
0271         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0272         typedef typename r0::type a0;
0273         typedef typename r0::next n1;
0274         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0275         ///
0276         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0277         typedef typename r1::type a1;
0278         typedef typename r1::next n2;
0279         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0280         ///
0281         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0282         typedef typename r2::type a2;
0283         typedef typename r2::next n3;
0284         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0285         ///
0286         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0287         typedef typename r3::type a3;
0288         typedef typename r3::next n4;
0289         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0290         ///
0291         typedef aux::replace_unnamed_arg< T4,n4 > r4;
0292         typedef typename r4::type a4;
0293         typedef typename r4::next n5;
0294         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0295         ///
0296      public:
0297         typedef typename apply_wrap4<
0298               f_
0299             , typename t1::type, typename t2::type, typename t3::type
0300             , typename t4::type
0301             >::type type;
0302 
0303     };
0304 };
0305 
0306 namespace aux {
0307 
0308 template<
0309       typename F, typename T1, typename T2, typename T3, typename T4
0310     , typename U1, typename U2, typename U3, typename U4, typename U5
0311     >
0312 struct resolve_bind_arg<
0313       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
0314     >
0315 {
0316     typedef bind4< F,T1,T2,T3,T4 > f_;
0317     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0318 };
0319 
0320 } // namespace aux
0321 
0322 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
0323 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
0324 
0325 template<
0326       typename F, typename T1, typename T2, typename T3, typename T4
0327     , typename T5
0328     >
0329 struct bind5
0330 {
0331     template<
0332           typename U1, typename U2, typename U3, typename U4, typename U5
0333         >
0334     struct apply
0335     {
0336      private:
0337         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0338         typedef typename r0::type a0;
0339         typedef typename r0::next n1;
0340         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0341         ///
0342         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0343         typedef typename r1::type a1;
0344         typedef typename r1::next n2;
0345         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0346         ///
0347         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0348         typedef typename r2::type a2;
0349         typedef typename r2::next n3;
0350         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0351         ///
0352         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0353         typedef typename r3::type a3;
0354         typedef typename r3::next n4;
0355         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0356         ///
0357         typedef aux::replace_unnamed_arg< T4,n4 > r4;
0358         typedef typename r4::type a4;
0359         typedef typename r4::next n5;
0360         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0361         ///
0362         typedef aux::replace_unnamed_arg< T5,n5 > r5;
0363         typedef typename r5::type a5;
0364         typedef typename r5::next n6;
0365         typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
0366         ///
0367      public:
0368         typedef typename apply_wrap5<
0369               f_
0370             , typename t1::type, typename t2::type, typename t3::type
0371             , typename t4::type, typename t5::type
0372             >::type type;
0373 
0374     };
0375 };
0376 
0377 namespace aux {
0378 
0379 template<
0380       typename F, typename T1, typename T2, typename T3, typename T4
0381     , typename T5, typename U1, typename U2, typename U3, typename U4
0382     , typename U5
0383     >
0384 struct resolve_bind_arg<
0385       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
0386     >
0387 {
0388     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
0389     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0390 };
0391 
0392 } // namespace aux
0393 
0394 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
0395 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
0396 }}
0397