Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/bind/mem_fn_template.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
1 // | |
2 // bind/mem_fn_template.hpp | |
3 // | |
4 // Do not include this header directly | |
5 // | |
6 // Copyright (c) 2001 Peter Dimov and Multi Media Ltd. | |
7 // | |
8 // Distributed under the Boost Software License, Version 1.0. (See | |
9 // accompanying file LICENSE_1_0.txt or copy at | |
10 // http://www.boost.org/LICENSE_1_0.txt) | |
11 // | |
12 // See http://www.boost.org/libs/bind/mem_fn.html for documentation. | |
13 // | |
14 | |
15 #if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) | |
16 # define BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
17 #endif | |
18 | |
19 // mf0 | |
20 | |
21 template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf0) | |
22 { | |
23 public: | |
24 | |
25 typedef R result_type; | |
26 typedef T * argument_type; | |
27 | |
28 private: | |
29 | |
30 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) ()) | |
31 F f_; | |
32 | |
33 template<class U> R call(U & u, T const *) const | |
34 { | |
35 BOOST_MEM_FN_RETURN (u.*f_)(); | |
36 } | |
37 | |
38 template<class U> R call(U & u, void const *) const | |
39 { | |
40 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); | |
41 } | |
42 | |
43 public: | |
44 | |
45 explicit BOOST_MEM_FN_NAME(mf0)(F f): f_(f) {} | |
46 | |
47 R operator()(T * p) const | |
48 { | |
49 BOOST_MEM_FN_RETURN (p->*f_)(); | |
50 } | |
51 | |
52 template<class U> R operator()(U & u) const | |
53 { | |
54 U const * p = 0; | |
55 BOOST_MEM_FN_RETURN call(u, p); | |
56 } | |
57 | |
58 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
59 | |
60 template<class U> R operator()(U const & u) const | |
61 { | |
62 U const * p = 0; | |
63 BOOST_MEM_FN_RETURN call(u, p); | |
64 } | |
65 | |
66 #endif | |
67 | |
68 R operator()(T & t) const | |
69 { | |
70 BOOST_MEM_FN_RETURN (t.*f_)(); | |
71 } | |
72 | |
73 bool operator==(BOOST_MEM_FN_NAME(mf0) const & rhs) const | |
74 { | |
75 return f_ == rhs.f_; | |
76 } | |
77 | |
78 bool operator!=(BOOST_MEM_FN_NAME(mf0) const & rhs) const | |
79 { | |
80 return f_ != rhs.f_; | |
81 } | |
82 }; | |
83 | |
84 // cmf0 | |
85 | |
86 template<class R, class T BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf0) | |
87 { | |
88 public: | |
89 | |
90 typedef R result_type; | |
91 typedef T const * argument_type; | |
92 | |
93 private: | |
94 | |
95 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) () const) | |
96 F f_; | |
97 | |
98 template<class U> R call(U & u, T const *) const | |
99 { | |
100 BOOST_MEM_FN_RETURN (u.*f_)(); | |
101 } | |
102 | |
103 template<class U> R call(U & u, void const *) const | |
104 { | |
105 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(); | |
106 } | |
107 | |
108 public: | |
109 | |
110 explicit BOOST_MEM_FN_NAME(cmf0)(F f): f_(f) {} | |
111 | |
112 template<class U> R operator()(U const & u) const | |
113 { | |
114 U const * p = 0; | |
115 BOOST_MEM_FN_RETURN call(u, p); | |
116 } | |
117 | |
118 R operator()(T const & t) const | |
119 { | |
120 BOOST_MEM_FN_RETURN (t.*f_)(); | |
121 } | |
122 | |
123 bool operator==(BOOST_MEM_FN_NAME(cmf0) const & rhs) const | |
124 { | |
125 return f_ == rhs.f_; | |
126 } | |
127 | |
128 bool operator!=(BOOST_MEM_FN_NAME(cmf0) const & rhs) const | |
129 { | |
130 return f_ != rhs.f_; | |
131 } | |
132 }; | |
133 | |
134 // mf1 | |
135 | |
136 template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf1) | |
137 { | |
138 public: | |
139 | |
140 typedef R result_type; | |
141 typedef T * first_argument_type; | |
142 typedef A1 second_argument_type; | |
143 | |
144 private: | |
145 | |
146 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1)) | |
147 F f_; | |
148 | |
149 template<class U, class B1> R call(U & u, T const *, B1 & b1) const | |
150 { | |
151 BOOST_MEM_FN_RETURN (u.*f_)(b1); | |
152 } | |
153 | |
154 template<class U, class B1> R call(U & u, void const *, B1 & b1) const | |
155 { | |
156 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); | |
157 } | |
158 | |
159 public: | |
160 | |
161 explicit BOOST_MEM_FN_NAME(mf1)(F f): f_(f) {} | |
162 | |
163 R operator()(T * p, A1 a1) const | |
164 { | |
165 BOOST_MEM_FN_RETURN (p->*f_)(a1); | |
166 } | |
167 | |
168 template<class U> R operator()(U & u, A1 a1) const | |
169 { | |
170 U const * p = 0; | |
171 BOOST_MEM_FN_RETURN call(u, p, a1); | |
172 } | |
173 | |
174 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
175 | |
176 template<class U> R operator()(U const & u, A1 a1) const | |
177 { | |
178 U const * p = 0; | |
179 BOOST_MEM_FN_RETURN call(u, p, a1); | |
180 } | |
181 | |
182 #endif | |
183 | |
184 R operator()(T & t, A1 a1) const | |
185 { | |
186 BOOST_MEM_FN_RETURN (t.*f_)(a1); | |
187 } | |
188 | |
189 bool operator==(BOOST_MEM_FN_NAME(mf1) const & rhs) const | |
190 { | |
191 return f_ == rhs.f_; | |
192 } | |
193 | |
194 bool operator!=(BOOST_MEM_FN_NAME(mf1) const & rhs) const | |
195 { | |
196 return f_ != rhs.f_; | |
197 } | |
198 }; | |
199 | |
200 // cmf1 | |
201 | |
202 template<class R, class T, class A1 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf1) | |
203 { | |
204 public: | |
205 | |
206 typedef R result_type; | |
207 typedef T const * first_argument_type; | |
208 typedef A1 second_argument_type; | |
209 | |
210 private: | |
211 | |
212 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1) const) | |
213 F f_; | |
214 | |
215 template<class U, class B1> R call(U & u, T const *, B1 & b1) const | |
216 { | |
217 BOOST_MEM_FN_RETURN (u.*f_)(b1); | |
218 } | |
219 | |
220 template<class U, class B1> R call(U & u, void const *, B1 & b1) const | |
221 { | |
222 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1); | |
223 } | |
224 | |
225 public: | |
226 | |
227 explicit BOOST_MEM_FN_NAME(cmf1)(F f): f_(f) {} | |
228 | |
229 template<class U> R operator()(U const & u, A1 a1) const | |
230 { | |
231 U const * p = 0; | |
232 BOOST_MEM_FN_RETURN call(u, p, a1); | |
233 } | |
234 | |
235 R operator()(T const & t, A1 a1) const | |
236 { | |
237 BOOST_MEM_FN_RETURN (t.*f_)(a1); | |
238 } | |
239 | |
240 bool operator==(BOOST_MEM_FN_NAME(cmf1) const & rhs) const | |
241 { | |
242 return f_ == rhs.f_; | |
243 } | |
244 | |
245 bool operator!=(BOOST_MEM_FN_NAME(cmf1) const & rhs) const | |
246 { | |
247 return f_ != rhs.f_; | |
248 } | |
249 }; | |
250 | |
251 // mf2 | |
252 | |
253 template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf2) | |
254 { | |
255 public: | |
256 | |
257 typedef R result_type; | |
258 | |
259 private: | |
260 | |
261 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2)) | |
262 F f_; | |
263 | |
264 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const | |
265 { | |
266 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); | |
267 } | |
268 | |
269 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const | |
270 { | |
271 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); | |
272 } | |
273 | |
274 public: | |
275 | |
276 explicit BOOST_MEM_FN_NAME(mf2)(F f): f_(f) {} | |
277 | |
278 R operator()(T * p, A1 a1, A2 a2) const | |
279 { | |
280 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2); | |
281 } | |
282 | |
283 template<class U> R operator()(U & u, A1 a1, A2 a2) const | |
284 { | |
285 U const * p = 0; | |
286 BOOST_MEM_FN_RETURN call(u, p, a1, a2); | |
287 } | |
288 | |
289 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
290 | |
291 template<class U> R operator()(U const & u, A1 a1, A2 a2) const | |
292 { | |
293 U const * p = 0; | |
294 BOOST_MEM_FN_RETURN call(u, p, a1, a2); | |
295 } | |
296 | |
297 #endif | |
298 | |
299 R operator()(T & t, A1 a1, A2 a2) const | |
300 { | |
301 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); | |
302 } | |
303 | |
304 bool operator==(BOOST_MEM_FN_NAME(mf2) const & rhs) const | |
305 { | |
306 return f_ == rhs.f_; | |
307 } | |
308 | |
309 bool operator!=(BOOST_MEM_FN_NAME(mf2) const & rhs) const | |
310 { | |
311 return f_ != rhs.f_; | |
312 } | |
313 }; | |
314 | |
315 // cmf2 | |
316 | |
317 template<class R, class T, class A1, class A2 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf2) | |
318 { | |
319 public: | |
320 | |
321 typedef R result_type; | |
322 | |
323 private: | |
324 | |
325 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2) const) | |
326 F f_; | |
327 | |
328 template<class U, class B1, class B2> R call(U & u, T const *, B1 & b1, B2 & b2) const | |
329 { | |
330 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2); | |
331 } | |
332 | |
333 template<class U, class B1, class B2> R call(U & u, void const *, B1 & b1, B2 & b2) const | |
334 { | |
335 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2); | |
336 } | |
337 | |
338 public: | |
339 | |
340 explicit BOOST_MEM_FN_NAME(cmf2)(F f): f_(f) {} | |
341 | |
342 template<class U> R operator()(U const & u, A1 a1, A2 a2) const | |
343 { | |
344 U const * p = 0; | |
345 BOOST_MEM_FN_RETURN call(u, p, a1, a2); | |
346 } | |
347 | |
348 R operator()(T const & t, A1 a1, A2 a2) const | |
349 { | |
350 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2); | |
351 } | |
352 | |
353 bool operator==(BOOST_MEM_FN_NAME(cmf2) const & rhs) const | |
354 { | |
355 return f_ == rhs.f_; | |
356 } | |
357 | |
358 bool operator!=(BOOST_MEM_FN_NAME(cmf2) const & rhs) const | |
359 { | |
360 return f_ != rhs.f_; | |
361 } | |
362 }; | |
363 | |
364 // mf3 | |
365 | |
366 template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf3) | |
367 { | |
368 public: | |
369 | |
370 typedef R result_type; | |
371 | |
372 private: | |
373 | |
374 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3)) | |
375 F f_; | |
376 | |
377 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const | |
378 { | |
379 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); | |
380 } | |
381 | |
382 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const | |
383 { | |
384 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); | |
385 } | |
386 | |
387 public: | |
388 | |
389 explicit BOOST_MEM_FN_NAME(mf3)(F f): f_(f) {} | |
390 | |
391 R operator()(T * p, A1 a1, A2 a2, A3 a3) const | |
392 { | |
393 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3); | |
394 } | |
395 | |
396 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3) const | |
397 { | |
398 U const * p = 0; | |
399 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); | |
400 } | |
401 | |
402 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
403 | |
404 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const | |
405 { | |
406 U const * p = 0; | |
407 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); | |
408 } | |
409 | |
410 #endif | |
411 | |
412 R operator()(T & t, A1 a1, A2 a2, A3 a3) const | |
413 { | |
414 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); | |
415 } | |
416 | |
417 bool operator==(BOOST_MEM_FN_NAME(mf3) const & rhs) const | |
418 { | |
419 return f_ == rhs.f_; | |
420 } | |
421 | |
422 bool operator!=(BOOST_MEM_FN_NAME(mf3) const & rhs) const | |
423 { | |
424 return f_ != rhs.f_; | |
425 } | |
426 }; | |
427 | |
428 // cmf3 | |
429 | |
430 template<class R, class T, class A1, class A2, class A3 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf3) | |
431 { | |
432 public: | |
433 | |
434 typedef R result_type; | |
435 | |
436 private: | |
437 | |
438 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const) | |
439 F f_; | |
440 | |
441 template<class U, class B1, class B2, class B3> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3) const | |
442 { | |
443 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3); | |
444 } | |
445 | |
446 template<class U, class B1, class B2, class B3> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3) const | |
447 { | |
448 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3); | |
449 } | |
450 | |
451 public: | |
452 | |
453 explicit BOOST_MEM_FN_NAME(cmf3)(F f): f_(f) {} | |
454 | |
455 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3) const | |
456 { | |
457 U const * p = 0; | |
458 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3); | |
459 } | |
460 | |
461 R operator()(T const & t, A1 a1, A2 a2, A3 a3) const | |
462 { | |
463 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3); | |
464 } | |
465 | |
466 bool operator==(BOOST_MEM_FN_NAME(cmf3) const & rhs) const | |
467 { | |
468 return f_ == rhs.f_; | |
469 } | |
470 | |
471 bool operator!=(BOOST_MEM_FN_NAME(cmf3) const & rhs) const | |
472 { | |
473 return f_ != rhs.f_; | |
474 } | |
475 }; | |
476 | |
477 // mf4 | |
478 | |
479 template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf4) | |
480 { | |
481 public: | |
482 | |
483 typedef R result_type; | |
484 | |
485 private: | |
486 | |
487 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4)) | |
488 F f_; | |
489 | |
490 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const | |
491 { | |
492 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); | |
493 } | |
494 | |
495 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const | |
496 { | |
497 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); | |
498 } | |
499 | |
500 public: | |
501 | |
502 explicit BOOST_MEM_FN_NAME(mf4)(F f): f_(f) {} | |
503 | |
504 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4) const | |
505 { | |
506 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4); | |
507 } | |
508 | |
509 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4) const | |
510 { | |
511 U const * p = 0; | |
512 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); | |
513 } | |
514 | |
515 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
516 | |
517 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const | |
518 { | |
519 U const * p = 0; | |
520 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); | |
521 } | |
522 | |
523 #endif | |
524 | |
525 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4) const | |
526 { | |
527 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); | |
528 } | |
529 | |
530 bool operator==(BOOST_MEM_FN_NAME(mf4) const & rhs) const | |
531 { | |
532 return f_ == rhs.f_; | |
533 } | |
534 | |
535 bool operator!=(BOOST_MEM_FN_NAME(mf4) const & rhs) const | |
536 { | |
537 return f_ != rhs.f_; | |
538 } | |
539 }; | |
540 | |
541 // cmf4 | |
542 | |
543 template<class R, class T, class A1, class A2, class A3, class A4 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf4) | |
544 { | |
545 public: | |
546 | |
547 typedef R result_type; | |
548 | |
549 private: | |
550 | |
551 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const) | |
552 F f_; | |
553 | |
554 template<class U, class B1, class B2, class B3, class B4> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const | |
555 { | |
556 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4); | |
557 } | |
558 | |
559 template<class U, class B1, class B2, class B3, class B4> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4) const | |
560 { | |
561 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4); | |
562 } | |
563 | |
564 public: | |
565 | |
566 explicit BOOST_MEM_FN_NAME(cmf4)(F f): f_(f) {} | |
567 | |
568 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4) const | |
569 { | |
570 U const * p = 0; | |
571 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4); | |
572 } | |
573 | |
574 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4) const | |
575 { | |
576 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4); | |
577 } | |
578 | |
579 bool operator==(BOOST_MEM_FN_NAME(cmf4) const & rhs) const | |
580 { | |
581 return f_ == rhs.f_; | |
582 } | |
583 | |
584 bool operator!=(BOOST_MEM_FN_NAME(cmf4) const & rhs) const | |
585 { | |
586 return f_ != rhs.f_; | |
587 } | |
588 }; | |
589 | |
590 // mf5 | |
591 | |
592 template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf5) | |
593 { | |
594 public: | |
595 | |
596 typedef R result_type; | |
597 | |
598 private: | |
599 | |
600 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5)) | |
601 F f_; | |
602 | |
603 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const | |
604 { | |
605 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); | |
606 } | |
607 | |
608 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const | |
609 { | |
610 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); | |
611 } | |
612 | |
613 public: | |
614 | |
615 explicit BOOST_MEM_FN_NAME(mf5)(F f): f_(f) {} | |
616 | |
617 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
618 { | |
619 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5); | |
620 } | |
621 | |
622 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
623 { | |
624 U const * p = 0; | |
625 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); | |
626 } | |
627 | |
628 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
629 | |
630 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
631 { | |
632 U const * p = 0; | |
633 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); | |
634 } | |
635 | |
636 #endif | |
637 | |
638 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
639 { | |
640 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); | |
641 } | |
642 | |
643 bool operator==(BOOST_MEM_FN_NAME(mf5) const & rhs) const | |
644 { | |
645 return f_ == rhs.f_; | |
646 } | |
647 | |
648 bool operator!=(BOOST_MEM_FN_NAME(mf5) const & rhs) const | |
649 { | |
650 return f_ != rhs.f_; | |
651 } | |
652 }; | |
653 | |
654 // cmf5 | |
655 | |
656 template<class R, class T, class A1, class A2, class A3, class A4, class A5 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf5) | |
657 { | |
658 public: | |
659 | |
660 typedef R result_type; | |
661 | |
662 private: | |
663 | |
664 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const) | |
665 F f_; | |
666 | |
667 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const | |
668 { | |
669 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5); | |
670 } | |
671 | |
672 template<class U, class B1, class B2, class B3, class B4, class B5> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5) const | |
673 { | |
674 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5); | |
675 } | |
676 | |
677 public: | |
678 | |
679 explicit BOOST_MEM_FN_NAME(cmf5)(F f): f_(f) {} | |
680 | |
681 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
682 { | |
683 U const * p = 0; | |
684 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5); | |
685 } | |
686 | |
687 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) const | |
688 { | |
689 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5); | |
690 } | |
691 | |
692 bool operator==(BOOST_MEM_FN_NAME(cmf5) const & rhs) const | |
693 { | |
694 return f_ == rhs.f_; | |
695 } | |
696 | |
697 bool operator!=(BOOST_MEM_FN_NAME(cmf5) const & rhs) const | |
698 { | |
699 return f_ != rhs.f_; | |
700 } | |
701 }; | |
702 | |
703 // mf6 | |
704 | |
705 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf6) | |
706 { | |
707 public: | |
708 | |
709 typedef R result_type; | |
710 | |
711 private: | |
712 | |
713 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6)) | |
714 F f_; | |
715 | |
716 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const | |
717 { | |
718 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); | |
719 } | |
720 | |
721 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const | |
722 { | |
723 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); | |
724 } | |
725 | |
726 public: | |
727 | |
728 explicit BOOST_MEM_FN_NAME(mf6)(F f): f_(f) {} | |
729 | |
730 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
731 { | |
732 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6); | |
733 } | |
734 | |
735 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
736 { | |
737 U const * p = 0; | |
738 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); | |
739 } | |
740 | |
741 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
742 | |
743 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
744 { | |
745 U const * p = 0; | |
746 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); | |
747 } | |
748 | |
749 #endif | |
750 | |
751 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
752 { | |
753 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); | |
754 } | |
755 | |
756 bool operator==(BOOST_MEM_FN_NAME(mf6) const & rhs) const | |
757 { | |
758 return f_ == rhs.f_; | |
759 } | |
760 | |
761 bool operator!=(BOOST_MEM_FN_NAME(mf6) const & rhs) const | |
762 { | |
763 return f_ != rhs.f_; | |
764 } | |
765 }; | |
766 | |
767 // cmf6 | |
768 | |
769 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf6) | |
770 { | |
771 public: | |
772 | |
773 typedef R result_type; | |
774 | |
775 private: | |
776 | |
777 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const) | |
778 F f_; | |
779 | |
780 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const | |
781 { | |
782 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6); | |
783 } | |
784 | |
785 template<class U, class B1, class B2, class B3, class B4, class B5, class B6> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6) const | |
786 { | |
787 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6); | |
788 } | |
789 | |
790 public: | |
791 | |
792 explicit BOOST_MEM_FN_NAME(cmf6)(F f): f_(f) {} | |
793 | |
794 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
795 { | |
796 U const * p = 0; | |
797 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6); | |
798 } | |
799 | |
800 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) const | |
801 { | |
802 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6); | |
803 } | |
804 | |
805 bool operator==(BOOST_MEM_FN_NAME(cmf6) const & rhs) const | |
806 { | |
807 return f_ == rhs.f_; | |
808 } | |
809 | |
810 bool operator!=(BOOST_MEM_FN_NAME(cmf6) const & rhs) const | |
811 { | |
812 return f_ != rhs.f_; | |
813 } | |
814 }; | |
815 | |
816 // mf7 | |
817 | |
818 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf7) | |
819 { | |
820 public: | |
821 | |
822 typedef R result_type; | |
823 | |
824 private: | |
825 | |
826 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7)) | |
827 F f_; | |
828 | |
829 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const | |
830 { | |
831 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); | |
832 } | |
833 | |
834 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const | |
835 { | |
836 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); | |
837 } | |
838 | |
839 public: | |
840 | |
841 explicit BOOST_MEM_FN_NAME(mf7)(F f): f_(f) {} | |
842 | |
843 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
844 { | |
845 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7); | |
846 } | |
847 | |
848 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
849 { | |
850 U const * p = 0; | |
851 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); | |
852 } | |
853 | |
854 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
855 | |
856 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
857 { | |
858 U const * p = 0; | |
859 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); | |
860 } | |
861 | |
862 #endif | |
863 | |
864 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
865 { | |
866 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); | |
867 } | |
868 | |
869 bool operator==(BOOST_MEM_FN_NAME(mf7) const & rhs) const | |
870 { | |
871 return f_ == rhs.f_; | |
872 } | |
873 | |
874 bool operator!=(BOOST_MEM_FN_NAME(mf7) const & rhs) const | |
875 { | |
876 return f_ != rhs.f_; | |
877 } | |
878 }; | |
879 | |
880 // cmf7 | |
881 | |
882 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf7) | |
883 { | |
884 public: | |
885 | |
886 typedef R result_type; | |
887 | |
888 private: | |
889 | |
890 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const) | |
891 F f_; | |
892 | |
893 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const | |
894 { | |
895 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7); | |
896 } | |
897 | |
898 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7) const | |
899 { | |
900 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7); | |
901 } | |
902 | |
903 public: | |
904 | |
905 explicit BOOST_MEM_FN_NAME(cmf7)(F f): f_(f) {} | |
906 | |
907 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
908 { | |
909 U const * p = 0; | |
910 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7); | |
911 } | |
912 | |
913 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7) const | |
914 { | |
915 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7); | |
916 } | |
917 | |
918 bool operator==(BOOST_MEM_FN_NAME(cmf7) const & rhs) const | |
919 { | |
920 return f_ == rhs.f_; | |
921 } | |
922 | |
923 bool operator!=(BOOST_MEM_FN_NAME(cmf7) const & rhs) const | |
924 { | |
925 return f_ != rhs.f_; | |
926 } | |
927 }; | |
928 | |
929 // mf8 | |
930 | |
931 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(mf8) | |
932 { | |
933 public: | |
934 | |
935 typedef R result_type; | |
936 | |
937 private: | |
938 | |
939 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8)) | |
940 F f_; | |
941 | |
942 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const | |
943 { | |
944 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); | |
945 } | |
946 | |
947 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const | |
948 { | |
949 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); | |
950 } | |
951 | |
952 public: | |
953 | |
954 explicit BOOST_MEM_FN_NAME(mf8)(F f): f_(f) {} | |
955 | |
956 R operator()(T * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
957 { | |
958 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); | |
959 } | |
960 | |
961 template<class U> R operator()(U & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
962 { | |
963 U const * p = 0; | |
964 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); | |
965 } | |
966 | |
967 #ifdef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS | |
968 | |
969 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
970 { | |
971 U const * p = 0; | |
972 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); | |
973 } | |
974 | |
975 #endif | |
976 | |
977 R operator()(T & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
978 { | |
979 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); | |
980 } | |
981 | |
982 bool operator==(BOOST_MEM_FN_NAME(mf8) const & rhs) const | |
983 { | |
984 return f_ == rhs.f_; | |
985 } | |
986 | |
987 bool operator!=(BOOST_MEM_FN_NAME(mf8) const & rhs) const | |
988 { | |
989 return f_ != rhs.f_; | |
990 } | |
991 }; | |
992 | |
993 // cmf8 | |
994 | |
995 template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8 BOOST_MEM_FN_CLASS_F> class BOOST_MEM_FN_NAME(cmf8) | |
996 { | |
997 public: | |
998 | |
999 typedef R result_type; | |
1000 | |
1001 private: | |
1002 | |
1003 BOOST_MEM_FN_TYPEDEF(R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const) | |
1004 F f_; | |
1005 | |
1006 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, T const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const | |
1007 { | |
1008 BOOST_MEM_FN_RETURN (u.*f_)(b1, b2, b3, b4, b5, b6, b7, b8); | |
1009 } | |
1010 | |
1011 template<class U, class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8> R call(U & u, void const *, B1 & b1, B2 & b2, B3 & b3, B4 & b4, B5 & b5, B6 & b6, B7 & b7, B8 & b8) const | |
1012 { | |
1013 BOOST_MEM_FN_RETURN (get_pointer(u)->*f_)(b1, b2, b3, b4, b5, b6, b7, b8); | |
1014 } | |
1015 | |
1016 public: | |
1017 | |
1018 explicit BOOST_MEM_FN_NAME(cmf8)(F f): f_(f) {} | |
1019 | |
1020 R operator()(T const * p, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
1021 { | |
1022 BOOST_MEM_FN_RETURN (p->*f_)(a1, a2, a3, a4, a5, a6, a7, a8); | |
1023 } | |
1024 | |
1025 template<class U> R operator()(U const & u, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
1026 { | |
1027 U const * p = 0; | |
1028 BOOST_MEM_FN_RETURN call(u, p, a1, a2, a3, a4, a5, a6, a7, a8); | |
1029 } | |
1030 | |
1031 R operator()(T const & t, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8) const | |
1032 { | |
1033 BOOST_MEM_FN_RETURN (t.*f_)(a1, a2, a3, a4, a5, a6, a7, a8); | |
1034 } | |
1035 | |
1036 bool operator==(BOOST_MEM_FN_NAME(cmf8) const & rhs) const | |
1037 { | |
1038 return f_ == rhs.f_; | |
1039 } | |
1040 | |
1041 bool operator!=(BOOST_MEM_FN_NAME(cmf8) const & rhs) const | |
1042 { | |
1043 return f_ != rhs.f_; | |
1044 } | |
1045 }; | |
1046 | |
1047 #undef BOOST_MEM_FN_ENABLE_CONST_OVERLOADS |