PageRenderTime 31ms CodeModel.GetById 1ms app.highlight 27ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp

http://hadesmem.googlecode.com/
C++ Header | 397 lines | 321 code | 46 blank | 30 comment | 0 complexity | bf9528f5793c09491e8400f7228648ef MD5 | raw file
  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 the main "bind.hpp" header
 11// -- DO NOT modify by hand!
 12
 13namespace boost { namespace mpl {
 14
 15namespace aux {
 16
 17template<
 18      typename T, typename U1, typename U2, typename U3, typename U4
 19    , typename U5
 20    >
 21struct resolve_bind_arg
 22{
 23    typedef T type;
 24};
 25
 26template<
 27      typename T
 28    , typename Arg
 29    >
 30struct replace_unnamed_arg
 31{
 32    typedef Arg next;
 33    typedef T type;
 34};
 35
 36template<
 37      typename Arg
 38    >
 39struct replace_unnamed_arg< arg< -1 >, Arg >
 40{
 41    typedef typename Arg::next next;
 42    typedef Arg type;
 43};
 44
 45template<
 46      int N, typename U1, typename U2, typename U3, typename U4, typename U5
 47    >
 48struct 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} // namespace aux
 54
 55template<
 56      typename F
 57    >
 58struct bind0
 59{
 60    template<
 61          typename U1, typename U2, typename U3, typename U4, typename U5
 62        >
 63    struct apply
 64    {
 65     private:
 66        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
 67        typedef typename r0::type a0;
 68        typedef typename r0::next n1;
 69        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
 70        ///
 71     public:
 72        typedef typename apply_wrap0<
 73              f_
 74            >::type type;
 75
 76    };
 77};
 78
 79namespace aux {
 80
 81template<
 82      typename F, typename U1, typename U2, typename U3, typename U4
 83    , typename U5
 84    >
 85struct resolve_bind_arg<
 86      bind0<F>, U1, U2, U3, U4, U5
 87    >
 88{
 89    typedef bind0<F> f_;
 90    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
 91};
 92
 93} // namespace aux
 94
 95BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
 96BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
 97
 98template<
 99      typename F, typename T1
100    >
101struct bind1
102{
103    template<
104          typename U1, typename U2, typename U3, typename U4, typename U5
105        >
106    struct apply
107    {
108     private:
109        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
110        typedef typename r0::type a0;
111        typedef typename r0::next n1;
112        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
113        ///
114        typedef aux::replace_unnamed_arg< T1,n1 > r1;
115        typedef typename r1::type a1;
116        typedef typename r1::next n2;
117        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
118        ///
119     public:
120        typedef typename apply_wrap1<
121              f_
122            , typename t1::type
123            >::type type;
124
125    };
126};
127
128namespace aux {
129
130template<
131      typename F, typename T1, typename U1, typename U2, typename U3
132    , typename U4, typename U5
133    >
134struct resolve_bind_arg<
135      bind1< F,T1 >, U1, U2, U3, U4, U5
136    >
137{
138    typedef bind1< F,T1 > f_;
139    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
140};
141
142} // namespace aux
143
144BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
145BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
146
147template<
148      typename F, typename T1, typename T2
149    >
150struct bind2
151{
152    template<
153          typename U1, typename U2, typename U3, typename U4, typename U5
154        >
155    struct apply
156    {
157     private:
158        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
159        typedef typename r0::type a0;
160        typedef typename r0::next n1;
161        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
162        ///
163        typedef aux::replace_unnamed_arg< T1,n1 > r1;
164        typedef typename r1::type a1;
165        typedef typename r1::next n2;
166        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
167        ///
168        typedef aux::replace_unnamed_arg< T2,n2 > r2;
169        typedef typename r2::type a2;
170        typedef typename r2::next n3;
171        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
172        ///
173     public:
174        typedef typename apply_wrap2<
175              f_
176            , typename t1::type, typename t2::type
177            >::type type;
178
179    };
180};
181
182namespace aux {
183
184template<
185      typename F, typename T1, typename T2, typename U1, typename U2
186    , typename U3, typename U4, typename U5
187    >
188struct resolve_bind_arg<
189      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
190    >
191{
192    typedef bind2< F,T1,T2 > f_;
193    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
194};
195
196} // namespace aux
197
198BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
199BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
200
201template<
202      typename F, typename T1, typename T2, typename T3
203    >
204struct bind3
205{
206    template<
207          typename U1, typename U2, typename U3, typename U4, typename U5
208        >
209    struct apply
210    {
211     private:
212        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
213        typedef typename r0::type a0;
214        typedef typename r0::next n1;
215        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
216        ///
217        typedef aux::replace_unnamed_arg< T1,n1 > r1;
218        typedef typename r1::type a1;
219        typedef typename r1::next n2;
220        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
221        ///
222        typedef aux::replace_unnamed_arg< T2,n2 > r2;
223        typedef typename r2::type a2;
224        typedef typename r2::next n3;
225        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
226        ///
227        typedef aux::replace_unnamed_arg< T3,n3 > r3;
228        typedef typename r3::type a3;
229        typedef typename r3::next n4;
230        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
231        ///
232     public:
233        typedef typename apply_wrap3<
234              f_
235            , typename t1::type, typename t2::type, typename t3::type
236            >::type type;
237
238    };
239};
240
241namespace aux {
242
243template<
244      typename F, typename T1, typename T2, typename T3, typename U1
245    , typename U2, typename U3, typename U4, typename U5
246    >
247struct resolve_bind_arg<
248      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
249    >
250{
251    typedef bind3< F,T1,T2,T3 > f_;
252    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
253};
254
255} // namespace aux
256
257BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
258BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
259
260template<
261      typename F, typename T1, typename T2, typename T3, typename T4
262    >
263struct bind4
264{
265    template<
266          typename U1, typename U2, typename U3, typename U4, typename U5
267        >
268    struct apply
269    {
270     private:
271        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
272        typedef typename r0::type a0;
273        typedef typename r0::next n1;
274        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
275        ///
276        typedef aux::replace_unnamed_arg< T1,n1 > r1;
277        typedef typename r1::type a1;
278        typedef typename r1::next n2;
279        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
280        ///
281        typedef aux::replace_unnamed_arg< T2,n2 > r2;
282        typedef typename r2::type a2;
283        typedef typename r2::next n3;
284        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
285        ///
286        typedef aux::replace_unnamed_arg< T3,n3 > r3;
287        typedef typename r3::type a3;
288        typedef typename r3::next n4;
289        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
290        ///
291        typedef aux::replace_unnamed_arg< T4,n4 > r4;
292        typedef typename r4::type a4;
293        typedef typename r4::next n5;
294        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
295        ///
296     public:
297        typedef typename apply_wrap4<
298              f_
299            , typename t1::type, typename t2::type, typename t3::type
300            , typename t4::type
301            >::type type;
302
303    };
304};
305
306namespace aux {
307
308template<
309      typename F, typename T1, typename T2, typename T3, typename T4
310    , typename U1, typename U2, typename U3, typename U4, typename U5
311    >
312struct resolve_bind_arg<
313      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
314    >
315{
316    typedef bind4< F,T1,T2,T3,T4 > f_;
317    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
318};
319
320} // namespace aux
321
322BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
323BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
324
325template<
326      typename F, typename T1, typename T2, typename T3, typename T4
327    , typename T5
328    >
329struct bind5
330{
331    template<
332          typename U1, typename U2, typename U3, typename U4, typename U5
333        >
334    struct apply
335    {
336     private:
337        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
338        typedef typename r0::type a0;
339        typedef typename r0::next n1;
340        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
341        ///
342        typedef aux::replace_unnamed_arg< T1,n1 > r1;
343        typedef typename r1::type a1;
344        typedef typename r1::next n2;
345        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
346        ///
347        typedef aux::replace_unnamed_arg< T2,n2 > r2;
348        typedef typename r2::type a2;
349        typedef typename r2::next n3;
350        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
351        ///
352        typedef aux::replace_unnamed_arg< T3,n3 > r3;
353        typedef typename r3::type a3;
354        typedef typename r3::next n4;
355        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
356        ///
357        typedef aux::replace_unnamed_arg< T4,n4 > r4;
358        typedef typename r4::type a4;
359        typedef typename r4::next n5;
360        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
361        ///
362        typedef aux::replace_unnamed_arg< T5,n5 > r5;
363        typedef typename r5::type a5;
364        typedef typename r5::next n6;
365        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
366        ///
367     public:
368        typedef typename apply_wrap5<
369              f_
370            , typename t1::type, typename t2::type, typename t3::type
371            , typename t4::type, typename t5::type
372            >::type type;
373
374    };
375};
376
377namespace aux {
378
379template<
380      typename F, typename T1, typename T2, typename T3, typename T4
381    , typename T5, typename U1, typename U2, typename U3, typename U4
382    , typename U5
383    >
384struct resolve_bind_arg<
385      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
386    >
387{
388    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
389    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
390};
391
392} // namespace aux
393
394BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
395BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
396}}
397