epoc32/include/stdapis/boost/bind/bind_mf_cc.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.
williamr@2
     1
//
williamr@2
     2
//  bind/bind_mf_cc.hpp - support for different calling conventions
williamr@2
     3
//
williamr@2
     4
//  Do not include this header directly.
williamr@2
     5
//
williamr@2
     6
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
williamr@2
     7
//
williamr@2
     8
// Distributed under the Boost Software License, Version 1.0. (See
williamr@2
     9
// accompanying file LICENSE_1_0.txt or copy at
williamr@2
    10
// http://www.boost.org/LICENSE_1_0.txt)
williamr@2
    11
//
williamr@2
    12
//  See http://www.boost.org/libs/bind/bind.html for documentation.
williamr@2
    13
//
williamr@2
    14
williamr@2
    15
// 0
williamr@2
    16
williamr@2
    17
template<class R, class T,
williamr@2
    18
    class A1>
williamr@2
    19
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
williamr@2
    20
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
williamr@2
    21
{
williamr@2
    22
    typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
williamr@2
    23
    typedef typename _bi::list_av_1<A1>::type list_type;
williamr@2
    24
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
williamr@2
    25
}
williamr@2
    26
williamr@2
    27
template<class R, class T,
williamr@2
    28
    class A1>
williamr@2
    29
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
williamr@2
    30
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
williamr@2
    31
{
williamr@2
    32
    typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
williamr@2
    33
    typedef typename _bi::list_av_1<A1>::type list_type;
williamr@2
    34
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
williamr@2
    35
}
williamr@2
    36
williamr@2
    37
// 1
williamr@2
    38
williamr@2
    39
template<class R, class T,
williamr@2
    40
    class B1,
williamr@2
    41
    class A1, class A2>
williamr@2
    42
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
williamr@2
    43
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
williamr@2
    44
{
williamr@2
    45
    typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
williamr@2
    46
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
williamr@2
    47
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
williamr@2
    48
}
williamr@2
    49
williamr@2
    50
template<class R, class T,
williamr@2
    51
    class B1,
williamr@2
    52
    class A1, class A2>
williamr@2
    53
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
williamr@2
    54
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
williamr@2
    55
{
williamr@2
    56
    typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
williamr@2
    57
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
williamr@2
    58
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
williamr@2
    59
}
williamr@2
    60
williamr@2
    61
// 2
williamr@2
    62
williamr@2
    63
template<class R, class T,
williamr@2
    64
    class B1, class B2,
williamr@2
    65
    class A1, class A2, class A3>
williamr@2
    66
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
williamr@2
    67
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
williamr@2
    68
{
williamr@2
    69
    typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
williamr@2
    70
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
williamr@2
    71
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
williamr@2
    72
}
williamr@2
    73
williamr@2
    74
template<class R, class T,
williamr@2
    75
    class B1, class B2,
williamr@2
    76
    class A1, class A2, class A3>
williamr@2
    77
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
williamr@2
    78
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
williamr@2
    79
{
williamr@2
    80
    typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
williamr@2
    81
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
williamr@2
    82
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
williamr@2
    83
}
williamr@2
    84
williamr@2
    85
// 3
williamr@2
    86
williamr@2
    87
template<class R, class T,
williamr@2
    88
    class B1, class B2, class B3,
williamr@2
    89
    class A1, class A2, class A3, class A4>
williamr@2
    90
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
williamr@2
    91
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
williamr@2
    92
{
williamr@2
    93
    typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
williamr@2
    94
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
williamr@2
    95
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
williamr@2
    96
}
williamr@2
    97
williamr@2
    98
template<class R, class T,
williamr@2
    99
    class B1, class B2, class B3,
williamr@2
   100
    class A1, class A2, class A3, class A4>
williamr@2
   101
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
williamr@2
   102
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
williamr@2
   103
{
williamr@2
   104
    typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
williamr@2
   105
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
williamr@2
   106
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
williamr@2
   107
}
williamr@2
   108
williamr@2
   109
// 4
williamr@2
   110
williamr@2
   111
template<class R, class T,
williamr@2
   112
    class B1, class B2, class B3, class B4,
williamr@2
   113
    class A1, class A2, class A3, class A4, class A5>
williamr@2
   114
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
williamr@2
   115
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
williamr@2
   116
{
williamr@2
   117
    typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
williamr@2
   118
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
williamr@2
   119
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
williamr@2
   120
}
williamr@2
   121
williamr@2
   122
template<class R, class T,
williamr@2
   123
    class B1, class B2, class B3, class B4,
williamr@2
   124
    class A1, class A2, class A3, class A4, class A5>
williamr@2
   125
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
williamr@2
   126
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
williamr@2
   127
{
williamr@2
   128
    typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
williamr@2
   129
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
williamr@2
   130
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
williamr@2
   131
}
williamr@2
   132
williamr@2
   133
// 5
williamr@2
   134
williamr@2
   135
template<class R, class T,
williamr@2
   136
    class B1, class B2, class B3, class B4, class B5,
williamr@2
   137
    class A1, class A2, class A3, class A4, class A5, class A6>
williamr@2
   138
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
williamr@2
   139
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
williamr@2
   140
{
williamr@2
   141
    typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
williamr@2
   142
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
williamr@2
   143
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
williamr@2
   144
}
williamr@2
   145
williamr@2
   146
template<class R, class T,
williamr@2
   147
    class B1, class B2, class B3, class B4, class B5,
williamr@2
   148
    class A1, class A2, class A3, class A4, class A5, class A6>
williamr@2
   149
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
williamr@2
   150
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
williamr@2
   151
{
williamr@2
   152
    typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
williamr@2
   153
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
williamr@2
   154
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
williamr@2
   155
}
williamr@2
   156
williamr@2
   157
// 6
williamr@2
   158
williamr@2
   159
template<class R, class T,
williamr@2
   160
    class B1, class B2, class B3, class B4, class B5, class B6,
williamr@2
   161
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
williamr@2
   162
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
williamr@2
   163
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
williamr@2
   164
{
williamr@2
   165
    typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
williamr@2
   166
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
williamr@2
   167
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
williamr@2
   168
}
williamr@2
   169
williamr@2
   170
template<class R, class T,
williamr@2
   171
    class B1, class B2, class B3, class B4, class B5, class B6,
williamr@2
   172
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
williamr@2
   173
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
williamr@2
   174
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
williamr@2
   175
{
williamr@2
   176
    typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
williamr@2
   177
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
williamr@2
   178
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
williamr@2
   179
}
williamr@2
   180
williamr@2
   181
// 7
williamr@2
   182
williamr@2
   183
template<class R, class T,
williamr@2
   184
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
williamr@2
   185
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
williamr@2
   186
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
williamr@2
   187
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
williamr@2
   188
{
williamr@2
   189
    typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
williamr@2
   190
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
williamr@2
   191
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
williamr@2
   192
}
williamr@2
   193
williamr@2
   194
template<class R, class T,
williamr@2
   195
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
williamr@2
   196
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
williamr@2
   197
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
williamr@2
   198
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
williamr@2
   199
{
williamr@2
   200
    typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
williamr@2
   201
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
williamr@2
   202
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
williamr@2
   203
}
williamr@2
   204
williamr@2
   205
// 8
williamr@2
   206
williamr@2
   207
template<class R, class T,
williamr@2
   208
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
williamr@2
   209
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
williamr@2
   210
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
williamr@2
   211
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
williamr@2
   212
{
williamr@2
   213
    typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
williamr@2
   214
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
williamr@2
   215
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
williamr@2
   216
}
williamr@2
   217
williamr@2
   218
template<class R, class T,
williamr@2
   219
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
williamr@2
   220
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
williamr@2
   221
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
williamr@2
   222
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
williamr@2
   223
{
williamr@2
   224
    typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
williamr@2
   225
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
williamr@2
   226
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
williamr@2
   227
}