]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================== |
2 | Copyright (c) 2001-2010 Joel de Guzman | |
3 | Copyright (c) 2010 Thomas Heller | |
4 | ||
5 | Distributed under the Boost Software License, Version 1.0. (See accompanying | |
6 | file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
7 | ==============================================================================*/ | |
8 | namespace detail { | |
9 | template <typename Object, typename MemPtr> | |
10 | struct mem_fun_ptr_gen | |
11 | { | |
12 | mem_fun_ptr_gen(Object const& obj_, MemPtr ptr_) | |
13 | : obj(obj_) | |
14 | , ptr(ptr_) | |
15 | {} | |
16 | typename phoenix::expression::mem_fun_ptr<Object, MemPtr>::type const | |
17 | operator()() const | |
18 | { | |
19 | return phoenix::expression::mem_fun_ptr<Object, MemPtr>::make(obj, ptr); | |
20 | } | |
21 | ||
22 | ||
23 | ||
24 | ||
25 | ||
26 | ||
27 | ||
28 | template <typename A0> | |
29 | typename phoenix::expression::mem_fun_ptr< | |
30 | Object | |
31 | , MemPtr | |
32 | , A0 | |
33 | >::type const | |
34 | operator()(A0 const& a0) const | |
35 | { | |
36 | return phoenix::expression::mem_fun_ptr< | |
37 | Object | |
38 | , MemPtr | |
39 | , A0 | |
40 | >::make(obj, ptr, a0); | |
41 | } | |
42 | ||
43 | ||
44 | ||
45 | ||
46 | ||
47 | ||
48 | ||
49 | template <typename A0 , typename A1> | |
50 | typename phoenix::expression::mem_fun_ptr< | |
51 | Object | |
52 | , MemPtr | |
53 | , A0 , A1 | |
54 | >::type const | |
55 | operator()(A0 const& a0 , A1 const& a1) const | |
56 | { | |
57 | return phoenix::expression::mem_fun_ptr< | |
58 | Object | |
59 | , MemPtr | |
60 | , A0 , A1 | |
61 | >::make(obj, ptr, a0 , a1); | |
62 | } | |
63 | ||
64 | ||
65 | ||
66 | ||
67 | ||
68 | ||
69 | ||
70 | template <typename A0 , typename A1 , typename A2> | |
71 | typename phoenix::expression::mem_fun_ptr< | |
72 | Object | |
73 | , MemPtr | |
74 | , A0 , A1 , A2 | |
75 | >::type const | |
76 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2) const | |
77 | { | |
78 | return phoenix::expression::mem_fun_ptr< | |
79 | Object | |
80 | , MemPtr | |
81 | , A0 , A1 , A2 | |
82 | >::make(obj, ptr, a0 , a1 , a2); | |
83 | } | |
84 | ||
85 | ||
86 | ||
87 | ||
88 | ||
89 | ||
90 | ||
91 | template <typename A0 , typename A1 , typename A2 , typename A3> | |
92 | typename phoenix::expression::mem_fun_ptr< | |
93 | Object | |
94 | , MemPtr | |
95 | , A0 , A1 , A2 , A3 | |
96 | >::type const | |
97 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const | |
98 | { | |
99 | return phoenix::expression::mem_fun_ptr< | |
100 | Object | |
101 | , MemPtr | |
102 | , A0 , A1 , A2 , A3 | |
103 | >::make(obj, ptr, a0 , a1 , a2 , a3); | |
104 | } | |
105 | ||
106 | ||
107 | ||
108 | ||
109 | ||
110 | ||
111 | ||
112 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4> | |
113 | typename phoenix::expression::mem_fun_ptr< | |
114 | Object | |
115 | , MemPtr | |
116 | , A0 , A1 , A2 , A3 , A4 | |
117 | >::type const | |
118 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const | |
119 | { | |
120 | return phoenix::expression::mem_fun_ptr< | |
121 | Object | |
122 | , MemPtr | |
123 | , A0 , A1 , A2 , A3 , A4 | |
124 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4); | |
125 | } | |
126 | ||
127 | ||
128 | ||
129 | ||
130 | ||
131 | ||
132 | ||
133 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5> | |
134 | typename phoenix::expression::mem_fun_ptr< | |
135 | Object | |
136 | , MemPtr | |
137 | , A0 , A1 , A2 , A3 , A4 , A5 | |
138 | >::type const | |
139 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const | |
140 | { | |
141 | return phoenix::expression::mem_fun_ptr< | |
142 | Object | |
143 | , MemPtr | |
144 | , A0 , A1 , A2 , A3 , A4 , A5 | |
145 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5); | |
146 | } | |
147 | ||
148 | ||
149 | ||
150 | ||
151 | ||
152 | ||
153 | ||
154 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6> | |
155 | typename phoenix::expression::mem_fun_ptr< | |
156 | Object | |
157 | , MemPtr | |
158 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 | |
159 | >::type const | |
160 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const | |
161 | { | |
162 | return phoenix::expression::mem_fun_ptr< | |
163 | Object | |
164 | , MemPtr | |
165 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 | |
166 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6); | |
167 | } | |
168 | ||
169 | ||
170 | ||
171 | ||
172 | ||
173 | ||
174 | ||
175 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7> | |
176 | typename phoenix::expression::mem_fun_ptr< | |
177 | Object | |
178 | , MemPtr | |
179 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 | |
180 | >::type const | |
181 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const | |
182 | { | |
183 | return phoenix::expression::mem_fun_ptr< | |
184 | Object | |
185 | , MemPtr | |
186 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 | |
187 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); | |
188 | } | |
189 | ||
190 | ||
191 | ||
192 | ||
193 | ||
194 | ||
195 | ||
196 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8> | |
197 | typename phoenix::expression::mem_fun_ptr< | |
198 | Object | |
199 | , MemPtr | |
200 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 | |
201 | >::type const | |
202 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const | |
203 | { | |
204 | return phoenix::expression::mem_fun_ptr< | |
205 | Object | |
206 | , MemPtr | |
207 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 | |
208 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); | |
209 | } | |
210 | ||
211 | ||
212 | ||
213 | ||
214 | ||
215 | ||
216 | ||
217 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9> | |
218 | typename phoenix::expression::mem_fun_ptr< | |
219 | Object | |
220 | , MemPtr | |
221 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 | |
222 | >::type const | |
223 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const | |
224 | { | |
225 | return phoenix::expression::mem_fun_ptr< | |
226 | Object | |
227 | , MemPtr | |
228 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 | |
229 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9); | |
230 | } | |
231 | ||
232 | ||
233 | ||
234 | ||
235 | ||
236 | ||
237 | ||
238 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10> | |
239 | typename phoenix::expression::mem_fun_ptr< | |
240 | Object | |
241 | , MemPtr | |
242 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 | |
243 | >::type const | |
244 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const | |
245 | { | |
246 | return phoenix::expression::mem_fun_ptr< | |
247 | Object | |
248 | , MemPtr | |
249 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 | |
250 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10); | |
251 | } | |
252 | ||
253 | ||
254 | ||
255 | ||
256 | ||
257 | ||
258 | ||
259 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11> | |
260 | typename phoenix::expression::mem_fun_ptr< | |
261 | Object | |
262 | , MemPtr | |
263 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 | |
264 | >::type const | |
265 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const | |
266 | { | |
267 | return phoenix::expression::mem_fun_ptr< | |
268 | Object | |
269 | , MemPtr | |
270 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 | |
271 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11); | |
272 | } | |
273 | ||
274 | ||
275 | ||
276 | ||
277 | ||
278 | ||
279 | ||
280 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12> | |
281 | typename phoenix::expression::mem_fun_ptr< | |
282 | Object | |
283 | , MemPtr | |
284 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 | |
285 | >::type const | |
286 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const | |
287 | { | |
288 | return phoenix::expression::mem_fun_ptr< | |
289 | Object | |
290 | , MemPtr | |
291 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 | |
292 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12); | |
293 | } | |
294 | ||
295 | ||
296 | ||
297 | ||
298 | ||
299 | ||
300 | ||
301 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13> | |
302 | typename phoenix::expression::mem_fun_ptr< | |
303 | Object | |
304 | , MemPtr | |
305 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 | |
306 | >::type const | |
307 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const | |
308 | { | |
309 | return phoenix::expression::mem_fun_ptr< | |
310 | Object | |
311 | , MemPtr | |
312 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 | |
313 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13); | |
314 | } | |
315 | ||
316 | ||
317 | ||
318 | ||
319 | ||
320 | ||
321 | ||
322 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14> | |
323 | typename phoenix::expression::mem_fun_ptr< | |
324 | Object | |
325 | , MemPtr | |
326 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 | |
327 | >::type const | |
328 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const | |
329 | { | |
330 | return phoenix::expression::mem_fun_ptr< | |
331 | Object | |
332 | , MemPtr | |
333 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 | |
334 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14); | |
335 | } | |
336 | ||
337 | ||
338 | ||
339 | ||
340 | ||
341 | ||
342 | ||
343 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15> | |
344 | typename phoenix::expression::mem_fun_ptr< | |
345 | Object | |
346 | , MemPtr | |
347 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 | |
348 | >::type const | |
349 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const | |
350 | { | |
351 | return phoenix::expression::mem_fun_ptr< | |
352 | Object | |
353 | , MemPtr | |
354 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 | |
355 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15); | |
356 | } | |
357 | ||
358 | ||
359 | ||
360 | ||
361 | ||
362 | ||
363 | ||
364 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16> | |
365 | typename phoenix::expression::mem_fun_ptr< | |
366 | Object | |
367 | , MemPtr | |
368 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 | |
369 | >::type const | |
370 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const | |
371 | { | |
372 | return phoenix::expression::mem_fun_ptr< | |
373 | Object | |
374 | , MemPtr | |
375 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 | |
376 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16); | |
377 | } | |
378 | ||
379 | ||
380 | ||
381 | ||
382 | ||
383 | ||
384 | ||
385 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17> | |
386 | typename phoenix::expression::mem_fun_ptr< | |
387 | Object | |
388 | , MemPtr | |
389 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 | |
390 | >::type const | |
391 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const | |
392 | { | |
393 | return phoenix::expression::mem_fun_ptr< | |
394 | Object | |
395 | , MemPtr | |
396 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 | |
397 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17); | |
398 | } | |
399 | ||
400 | ||
401 | ||
402 | ||
403 | ||
404 | ||
405 | ||
406 | template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18> | |
407 | typename phoenix::expression::mem_fun_ptr< | |
408 | Object | |
409 | , MemPtr | |
410 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 | |
411 | >::type const | |
412 | operator()(A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const | |
413 | { | |
414 | return phoenix::expression::mem_fun_ptr< | |
415 | Object | |
416 | , MemPtr | |
417 | , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 | |
418 | >::make(obj, ptr, a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18); | |
419 | } | |
420 | Object const& obj; | |
421 | MemPtr ptr; | |
422 | }; | |
423 | struct make_mem_fun_ptr_gen | |
424 | : proto::callable | |
425 | { | |
426 | template<typename Sig> | |
427 | struct result; | |
428 | template<typename This, typename Object, typename MemPtr> | |
429 | struct result<This(Object, MemPtr)> | |
430 | { | |
431 | typedef | |
432 | mem_fun_ptr_gen< | |
433 | typename remove_const<typename remove_reference<Object>::type>::type | |
434 | , typename remove_const<typename remove_reference<MemPtr>::type>::type | |
435 | > | |
436 | type; | |
437 | }; | |
438 | template<typename Object, typename MemPtr> | |
439 | mem_fun_ptr_gen<Object, MemPtr> operator()(Object const & obj, MemPtr ptr) const | |
440 | { | |
441 | return mem_fun_ptr_gen<Object, MemPtr>(obj, ptr); | |
442 | } | |
443 | }; | |
444 | } |