]> git.lyx.org Git - lyx.git/blob - boost/boost/bind/bind_template.hpp
major boost update
[lyx.git] / boost / boost / bind / bind_template.hpp
1 //
2 //  bind/bind_template.hpp
3 //
4 //  Do not include this header directly.
5 //
6 //  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
7 //
8 //  Permission to copy, use, modify, sell and distribute this software
9 //  is granted provided this copyright notice appears in all copies.
10 //  This software is provided "as is" without express or implied
11 //  warranty, and with no claim as to its suitability for any purpose.
12 //
13 //  See http://www.boost.org/libs/bind/bind.html for documentation.
14 //
15
16     typedef typename result_traits<R, F>::type result_type;
17
18     result_type operator()()
19     {
20         list0 a;
21         BOOST_BIND_EVALUATE;
22     }
23
24     result_type operator()() const
25     {
26         list0 a;
27         BOOST_BIND_EVALUATE;
28     }
29
30     template<class A1> result_type operator()(A1 & a1)
31     {
32         list1<A1 &> a(a1);
33         BOOST_BIND_EVALUATE;
34     }
35
36     template<class A1> result_type operator()(A1 & a1) const
37     {
38         list1<A1 &> a(a1);
39         BOOST_BIND_EVALUATE;
40     }
41
42     template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
43     {
44         list2<A1 &, A2 &> a(a1, a2);
45         BOOST_BIND_EVALUATE;
46     }
47
48     template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
49     {
50         list2<A1 &, A2 &> a(a1, a2);
51         BOOST_BIND_EVALUATE;
52     }
53
54     template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
55     {
56         list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
57         BOOST_BIND_EVALUATE;
58     }
59
60     template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
61     {
62         list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
63         BOOST_BIND_EVALUATE;
64     }
65
66     template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
67     {
68         list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
69         BOOST_BIND_EVALUATE;
70     }
71
72     template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
73     {
74         list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
75         BOOST_BIND_EVALUATE;
76     }
77
78     template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
79     {
80         list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
81         BOOST_BIND_EVALUATE;
82     }
83
84     template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
85     {
86         list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
87         BOOST_BIND_EVALUATE;
88     }
89
90     template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
91     {
92         list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
93         BOOST_BIND_EVALUATE;
94     }
95
96     template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
97     {
98         list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
99         BOOST_BIND_EVALUATE;
100     }
101
102     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
103     {
104         list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
105         BOOST_BIND_EVALUATE;
106     }
107
108     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
109     {
110         list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
111         BOOST_BIND_EVALUATE;
112     }
113
114     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
115     {
116         list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
117         BOOST_BIND_EVALUATE;
118     }
119
120     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
121     {
122         list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
123         BOOST_BIND_EVALUATE;
124     }
125
126     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
127     {
128         list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
129         BOOST_BIND_EVALUATE;
130     }
131
132     template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
133     {
134         list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
135         BOOST_BIND_EVALUATE;
136     }
137
138     template<class A> result_type eval(A & a)
139     {
140         BOOST_BIND_EVALUATE;
141     }
142
143     template<class A> result_type eval(A & a) const
144     {
145         BOOST_BIND_EVALUATE;
146     }
147
148     template<class V> void accept(V & v) const
149     {
150         BOOST_BIND_VISIT_EACH(v, f_, 0);
151         l_.accept(v);
152     }
153
154 private:
155
156     F f_;
157     L l_;