Back to home page

EIC code displayed by LXR

 
 

    


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

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 "boost/mpl/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 = na, typename U2 = na, typename U3 = na
0062         , typename U4 = na, typename U5 = na
0063         >
0064     struct apply
0065     {
0066      private:
0067         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0068         typedef typename r0::type a0;
0069         typedef typename r0::next n1;
0070         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0071         ///
0072      public:
0073         typedef typename apply_wrap0<
0074               f_
0075             >::type type;
0076 
0077     };
0078 };
0079 
0080 namespace aux {
0081 
0082 template<
0083       typename F, typename U1, typename U2, typename U3, typename U4
0084     , typename U5
0085     >
0086 struct resolve_bind_arg<
0087       bind0<F>, U1, U2, U3, U4, U5
0088     >
0089 {
0090     typedef bind0<F> f_;
0091     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0092 };
0093 
0094 } // namespace aux
0095 
0096 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
0097 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
0098 
0099 template<
0100       typename F, typename T1
0101     >
0102 struct bind1
0103 {
0104     template<
0105           typename U1 = na, typename U2 = na, typename U3 = na
0106         , typename U4 = na, typename U5 = na
0107         >
0108     struct apply
0109     {
0110      private:
0111         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0112         typedef typename r0::type a0;
0113         typedef typename r0::next n1;
0114         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0115         ///
0116         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0117         typedef typename r1::type a1;
0118         typedef typename r1::next n2;
0119         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0120         ///
0121      public:
0122         typedef typename apply_wrap1<
0123               f_
0124             , typename t1::type
0125             >::type type;
0126 
0127     };
0128 };
0129 
0130 namespace aux {
0131 
0132 template<
0133       typename F, typename T1, typename U1, typename U2, typename U3
0134     , typename U4, typename U5
0135     >
0136 struct resolve_bind_arg<
0137       bind1< F,T1 >, U1, U2, U3, U4, U5
0138     >
0139 {
0140     typedef bind1< F,T1 > f_;
0141     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0142 };
0143 
0144 } // namespace aux
0145 
0146 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
0147 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
0148 
0149 template<
0150       typename F, typename T1, typename T2
0151     >
0152 struct bind2
0153 {
0154     template<
0155           typename U1 = na, typename U2 = na, typename U3 = na
0156         , typename U4 = na, typename U5 = na
0157         >
0158     struct apply
0159     {
0160      private:
0161         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0162         typedef typename r0::type a0;
0163         typedef typename r0::next n1;
0164         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0165         ///
0166         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0167         typedef typename r1::type a1;
0168         typedef typename r1::next n2;
0169         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0170         ///
0171         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0172         typedef typename r2::type a2;
0173         typedef typename r2::next n3;
0174         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0175         ///
0176      public:
0177         typedef typename apply_wrap2<
0178               f_
0179             , typename t1::type, typename t2::type
0180             >::type type;
0181 
0182     };
0183 };
0184 
0185 namespace aux {
0186 
0187 template<
0188       typename F, typename T1, typename T2, typename U1, typename U2
0189     , typename U3, typename U4, typename U5
0190     >
0191 struct resolve_bind_arg<
0192       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
0193     >
0194 {
0195     typedef bind2< F,T1,T2 > f_;
0196     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0197 };
0198 
0199 } // namespace aux
0200 
0201 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
0202 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
0203 
0204 template<
0205       typename F, typename T1, typename T2, typename T3
0206     >
0207 struct bind3
0208 {
0209     template<
0210           typename U1 = na, typename U2 = na, typename U3 = na
0211         , typename U4 = na, typename U5 = na
0212         >
0213     struct apply
0214     {
0215      private:
0216         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0217         typedef typename r0::type a0;
0218         typedef typename r0::next n1;
0219         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0220         ///
0221         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0222         typedef typename r1::type a1;
0223         typedef typename r1::next n2;
0224         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0225         ///
0226         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0227         typedef typename r2::type a2;
0228         typedef typename r2::next n3;
0229         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0230         ///
0231         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0232         typedef typename r3::type a3;
0233         typedef typename r3::next n4;
0234         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0235         ///
0236      public:
0237         typedef typename apply_wrap3<
0238               f_
0239             , typename t1::type, typename t2::type, typename t3::type
0240             >::type type;
0241 
0242     };
0243 };
0244 
0245 namespace aux {
0246 
0247 template<
0248       typename F, typename T1, typename T2, typename T3, typename U1
0249     , typename U2, typename U3, typename U4, typename U5
0250     >
0251 struct resolve_bind_arg<
0252       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
0253     >
0254 {
0255     typedef bind3< F,T1,T2,T3 > f_;
0256     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0257 };
0258 
0259 } // namespace aux
0260 
0261 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
0262 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
0263 
0264 template<
0265       typename F, typename T1, typename T2, typename T3, typename T4
0266     >
0267 struct bind4
0268 {
0269     template<
0270           typename U1 = na, typename U2 = na, typename U3 = na
0271         , typename U4 = na, typename U5 = na
0272         >
0273     struct apply
0274     {
0275      private:
0276         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0277         typedef typename r0::type a0;
0278         typedef typename r0::next n1;
0279         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0280         ///
0281         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0282         typedef typename r1::type a1;
0283         typedef typename r1::next n2;
0284         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0285         ///
0286         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0287         typedef typename r2::type a2;
0288         typedef typename r2::next n3;
0289         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0290         ///
0291         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0292         typedef typename r3::type a3;
0293         typedef typename r3::next n4;
0294         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0295         ///
0296         typedef aux::replace_unnamed_arg< T4,n4 > r4;
0297         typedef typename r4::type a4;
0298         typedef typename r4::next n5;
0299         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0300         ///
0301      public:
0302         typedef typename apply_wrap4<
0303               f_
0304             , typename t1::type, typename t2::type, typename t3::type
0305             , typename t4::type
0306             >::type type;
0307 
0308     };
0309 };
0310 
0311 namespace aux {
0312 
0313 template<
0314       typename F, typename T1, typename T2, typename T3, typename T4
0315     , typename U1, typename U2, typename U3, typename U4, typename U5
0316     >
0317 struct resolve_bind_arg<
0318       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
0319     >
0320 {
0321     typedef bind4< F,T1,T2,T3,T4 > f_;
0322     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0323 };
0324 
0325 } // namespace aux
0326 
0327 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
0328 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
0329 
0330 template<
0331       typename F, typename T1, typename T2, typename T3, typename T4
0332     , typename T5
0333     >
0334 struct bind5
0335 {
0336     template<
0337           typename U1 = na, typename U2 = na, typename U3 = na
0338         , typename U4 = na, typename U5 = na
0339         >
0340     struct apply
0341     {
0342      private:
0343         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
0344         typedef typename r0::type a0;
0345         typedef typename r0::next n1;
0346         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
0347         ///
0348         typedef aux::replace_unnamed_arg< T1,n1 > r1;
0349         typedef typename r1::type a1;
0350         typedef typename r1::next n2;
0351         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
0352         ///
0353         typedef aux::replace_unnamed_arg< T2,n2 > r2;
0354         typedef typename r2::type a2;
0355         typedef typename r2::next n3;
0356         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
0357         ///
0358         typedef aux::replace_unnamed_arg< T3,n3 > r3;
0359         typedef typename r3::type a3;
0360         typedef typename r3::next n4;
0361         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
0362         ///
0363         typedef aux::replace_unnamed_arg< T4,n4 > r4;
0364         typedef typename r4::type a4;
0365         typedef typename r4::next n5;
0366         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
0367         ///
0368         typedef aux::replace_unnamed_arg< T5,n5 > r5;
0369         typedef typename r5::type a5;
0370         typedef typename r5::next n6;
0371         typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
0372         ///
0373      public:
0374         typedef typename apply_wrap5<
0375               f_
0376             , typename t1::type, typename t2::type, typename t3::type
0377             , typename t4::type, typename t5::type
0378             >::type type;
0379 
0380     };
0381 };
0382 
0383 namespace aux {
0384 
0385 template<
0386       typename F, typename T1, typename T2, typename T3, typename T4
0387     , typename T5, typename U1, typename U2, typename U3, typename U4
0388     , typename U5
0389     >
0390 struct resolve_bind_arg<
0391       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
0392     >
0393 {
0394     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
0395     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
0396 };
0397 
0398 } // namespace aux
0399 
0400 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
0401 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
0402 }}
0403