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