PageRenderTime 48ms CodeModel.GetById 2ms app.highlight 41ms RepoModel.GetById 1ms app.codeStats 0ms

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

http://hadesmem.googlecode.com/
C++ Header | 466 lines | 380 code | 55 blank | 31 comment | 0 complexity | 7673cb112d2cf6a8b0a72796bb9610a2 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 "boost/mpl/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
 53template<
 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    >
 58struct 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
 66template<
 67      typename F
 68    >
 69struct 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
 91namespace aux {
 92
 93template<
 94      typename F, typename U1, typename U2, typename U3, typename U4
 95    , typename U5
 96    >
 97struct 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
107BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
108BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
109
110template<
111      typename F
112    >
113struct bind< F,na,na,na,na,na >
114    : bind0<F>
115{
116};
117
118template<
119      typename F, typename T1
120    >
121struct 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
149namespace aux {
150
151template<
152      typename F, typename T1, typename U1, typename U2, typename U3
153    , typename U4, typename U5
154    >
155struct 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
165BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
166BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
167
168template<
169      typename F, typename T1
170    >
171struct bind< F,T1,na,na,na,na >
172    : bind1< F,T1 >
173{
174};
175
176template<
177      typename F, typename T1, typename T2
178    >
179struct 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
212namespace aux {
213
214template<
215      typename F, typename T1, typename T2, typename U1, typename U2
216    , typename U3, typename U4, typename U5
217    >
218struct 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
228BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
229BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
230
231template<
232      typename F, typename T1, typename T2
233    >
234struct bind< F,T1,T2,na,na,na >
235    : bind2< F,T1,T2 >
236{
237};
238
239template<
240      typename F, typename T1, typename T2, typename T3
241    >
242struct 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
280namespace aux {
281
282template<
283      typename F, typename T1, typename T2, typename T3, typename U1
284    , typename U2, typename U3, typename U4, typename U5
285    >
286struct 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
296BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
297BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
298
299template<
300      typename F, typename T1, typename T2, typename T3
301    >
302struct bind< F,T1,T2,T3,na,na >
303    : bind3< F,T1,T2,T3 >
304{
305};
306
307template<
308      typename F, typename T1, typename T2, typename T3, typename T4
309    >
310struct 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
354namespace aux {
355
356template<
357      typename F, typename T1, typename T2, typename T3, typename T4
358    , typename U1, typename U2, typename U3, typename U4, typename U5
359    >
360struct 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
370BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
371BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
372
373template<
374      typename F, typename T1, typename T2, typename T3, typename T4
375    >
376struct bind< F,T1,T2,T3,T4,na >
377    : bind4< F,T1,T2,T3,T4 >
378{
379};
380
381template<
382      typename F, typename T1, typename T2, typename T3, typename T4
383    , typename T5
384    >
385struct 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
434namespace aux {
435
436template<
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    >
441struct 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
451BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
452BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
453
454/// primary template (not a specialization!)
455
456template<
457      typename F, typename T1, typename T2, typename T3, typename T4
458    , typename T5
459    >
460struct bind
461    : bind5< F,T1,T2,T3,T4,T5 >
462{
463};
464
465}}
466