~ubuntu-branches/ubuntu/warty/aqsis/warty

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2004-08-24 07:25:04 UTC
  • Revision ID: james.westby@ubuntu.com-20040824072504-zf993vnevvisdsvb
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// preprocessed version of 'boost/mpl/bind.hpp' header
 
2
// see the original for copyright information
 
3
 
 
4
namespace boost {
 
5
namespace mpl {
 
6
 
 
7
namespace aux {
 
8
 
 
9
template<
 
10
      typename T, typename U1, typename U2, typename U3, typename U4
 
11
    , typename U5
 
12
    >
 
13
struct resolve_bind_arg
 
14
{
 
15
    typedef T type;
 
16
};
 
17
 
 
18
} // namespace aux
 
19
 
 
20
template< typename F, typename T > struct bind1st;
 
21
template< typename F, typename T > struct bind2nd;
 
22
 
 
23
namespace aux {
 
24
 
 
25
template<
 
26
      int N, typename U1, typename U2, typename U3, typename U4, typename U5
 
27
    >
 
28
struct resolve_bind_arg< arg<N>,U1,U2,U3,U4,U5 >
 
29
{
 
30
    typedef typename apply5<mpl::arg< N>,U1,U2,U3,U4,U5 >::type type;
 
31
};
 
32
 
 
33
template<
 
34
      typename F, typename T, typename U1, typename U2, typename U3
 
35
    , typename U4, typename U5
 
36
    >
 
37
struct resolve_bind_arg< bind1st<F,T>,U1,U2,U3,U4,U5 >
 
38
{
 
39
    typedef bind1st< F,T > f_;
 
40
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
41
};
 
42
 
 
43
template<
 
44
      typename F, typename T, typename U1, typename U2, typename U3
 
45
    , typename U4, typename U5
 
46
    >
 
47
struct resolve_bind_arg< bind2nd<F,T>,U1,U2,U3,U4,U5 >
 
48
{
 
49
    typedef bind2nd< F,T > f_;
 
50
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
51
};
 
52
 
 
53
} // namespace aux
 
54
 
 
55
BOOST_MPL_AUX_ARITY_SPEC(2, bind1st)
 
56
BOOST_MPL_AUX_ARITY_SPEC(2, bind2nd)
 
57
 
 
58
template<
 
59
      typename F
 
60
    >
 
61
struct bind0
 
62
{
 
63
    template<
 
64
          typename U1, typename U2, typename U3, typename U4, typename U5
 
65
        >
 
66
    struct apply
 
67
    {
 
68
     private:
 
69
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
70
 
 
71
     public:
 
72
        typedef typename apply0<f_>::type type;
 
73
    };
 
74
};
 
75
 
 
76
namespace aux {
 
77
 
 
78
template<
 
79
      typename F, typename U1, typename U2, typename U3, typename U4
 
80
    , typename U5
 
81
    >
 
82
struct resolve_bind_arg<
 
83
      bind0<F>,U1, U2, U3, U4, U5
 
84
    >
 
85
{
 
86
    typedef bind0<F> f_;
 
87
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
88
};
 
89
 
 
90
} // namespace aux
 
91
 
 
92
BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
 
93
 
 
94
template<
 
95
      typename F, typename T1
 
96
    >
 
97
struct bind1
 
98
{
 
99
    template<
 
100
          typename U1, typename U2, typename U3, typename U4, typename U5
 
101
        >
 
102
    struct apply
 
103
    {
 
104
     private:
 
105
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
106
        typedef typename aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 >::type t1;
 
107
 
 
108
     public:
 
109
        typedef typename apply1< f_,t1 >::type type;
 
110
    };
 
111
};
 
112
 
 
113
namespace aux {
 
114
 
 
115
template<
 
116
      typename F, typename T1, typename U1, typename U2, typename U3
 
117
    , typename U4, typename U5
 
118
    >
 
119
struct resolve_bind_arg<
 
120
      bind1< F,T1 >,U1, U2, U3, U4, U5
 
121
    >
 
122
{
 
123
    typedef bind1< F,T1 > f_;
 
124
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
125
};
 
126
 
 
127
} // namespace aux
 
128
 
 
129
BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
 
130
 
 
131
template<
 
132
      typename F, typename T1, typename T2
 
133
    >
 
134
struct bind2
 
135
{
 
136
    template<
 
137
          typename U1, typename U2, typename U3, typename U4, typename U5
 
138
        >
 
139
    struct apply
 
140
    {
 
141
     private:
 
142
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
143
        typedef typename aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 >::type t1;
 
144
        typedef typename aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 >::type t2;
 
145
 
 
146
     public:
 
147
        typedef typename apply2< f_,t1,t2 >::type type;
 
148
    };
 
149
};
 
150
 
 
151
namespace aux {
 
152
 
 
153
template<
 
154
      typename F, typename T1, typename T2, typename U1, typename U2
 
155
    , typename U3, typename U4, typename U5
 
156
    >
 
157
struct resolve_bind_arg<
 
158
      bind2< F,T1,T2 >,U1, U2, U3, U4, U5
 
159
    >
 
160
{
 
161
    typedef bind2< F,T1,T2 > f_;
 
162
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
163
};
 
164
 
 
165
} // namespace aux
 
166
 
 
167
BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
 
168
 
 
169
template<
 
170
      typename F, typename T1, typename T2, typename T3
 
171
    >
 
172
struct bind3
 
173
{
 
174
    template<
 
175
          typename U1, typename U2, typename U3, typename U4, typename U5
 
176
        >
 
177
    struct apply
 
178
    {
 
179
     private:
 
180
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
181
        typedef typename aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 >::type t1;
 
182
        typedef typename aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 >::type t2;
 
183
        typedef typename aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 >::type t3;
 
184
 
 
185
     public:
 
186
        typedef typename apply3< f_,t1,t2,t3 >::type type;
 
187
    };
 
188
};
 
189
 
 
190
namespace aux {
 
191
 
 
192
template<
 
193
      typename F, typename T1, typename T2, typename T3, typename U1
 
194
    , typename U2, typename U3, typename U4, typename U5
 
195
    >
 
196
struct resolve_bind_arg<
 
197
      bind3< F,T1,T2,T3 >,U1, U2, U3, U4, U5
 
198
    >
 
199
{
 
200
    typedef bind3< F,T1,T2,T3 > f_;
 
201
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
202
};
 
203
 
 
204
} // namespace aux
 
205
 
 
206
BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
 
207
 
 
208
template<
 
209
      typename F, typename T1, typename T2, typename T3, typename T4
 
210
    >
 
211
struct bind4
 
212
{
 
213
    template<
 
214
          typename U1, typename U2, typename U3, typename U4, typename U5
 
215
        >
 
216
    struct apply
 
217
    {
 
218
     private:
 
219
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
220
        typedef typename aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 >::type t1;
 
221
        typedef typename aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 >::type t2;
 
222
        typedef typename aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 >::type t3;
 
223
        typedef typename aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 >::type t4;
 
224
 
 
225
     public:
 
226
        typedef typename apply4< f_,t1,t2,t3,t4 >::type type;
 
227
    };
 
228
};
 
229
 
 
230
namespace aux {
 
231
 
 
232
template<
 
233
      typename F, typename T1, typename T2, typename T3, typename T4
 
234
    , typename U1, typename U2, typename U3, typename U4, typename U5
 
235
    >
 
236
struct resolve_bind_arg<
 
237
      bind4< F,T1,T2,T3,T4 >,U1, U2, U3, U4, U5
 
238
    >
 
239
{
 
240
    typedef bind4< F,T1,T2,T3,T4 > f_;
 
241
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
242
};
 
243
 
 
244
} // namespace aux
 
245
 
 
246
BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
 
247
 
 
248
template<
 
249
      typename F, typename T1, typename T2, typename T3, typename T4
 
250
    , typename T5
 
251
    >
 
252
struct bind5
 
253
{
 
254
    template<
 
255
          typename U1, typename U2, typename U3, typename U4, typename U5
 
256
        >
 
257
    struct apply
 
258
    {
 
259
     private:
 
260
        typedef typename aux::resolve_bind_arg< F,U1,U2,U3,U4,U5 >::type f_;
 
261
        typedef typename aux::resolve_bind_arg< T1,U1,U2,U3,U4,U5 >::type t1;
 
262
        typedef typename aux::resolve_bind_arg< T2,U1,U2,U3,U4,U5 >::type t2;
 
263
        typedef typename aux::resolve_bind_arg< T3,U1,U2,U3,U4,U5 >::type t3;
 
264
        typedef typename aux::resolve_bind_arg< T4,U1,U2,U3,U4,U5 >::type t4;
 
265
        typedef typename aux::resolve_bind_arg< T5,U1,U2,U3,U4,U5 >::type t5;
 
266
 
 
267
     public:
 
268
        typedef typename apply5< f_,t1,t2,t3,t4,t5 >::type type;
 
269
    };
 
270
};
 
271
 
 
272
namespace aux {
 
273
 
 
274
template<
 
275
      typename F, typename T1, typename T2, typename T3, typename T4
 
276
    , typename T5, typename U1, typename U2, typename U3, typename U4
 
277
    , typename U5
 
278
    >
 
279
struct resolve_bind_arg<
 
280
      bind5< F,T1,T2,T3,T4,T5 >,U1, U2, U3, U4, U5
 
281
    >
 
282
{
 
283
    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
 
284
    typedef typename apply5< f_,U1,U2,U3,U4,U5 >::type type;
 
285
};
 
286
 
 
287
} // namespace aux
 
288
 
 
289
BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
 
290
 
 
291
template< typename F, typename T >
 
292
struct bind1st
 
293
{
 
294
    template<
 
295
          typename U
 
296
        , typename U2, typename U3, typename U4, typename U5
 
297
        >
 
298
    struct apply
 
299
        : apply2< F,T,U >
 
300
    {
 
301
    };
 
302
};
 
303
 
 
304
template< typename F, typename T >
 
305
struct bind2nd
 
306
{
 
307
    template<
 
308
          typename U
 
309
        , typename U2, typename U3, typename U4, typename U5
 
310
        >
 
311
    struct apply
 
312
        : apply2< F,U,T >
 
313
    {
 
314
    };
 
315
};
 
316
 
 
317
} // namespace mpl
 
318
} // namespace boost
 
319