New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
bind.hpp in vendors/XIOS/current/extern/boost/include/boost/mpl/aux_/preprocessed/no_ctps – NEMO

source: vendors/XIOS/current/extern/boost/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp @ 3428

Last change on this file since 3428 was 3428, checked in by rblod, 12 years ago

importing initial XIOS vendor drop

File size: 13.2 KB
Line 
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 {
16template< bool >
17struct resolve_arg_impl
18{
19    template<
20          typename T, typename U1, typename U2, typename U3
21        , typename U4, typename U5
22        >
23    struct result_
24    {
25        typedef T type;
26    };
27};
28
29template<>
30struct resolve_arg_impl<true>
31{
32    template<
33          typename T, typename U1, typename U2, typename U3
34        , typename U4, typename U5
35        >
36    struct result_
37    {
38        typedef typename apply_wrap5<
39              T
40            , U1, U2, U3, U4, U5
41            >::type type;
42    };
43};
44
45template< typename T > struct is_bind_template;
46
47template<
48      typename T, typename U1, typename U2, typename U3, typename U4
49    , typename U5
50    >
51struct resolve_bind_arg
52    : resolve_arg_impl< is_bind_template<T>::value >
53            ::template result_< T,U1,U2,U3,U4,U5 >
54{
55};
56
57template< typename T >
58struct replace_unnamed_arg_impl
59{
60    template< typename Arg > struct result_
61    {
62        typedef Arg next;
63        typedef T type;
64    };
65};
66
67template<>
68struct replace_unnamed_arg_impl< arg< -1 > >
69{
70    template< typename Arg > struct result_
71    {
72        typedef typename next<Arg>::type next;
73        typedef Arg type;
74    };
75};
76
77template< typename T, typename Arg >
78struct replace_unnamed_arg
79    : replace_unnamed_arg_impl<T>::template result_<Arg>
80{
81};
82
83template< int arity_ > struct bind_chooser;
84
85aux::no_tag is_bind_helper(...);
86template< typename T > aux::no_tag is_bind_helper(protect<T>*);
87
88template<
89      typename F, typename T1, typename T2, typename T3, typename T4
90    , typename T5
91    >
92aux::yes_tag is_bind_helper(bind< F,T1,T2,T3,T4,T5 >*);
93
94template< int N >
95aux::yes_tag is_bind_helper(arg<N>*);
96
97template< bool is_ref_  = true >
98struct is_bind_template_impl
99{
100    template< typename T > struct result_
101    {
102        BOOST_STATIC_CONSTANT(bool, value  = false);
103    };
104};
105
106template<>
107struct is_bind_template_impl<false>
108{
109    template< typename T > struct result_
110    {
111        BOOST_STATIC_CONSTANT(bool, value =
112              sizeof(aux::is_bind_helper(static_cast<T*>(0)))
113                == sizeof(aux::yes_tag)
114            );
115    };
116};
117
118template< typename T > struct is_bind_template
119    : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
120        ::template result_<T>
121{
122};
123
124} // namespace aux
125
126template<
127      typename F
128    >
129struct bind0
130{
131    template<
132          typename U1 = na, typename U2 = na, typename U3 = na
133        , typename U4 = na, typename U5 = na
134        >
135    struct apply
136    {
137     private:
138        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
139        typedef typename r0::type a0;
140        typedef typename r0::next n1;
141        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
142        ///
143     public:
144        typedef typename apply_wrap0<
145              f_
146            >::type type;
147
148    };
149};
150
151namespace aux {
152
153template<
154      typename F
155    >
156aux::yes_tag
157is_bind_helper(bind0<F>*);
158
159} // namespace aux
160
161BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
162BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
163
164namespace aux {
165
166template<>
167struct bind_chooser<0>
168{
169    template<
170          typename F, typename T1, typename T2, typename T3, typename T4
171        , typename T5
172        >
173    struct result_
174    {
175        typedef bind0<F> type;
176    };
177};
178
179} // namespace aux
180
181template<
182      typename F, typename T1
183    >
184struct bind1
185{
186    template<
187          typename U1 = na, typename U2 = na, typename U3 = na
188        , typename U4 = na, typename U5 = na
189        >
190    struct apply
191    {
192     private:
193        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
194        typedef typename r0::type a0;
195        typedef typename r0::next n1;
196        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
197        ///
198        typedef aux::replace_unnamed_arg< T1,n1 > r1;
199        typedef typename r1::type a1;
200        typedef typename r1::next n2;
201        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
202        ///
203     public:
204        typedef typename apply_wrap1<
205              f_
206            , typename t1::type
207            >::type type;
208
209    };
210};
211
212namespace aux {
213
214template<
215      typename F, typename T1
216    >
217aux::yes_tag
218is_bind_helper(bind1< F,T1 >*);
219
220} // namespace aux
221
222BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
223BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
224
225namespace aux {
226
227template<>
228struct bind_chooser<1>
229{
230    template<
231          typename F, typename T1, typename T2, typename T3, typename T4
232        , typename T5
233        >
234    struct result_
235    {
236        typedef bind1< F,T1 > type;
237    };
238};
239
240} // namespace aux
241
242template<
243      typename F, typename T1, typename T2
244    >
245struct bind2
246{
247    template<
248          typename U1 = na, typename U2 = na, typename U3 = na
249        , typename U4 = na, typename U5 = na
250        >
251    struct apply
252    {
253     private:
254        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
255        typedef typename r0::type a0;
256        typedef typename r0::next n1;
257        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
258        ///
259        typedef aux::replace_unnamed_arg< T1,n1 > r1;
260        typedef typename r1::type a1;
261        typedef typename r1::next n2;
262        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
263        ///
264        typedef aux::replace_unnamed_arg< T2,n2 > r2;
265        typedef typename r2::type a2;
266        typedef typename r2::next n3;
267        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
268        ///
269     public:
270        typedef typename apply_wrap2<
271              f_
272            , typename t1::type, typename t2::type
273            >::type type;
274
275    };
276};
277
278namespace aux {
279
280template<
281      typename F, typename T1, typename T2
282    >
283aux::yes_tag
284is_bind_helper(bind2< F,T1,T2 >*);
285
286} // namespace aux
287
288BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
289BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
290
291namespace aux {
292
293template<>
294struct bind_chooser<2>
295{
296    template<
297          typename F, typename T1, typename T2, typename T3, typename T4
298        , typename T5
299        >
300    struct result_
301    {
302        typedef bind2< F,T1,T2 > type;
303    };
304};
305
306} // namespace aux
307
308template<
309      typename F, typename T1, typename T2, typename T3
310    >
311struct bind3
312{
313    template<
314          typename U1 = na, typename U2 = na, typename U3 = na
315        , typename U4 = na, typename U5 = na
316        >
317    struct apply
318    {
319     private:
320        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
321        typedef typename r0::type a0;
322        typedef typename r0::next n1;
323        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
324        ///
325        typedef aux::replace_unnamed_arg< T1,n1 > r1;
326        typedef typename r1::type a1;
327        typedef typename r1::next n2;
328        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
329        ///
330        typedef aux::replace_unnamed_arg< T2,n2 > r2;
331        typedef typename r2::type a2;
332        typedef typename r2::next n3;
333        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
334        ///
335        typedef aux::replace_unnamed_arg< T3,n3 > r3;
336        typedef typename r3::type a3;
337        typedef typename r3::next n4;
338        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
339        ///
340     public:
341        typedef typename apply_wrap3<
342              f_
343            , typename t1::type, typename t2::type, typename t3::type
344            >::type type;
345
346    };
347};
348
349namespace aux {
350
351template<
352      typename F, typename T1, typename T2, typename T3
353    >
354aux::yes_tag
355is_bind_helper(bind3< F,T1,T2,T3 >*);
356
357} // namespace aux
358
359BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
360BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
361
362namespace aux {
363
364template<>
365struct bind_chooser<3>
366{
367    template<
368          typename F, typename T1, typename T2, typename T3, typename T4
369        , typename T5
370        >
371    struct result_
372    {
373        typedef bind3< F,T1,T2,T3 > type;
374    };
375};
376
377} // namespace aux
378
379template<
380      typename F, typename T1, typename T2, typename T3, typename T4
381    >
382struct bind4
383{
384    template<
385          typename U1 = na, typename U2 = na, typename U3 = na
386        , typename U4 = na, typename U5 = na
387        >
388    struct apply
389    {
390     private:
391        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
392        typedef typename r0::type a0;
393        typedef typename r0::next n1;
394        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
395        ///
396        typedef aux::replace_unnamed_arg< T1,n1 > r1;
397        typedef typename r1::type a1;
398        typedef typename r1::next n2;
399        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
400        ///
401        typedef aux::replace_unnamed_arg< T2,n2 > r2;
402        typedef typename r2::type a2;
403        typedef typename r2::next n3;
404        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
405        ///
406        typedef aux::replace_unnamed_arg< T3,n3 > r3;
407        typedef typename r3::type a3;
408        typedef typename r3::next n4;
409        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
410        ///
411        typedef aux::replace_unnamed_arg< T4,n4 > r4;
412        typedef typename r4::type a4;
413        typedef typename r4::next n5;
414        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
415        ///
416     public:
417        typedef typename apply_wrap4<
418              f_
419            , typename t1::type, typename t2::type, typename t3::type
420            , typename t4::type
421            >::type type;
422
423    };
424};
425
426namespace aux {
427
428template<
429      typename F, typename T1, typename T2, typename T3, typename T4
430    >
431aux::yes_tag
432is_bind_helper(bind4< F,T1,T2,T3,T4 >*);
433
434} // namespace aux
435
436BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
437BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
438
439namespace aux {
440
441template<>
442struct bind_chooser<4>
443{
444    template<
445          typename F, typename T1, typename T2, typename T3, typename T4
446        , typename T5
447        >
448    struct result_
449    {
450        typedef bind4< F,T1,T2,T3,T4 > type;
451    };
452};
453
454} // namespace aux
455
456template<
457      typename F, typename T1, typename T2, typename T3, typename T4
458    , typename T5
459    >
460struct bind5
461{
462    template<
463          typename U1 = na, typename U2 = na, typename U3 = na
464        , typename U4 = na, typename U5 = na
465        >
466    struct apply
467    {
468     private:
469        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
470        typedef typename r0::type a0;
471        typedef typename r0::next n1;
472        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
473        ///
474        typedef aux::replace_unnamed_arg< T1,n1 > r1;
475        typedef typename r1::type a1;
476        typedef typename r1::next n2;
477        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
478        ///
479        typedef aux::replace_unnamed_arg< T2,n2 > r2;
480        typedef typename r2::type a2;
481        typedef typename r2::next n3;
482        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
483        ///
484        typedef aux::replace_unnamed_arg< T3,n3 > r3;
485        typedef typename r3::type a3;
486        typedef typename r3::next n4;
487        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
488        ///
489        typedef aux::replace_unnamed_arg< T4,n4 > r4;
490        typedef typename r4::type a4;
491        typedef typename r4::next n5;
492        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
493        ///
494        typedef aux::replace_unnamed_arg< T5,n5 > r5;
495        typedef typename r5::type a5;
496        typedef typename r5::next n6;
497        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
498        ///
499     public:
500        typedef typename apply_wrap5<
501              f_
502            , typename t1::type, typename t2::type, typename t3::type
503            , typename t4::type, typename t5::type
504            >::type type;
505
506    };
507};
508
509namespace aux {
510
511template<
512      typename F, typename T1, typename T2, typename T3, typename T4
513    , typename T5
514    >
515aux::yes_tag
516is_bind_helper(bind5< F,T1,T2,T3,T4,T5 >*);
517
518} // namespace aux
519
520BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
521BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
522
523namespace aux {
524
525template<>
526struct bind_chooser<5>
527{
528    template<
529          typename F, typename T1, typename T2, typename T3, typename T4
530        , typename T5
531        >
532    struct result_
533    {
534        typedef bind5< F,T1,T2,T3,T4,T5 > type;
535    };
536};
537
538} // namespace aux
539
540namespace aux {
541
542template< typename T >
543struct is_bind_arg
544{
545    BOOST_STATIC_CONSTANT(bool, value  = true);
546};
547
548template<>
549struct is_bind_arg<na>
550{
551    BOOST_STATIC_CONSTANT(bool, value  = false);
552};
553
554template<
555      typename T1, typename T2, typename T3, typename T4, typename T5
556    >
557struct bind_count_args
558{
559    BOOST_STATIC_CONSTANT(int, value =
560          is_bind_arg<T1>::value + is_bind_arg<T2>::value
561        + is_bind_arg<T3>::value + is_bind_arg<T4>::value
562        + is_bind_arg<T5>::value
563        );
564
565};
566
567}
568
569template<
570      typename F, typename T1, typename T2, typename T3, typename T4
571    , typename T5
572    >
573struct bind
574    : aux::bind_chooser<
575          aux::bind_count_args< T1,T2,T3,T4,T5 >::value
576        >::template result_< F,T1,T2,T3,T4,T5 >::type
577{
578};
579
580BOOST_MPL_AUX_ARITY_SPEC(
581      6
582    , bind
583    )
584
585BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
586      6
587    , bind
588    )
589}}
590
Note: See TracBrowser for help on using the repository browser.