Back to home page

EIC code displayed by LXR

 
 

    


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

0001 
0002 // Copyright Aleksey Gurtovoy 2000-2004
0003 //
0004 // Distributed under the Boost Software License, Version 1.0. 
0005 // (See accompanying file LICENSE_1_0.txt or copy at 
0006 // http://www.boost.org/LICENSE_1_0.txt)
0007 //
0008 
0009 // Preprocessed version of "boost/mpl/apply.hpp" header
0010 // -- DO NOT modify by hand!
0011 
0012 namespace boost { namespace mpl {
0013 
0014 template<
0015       typename F
0016     >
0017 struct apply0
0018 
0019     : apply_wrap0<
0020           typename lambda<F>::type
0021        
0022         >
0023 {
0024     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0025           1
0026         , apply0
0027         , (F )
0028         )
0029 };
0030 
0031 namespace aux {
0032 
0033 template<>
0034 struct apply_chooser<0>
0035 {
0036     template<
0037           typename F, typename T1, typename T2, typename T3, typename T4
0038         , typename T5
0039         >
0040     struct result_
0041     {
0042         typedef apply0<
0043               F
0044             > type;
0045     };
0046 };
0047 
0048 } // namespace aux
0049 
0050 template<
0051       typename F, typename T1
0052     >
0053 struct apply1
0054 
0055     : apply_wrap1<
0056           typename lambda<F>::type
0057         , T1
0058         >
0059 {
0060     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0061           2
0062         , apply1
0063         , (F, T1)
0064         )
0065 };
0066 
0067 namespace aux {
0068 
0069 template<>
0070 struct apply_chooser<1>
0071 {
0072     template<
0073           typename F, typename T1, typename T2, typename T3, typename T4
0074         , typename T5
0075         >
0076     struct result_
0077     {
0078         typedef apply1<
0079               F, T1
0080             > type;
0081     };
0082 };
0083 
0084 } // namespace aux
0085 
0086 template<
0087       typename F, typename T1, typename T2
0088     >
0089 struct apply2
0090 
0091     : apply_wrap2<
0092           typename lambda<F>::type
0093         , T1, T2
0094         >
0095 {
0096     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0097           3
0098         , apply2
0099         , (F, T1, T2)
0100         )
0101 };
0102 
0103 namespace aux {
0104 
0105 template<>
0106 struct apply_chooser<2>
0107 {
0108     template<
0109           typename F, typename T1, typename T2, typename T3, typename T4
0110         , typename T5
0111         >
0112     struct result_
0113     {
0114         typedef apply2<
0115               F, T1, T2
0116             > type;
0117     };
0118 };
0119 
0120 } // namespace aux
0121 
0122 template<
0123       typename F, typename T1, typename T2, typename T3
0124     >
0125 struct apply3
0126 
0127     : apply_wrap3<
0128           typename lambda<F>::type
0129         , T1, T2, T3
0130         >
0131 {
0132     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0133           4
0134         , apply3
0135         , (F, T1, T2, T3)
0136         )
0137 };
0138 
0139 namespace aux {
0140 
0141 template<>
0142 struct apply_chooser<3>
0143 {
0144     template<
0145           typename F, typename T1, typename T2, typename T3, typename T4
0146         , typename T5
0147         >
0148     struct result_
0149     {
0150         typedef apply3<
0151               F, T1, T2, T3
0152             > type;
0153     };
0154 };
0155 
0156 } // namespace aux
0157 
0158 template<
0159       typename F, typename T1, typename T2, typename T3, typename T4
0160     >
0161 struct apply4
0162 
0163     : apply_wrap4<
0164           typename lambda<F>::type
0165         , T1, T2, T3, T4
0166         >
0167 {
0168     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0169           5
0170         , apply4
0171         , (F, T1, T2, T3, T4)
0172         )
0173 };
0174 
0175 namespace aux {
0176 
0177 template<>
0178 struct apply_chooser<4>
0179 {
0180     template<
0181           typename F, typename T1, typename T2, typename T3, typename T4
0182         , typename T5
0183         >
0184     struct result_
0185     {
0186         typedef apply4<
0187               F, T1, T2, T3, T4
0188             > type;
0189     };
0190 };
0191 
0192 } // namespace aux
0193 
0194 template<
0195       typename F, typename T1, typename T2, typename T3, typename T4
0196     , typename T5
0197     >
0198 struct apply5
0199 
0200     : apply_wrap5<
0201           typename lambda<F>::type
0202         , T1, T2, T3, T4, T5
0203         >
0204 {
0205     BOOST_MPL_AUX_LAMBDA_SUPPORT(
0206           6
0207         , apply5
0208         , (F, T1, T2, T3, T4, T5)
0209         )
0210 };
0211 
0212 namespace aux {
0213 
0214 template<>
0215 struct apply_chooser<5>
0216 {
0217     template<
0218           typename F, typename T1, typename T2, typename T3, typename T4
0219         , typename T5
0220         >
0221     struct result_
0222     {
0223         typedef apply5<
0224               F, T1, T2, T3, T4, T5
0225             > type;
0226     };
0227 };
0228 
0229 } // namespace aux
0230 
0231 namespace aux {
0232 
0233 template< typename T >
0234 struct is_apply_arg
0235 {
0236     static bool const value  = true;
0237 };
0238 
0239 template<>
0240 struct is_apply_arg<na>
0241 {
0242     static bool const value  = false;
0243 };
0244 
0245 template<
0246       typename T1, typename T2, typename T3, typename T4, typename T5
0247     >
0248 struct apply_count_args
0249 {
0250     static int const value  = is_apply_arg<T1>::value + is_apply_arg<T2>::value + is_apply_arg<T3>::value + is_apply_arg<T4>::value + is_apply_arg<T5>::value;
0251 
0252 };
0253 
0254 }
0255 
0256 template<
0257       typename F, typename T1 = na, typename T2 = na, typename T3 = na
0258     , typename T4 = na, typename T5 = na
0259     >
0260 struct apply
0261     : aux::apply_chooser<
0262           aux::apply_count_args< T1,T2,T3,T4,T5 >::value
0263         >::template result_< F,T1,T2,T3,T4,T5 >::type
0264 {
0265 };
0266 
0267 }}
0268