Back to home page

EIC code displayed by LXR

 
 

    


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

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