epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/bind.hpp
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1 
     2 // Copyright Peter Dimov 2001
     3 // Copyright Aleksey Gurtovoy 2001-2004
     4 //
     5 // Distributed under the Boost Software License, Version 1.0. 
     6 // (See accompanying file LICENSE_1_0.txt or copy at 
     7 // http://www.boost.org/LICENSE_1_0.txt)
     8 //
     9 
    10 // Preprocessed version of "boost/mpl/bind.hpp" header
    11 // -- DO NOT modify by hand!
    12 
    13 namespace boost { namespace mpl {
    14 
    15 namespace aux {
    16 
    17 template<
    18       typename T, typename U1, typename U2, typename U3, typename U4
    19     , typename U5
    20     >
    21 struct resolve_bind_arg
    22 {
    23     typedef T type;
    24 };
    25 
    26 template<
    27       typename T
    28     , typename Arg
    29     >
    30 struct replace_unnamed_arg
    31 {
    32     typedef Arg next;
    33     typedef T type;
    34 };
    35 
    36 template<
    37       typename Arg
    38     >
    39 struct replace_unnamed_arg< arg< -1 >, Arg >
    40 {
    41     typedef typename Arg::next next;
    42     typedef Arg type;
    43 };
    44 
    45 template<
    46       int N, typename U1, typename U2, typename U3, typename U4, typename U5
    47     >
    48 struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
    49 {
    50     typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
    51 };
    52 
    53 template<
    54       typename F, typename T1, typename T2, typename T3, typename T4
    55     , typename T5, typename U1, typename U2, typename U3, typename U4
    56     , typename U5
    57     >
    58 struct resolve_bind_arg< bind< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5 >
    59 {
    60     typedef bind< F,T1,T2,T3,T4,T5 > f_;
    61     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
    62 };
    63 
    64 } // namespace aux
    65 
    66 template<
    67       typename F
    68     >
    69 struct bind0
    70 {
    71     template<
    72           typename U1 = na, typename U2 = na, typename U3 = na
    73         , typename U4 = na, typename U5 = na
    74         >
    75     struct apply
    76     {
    77      private:
    78         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
    79         typedef typename r0::type a0;
    80         typedef typename r0::next n1;
    81         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
    82         ///
    83      public:
    84         typedef typename apply_wrap0<
    85               f_
    86             >::type type;
    87 
    88     };
    89 };
    90 
    91 namespace aux {
    92 
    93 template<
    94       typename F, typename U1, typename U2, typename U3, typename U4
    95     , typename U5
    96     >
    97 struct resolve_bind_arg<
    98       bind0<F>, U1, U2, U3, U4, U5
    99     >
   100 {
   101     typedef bind0<F> f_;
   102     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   103 };
   104 
   105 } // namespace aux
   106 
   107 BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
   108 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
   109 
   110 template<
   111       typename F
   112     >
   113 struct bind< F,na,na,na,na,na >
   114     : bind0<F>
   115 {
   116 };
   117 
   118 template<
   119       typename F, typename T1
   120     >
   121 struct bind1
   122 {
   123     template<
   124           typename U1 = na, typename U2 = na, typename U3 = na
   125         , typename U4 = na, typename U5 = na
   126         >
   127     struct apply
   128     {
   129      private:
   130         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
   131         typedef typename r0::type a0;
   132         typedef typename r0::next n1;
   133         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
   134         ///
   135         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   136         typedef typename r1::type a1;
   137         typedef typename r1::next n2;
   138         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   139         ///
   140      public:
   141         typedef typename apply_wrap1<
   142               f_
   143             , typename t1::type
   144             >::type type;
   145 
   146     };
   147 };
   148 
   149 namespace aux {
   150 
   151 template<
   152       typename F, typename T1, typename U1, typename U2, typename U3
   153     , typename U4, typename U5
   154     >
   155 struct resolve_bind_arg<
   156       bind1< F,T1 >, U1, U2, U3, U4, U5
   157     >
   158 {
   159     typedef bind1< F,T1 > f_;
   160     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   161 };
   162 
   163 } // namespace aux
   164 
   165 BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
   166 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
   167 
   168 template<
   169       typename F, typename T1
   170     >
   171 struct bind< F,T1,na,na,na,na >
   172     : bind1< F,T1 >
   173 {
   174 };
   175 
   176 template<
   177       typename F, typename T1, typename T2
   178     >
   179 struct bind2
   180 {
   181     template<
   182           typename U1 = na, typename U2 = na, typename U3 = na
   183         , typename U4 = na, typename U5 = na
   184         >
   185     struct apply
   186     {
   187      private:
   188         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
   189         typedef typename r0::type a0;
   190         typedef typename r0::next n1;
   191         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
   192         ///
   193         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   194         typedef typename r1::type a1;
   195         typedef typename r1::next n2;
   196         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   197         ///
   198         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   199         typedef typename r2::type a2;
   200         typedef typename r2::next n3;
   201         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   202         ///
   203      public:
   204         typedef typename apply_wrap2<
   205               f_
   206             , typename t1::type, typename t2::type
   207             >::type type;
   208 
   209     };
   210 };
   211 
   212 namespace aux {
   213 
   214 template<
   215       typename F, typename T1, typename T2, typename U1, typename U2
   216     , typename U3, typename U4, typename U5
   217     >
   218 struct resolve_bind_arg<
   219       bind2< F,T1,T2 >, U1, U2, U3, U4, U5
   220     >
   221 {
   222     typedef bind2< F,T1,T2 > f_;
   223     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   224 };
   225 
   226 } // namespace aux
   227 
   228 BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
   229 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
   230 
   231 template<
   232       typename F, typename T1, typename T2
   233     >
   234 struct bind< F,T1,T2,na,na,na >
   235     : bind2< F,T1,T2 >
   236 {
   237 };
   238 
   239 template<
   240       typename F, typename T1, typename T2, typename T3
   241     >
   242 struct bind3
   243 {
   244     template<
   245           typename U1 = na, typename U2 = na, typename U3 = na
   246         , typename U4 = na, typename U5 = na
   247         >
   248     struct apply
   249     {
   250      private:
   251         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
   252         typedef typename r0::type a0;
   253         typedef typename r0::next n1;
   254         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
   255         ///
   256         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   257         typedef typename r1::type a1;
   258         typedef typename r1::next n2;
   259         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   260         ///
   261         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   262         typedef typename r2::type a2;
   263         typedef typename r2::next n3;
   264         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   265         ///
   266         typedef aux::replace_unnamed_arg< T3,n3 > r3;
   267         typedef typename r3::type a3;
   268         typedef typename r3::next n4;
   269         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
   270         ///
   271      public:
   272         typedef typename apply_wrap3<
   273               f_
   274             , typename t1::type, typename t2::type, typename t3::type
   275             >::type type;
   276 
   277     };
   278 };
   279 
   280 namespace aux {
   281 
   282 template<
   283       typename F, typename T1, typename T2, typename T3, typename U1
   284     , typename U2, typename U3, typename U4, typename U5
   285     >
   286 struct resolve_bind_arg<
   287       bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
   288     >
   289 {
   290     typedef bind3< F,T1,T2,T3 > f_;
   291     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   292 };
   293 
   294 } // namespace aux
   295 
   296 BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
   297 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
   298 
   299 template<
   300       typename F, typename T1, typename T2, typename T3
   301     >
   302 struct bind< F,T1,T2,T3,na,na >
   303     : bind3< F,T1,T2,T3 >
   304 {
   305 };
   306 
   307 template<
   308       typename F, typename T1, typename T2, typename T3, typename T4
   309     >
   310 struct bind4
   311 {
   312     template<
   313           typename U1 = na, typename U2 = na, typename U3 = na
   314         , typename U4 = na, typename U5 = na
   315         >
   316     struct apply
   317     {
   318      private:
   319         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
   320         typedef typename r0::type a0;
   321         typedef typename r0::next n1;
   322         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
   323         ///
   324         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   325         typedef typename r1::type a1;
   326         typedef typename r1::next n2;
   327         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   328         ///
   329         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   330         typedef typename r2::type a2;
   331         typedef typename r2::next n3;
   332         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   333         ///
   334         typedef aux::replace_unnamed_arg< T3,n3 > r3;
   335         typedef typename r3::type a3;
   336         typedef typename r3::next n4;
   337         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
   338         ///
   339         typedef aux::replace_unnamed_arg< T4,n4 > r4;
   340         typedef typename r4::type a4;
   341         typedef typename r4::next n5;
   342         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
   343         ///
   344      public:
   345         typedef typename apply_wrap4<
   346               f_
   347             , typename t1::type, typename t2::type, typename t3::type
   348             , typename t4::type
   349             >::type type;
   350 
   351     };
   352 };
   353 
   354 namespace aux {
   355 
   356 template<
   357       typename F, typename T1, typename T2, typename T3, typename T4
   358     , typename U1, typename U2, typename U3, typename U4, typename U5
   359     >
   360 struct resolve_bind_arg<
   361       bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
   362     >
   363 {
   364     typedef bind4< F,T1,T2,T3,T4 > f_;
   365     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   366 };
   367 
   368 } // namespace aux
   369 
   370 BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
   371 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
   372 
   373 template<
   374       typename F, typename T1, typename T2, typename T3, typename T4
   375     >
   376 struct bind< F,T1,T2,T3,T4,na >
   377     : bind4< F,T1,T2,T3,T4 >
   378 {
   379 };
   380 
   381 template<
   382       typename F, typename T1, typename T2, typename T3, typename T4
   383     , typename T5
   384     >
   385 struct bind5
   386 {
   387     template<
   388           typename U1 = na, typename U2 = na, typename U3 = na
   389         , typename U4 = na, typename U5 = na
   390         >
   391     struct apply
   392     {
   393      private:
   394         typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
   395         typedef typename r0::type a0;
   396         typedef typename r0::next n1;
   397         typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
   398         ///
   399         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   400         typedef typename r1::type a1;
   401         typedef typename r1::next n2;
   402         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   403         ///
   404         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   405         typedef typename r2::type a2;
   406         typedef typename r2::next n3;
   407         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   408         ///
   409         typedef aux::replace_unnamed_arg< T3,n3 > r3;
   410         typedef typename r3::type a3;
   411         typedef typename r3::next n4;
   412         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
   413         ///
   414         typedef aux::replace_unnamed_arg< T4,n4 > r4;
   415         typedef typename r4::type a4;
   416         typedef typename r4::next n5;
   417         typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
   418         ///
   419         typedef aux::replace_unnamed_arg< T5,n5 > r5;
   420         typedef typename r5::type a5;
   421         typedef typename r5::next n6;
   422         typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
   423         ///
   424      public:
   425         typedef typename apply_wrap5<
   426               f_
   427             , typename t1::type, typename t2::type, typename t3::type
   428             , typename t4::type, typename t5::type
   429             >::type type;
   430 
   431     };
   432 };
   433 
   434 namespace aux {
   435 
   436 template<
   437       typename F, typename T1, typename T2, typename T3, typename T4
   438     , typename T5, typename U1, typename U2, typename U3, typename U4
   439     , typename U5
   440     >
   441 struct resolve_bind_arg<
   442       bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
   443     >
   444 {
   445     typedef bind5< F,T1,T2,T3,T4,T5 > f_;
   446     typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
   447 };
   448 
   449 } // namespace aux
   450 
   451 BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
   452 BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
   453 
   454 /// primary template (not a specialization!)
   455 
   456 template<
   457       typename F, typename T1, typename T2, typename T3, typename T4
   458     , typename T5
   459     >
   460 struct bind
   461     : bind5< F,T1,T2,T3,T4,T5 >
   462 {
   463 };
   464 
   465 /// if_/eval_if specializations
   466 template< template< typename T1, typename T2, typename T3 > class F, typename Tag >
   467 struct quote3;
   468 
   469 template< typename T1, typename T2, typename T3 > struct if_;
   470 
   471 template<
   472       typename Tag, typename T1, typename T2, typename T3
   473     >
   474 struct bind3<
   475       quote3< if_,Tag >
   476     , T1, T2, T3
   477     >
   478 {
   479     template<
   480           typename U1 = na, typename U2 = na, typename U3 = na
   481         , typename U4 = na, typename U5 = na
   482         >
   483     struct apply
   484     {
   485      private:
   486         typedef mpl::arg<1> n1;
   487         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   488         typedef typename r1::type a1;
   489         typedef typename r1::next n2;
   490         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   491         ///
   492         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   493         typedef typename r2::type a2;
   494         typedef typename r2::next n3;
   495         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   496         ///
   497         typedef aux::replace_unnamed_arg< T3,n3 > r3;
   498         typedef typename r3::type a3;
   499         typedef typename r3::next n4;
   500         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
   501         ///
   502         typedef typename if_<
   503               typename t1::type
   504             , t2, t3
   505             >::type f_;
   506 
   507      public:
   508         typedef typename f_::type type;
   509     };
   510 };
   511 
   512 template<
   513       template< typename T1, typename T2, typename T3 > class F, typename Tag
   514     >
   515 struct quote3;
   516 
   517 template< typename T1, typename T2, typename T3 > struct eval_if;
   518 
   519 template<
   520       typename Tag, typename T1, typename T2, typename T3
   521     >
   522 struct bind3<
   523       quote3< eval_if,Tag >
   524     , T1, T2, T3
   525     >
   526 {
   527     template<
   528           typename U1 = na, typename U2 = na, typename U3 = na
   529         , typename U4 = na, typename U5 = na
   530         >
   531     struct apply
   532     {
   533      private:
   534         typedef mpl::arg<1> n1;
   535         typedef aux::replace_unnamed_arg< T1,n1 > r1;
   536         typedef typename r1::type a1;
   537         typedef typename r1::next n2;
   538         typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
   539         ///
   540         typedef aux::replace_unnamed_arg< T2,n2 > r2;
   541         typedef typename r2::type a2;
   542         typedef typename r2::next n3;
   543         typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
   544         ///
   545         typedef aux::replace_unnamed_arg< T3,n3 > r3;
   546         typedef typename r3::type a3;
   547         typedef typename r3::next n4;
   548         typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
   549         ///
   550         typedef typename eval_if<
   551               typename t1::type
   552             , t2, t3
   553             >::type f_;
   554 
   555      public:
   556         typedef typename f_::type type;
   557     };
   558 };
   559 
   560 }}
   561