Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: testing/gmock_mutant.h

Issue 604014: First batch of context menu tests... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // This file automatically generated by testing/generate_gmock_mutant.py. 5 // This file automatically generated by testing/generate_gmock_mutant.py.
6 // DO NOT EDIT. 6 // DO NOT EDIT.
7 7
8 #ifndef TESTING_GMOCK_MUTANT_H_ 8 #ifndef TESTING_GMOCK_MUTANT_H_
9 #define TESTING_GMOCK_MUTANT_H_ 9 #define TESTING_GMOCK_MUTANT_H_
10 10
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
174 return (obj->*method)(c.a, c.b, c.c, c.d); 174 return (obj->*method)(c.a, c.b, c.c, c.d);
175 } 175 }
176 template <typename R, typename Function, typename C1, typename C2, typename C3, 176 template <typename R, typename Function, typename C1, typename C2, typename C3,
177 typename C4> 177 typename C4>
178 inline R DispatchToFunction(Function function, 178 inline R DispatchToFunction(Function function,
179 const Tuple0& p, 179 const Tuple0& p,
180 const Tuple4<C1, C2, C3, C4>& c) { 180 const Tuple4<C1, C2, C3, C4>& c) {
181 return (*function)(c.a, c.b, c.c, c.d); 181 return (*function)(c.a, c.b, c.c, c.d);
182 } 182 }
183 183
184 // 0 - 5
185 template <typename R, typename T, typename Method, typename C1, typename C2,
186 typename C3, typename C4, typename C5>
187 inline R DispatchToMethod(T* obj, Method method,
188 const Tuple0& p,
189 const Tuple5<C1, C2, C3, C4, C5>& c) {
190 return (obj->*method)(c.a, c.b, c.c, c.d, c.e);
191 }
192 template <typename R, typename Function, typename C1, typename C2, typename C3,
193 typename C4, typename C5>
194 inline R DispatchToFunction(Function function,
195 const Tuple0& p,
196 const Tuple5<C1, C2, C3, C4, C5>& c) {
197 return (*function)(c.a, c.b, c.c, c.d, c.e);
198 }
199
200 // 0 - 6
201 template <typename R, typename T, typename Method, typename C1, typename C2,
202 typename C3, typename C4, typename C5, typename C6>
203 inline R DispatchToMethod(T* obj, Method method,
204 const Tuple0& p,
205 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
206 return (obj->*method)(c.a, c.b, c.c, c.d, c.e, c.f);
207 }
208 template <typename R, typename Function, typename C1, typename C2, typename C3,
209 typename C4, typename C5, typename C6>
210 inline R DispatchToFunction(Function function,
211 const Tuple0& p,
212 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
213 return (*function)(c.a, c.b, c.c, c.d, c.e, c.f);
214 }
215
184 // 1 - 0 216 // 1 - 0
185 template <typename R, typename T, typename Method, typename P1> 217 template <typename R, typename T, typename Method, typename P1>
186 inline R DispatchToMethod(T* obj, Method method, 218 inline R DispatchToMethod(T* obj, Method method,
187 const Tuple1<P1>& p, 219 const Tuple1<P1>& p,
188 const Tuple0& c) { 220 const Tuple0& c) {
189 return (obj->*method)(p.a); 221 return (obj->*method)(p.a);
190 } 222 }
191 template <typename R, typename Function, typename P1> 223 template <typename R, typename Function, typename P1>
192 inline R DispatchToFunction(Function function, 224 inline R DispatchToFunction(Function function,
193 const Tuple1<P1>& p, 225 const Tuple1<P1>& p,
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 return (obj->*method)(p.a, c.a, c.b, c.c, c.d); 281 return (obj->*method)(p.a, c.a, c.b, c.c, c.d);
250 } 282 }
251 template <typename R, typename Function, typename P1, typename C1, typename C2, 283 template <typename R, typename Function, typename P1, typename C1, typename C2,
252 typename C3, typename C4> 284 typename C3, typename C4>
253 inline R DispatchToFunction(Function function, 285 inline R DispatchToFunction(Function function,
254 const Tuple1<P1>& p, 286 const Tuple1<P1>& p,
255 const Tuple4<C1, C2, C3, C4>& c) { 287 const Tuple4<C1, C2, C3, C4>& c) {
256 return (*function)(p.a, c.a, c.b, c.c, c.d); 288 return (*function)(p.a, c.a, c.b, c.c, c.d);
257 } 289 }
258 290
291 // 1 - 5
292 template <typename R, typename T, typename Method, typename P1, typename C1,
293 typename C2, typename C3, typename C4, typename C5>
294 inline R DispatchToMethod(T* obj, Method method,
295 const Tuple1<P1>& p,
296 const Tuple5<C1, C2, C3, C4, C5>& c) {
297 return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e);
298 }
299 template <typename R, typename Function, typename P1, typename C1, typename C2,
300 typename C3, typename C4, typename C5>
301 inline R DispatchToFunction(Function function,
302 const Tuple1<P1>& p,
303 const Tuple5<C1, C2, C3, C4, C5>& c) {
304 return (*function)(p.a, c.a, c.b, c.c, c.d, c.e);
305 }
306
307 // 1 - 6
308 template <typename R, typename T, typename Method, typename P1, typename C1,
309 typename C2, typename C3, typename C4, typename C5, typename C6>
310 inline R DispatchToMethod(T* obj, Method method,
311 const Tuple1<P1>& p,
312 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
313 return (obj->*method)(p.a, c.a, c.b, c.c, c.d, c.e, c.f);
314 }
315 template <typename R, typename Function, typename P1, typename C1, typename C2,
316 typename C3, typename C4, typename C5, typename C6>
317 inline R DispatchToFunction(Function function,
318 const Tuple1<P1>& p,
319 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
320 return (*function)(p.a, c.a, c.b, c.c, c.d, c.e, c.f);
321 }
322
259 // 2 - 0 323 // 2 - 0
260 template <typename R, typename T, typename Method, typename P1, typename P2> 324 template <typename R, typename T, typename Method, typename P1, typename P2>
261 inline R DispatchToMethod(T* obj, Method method, 325 inline R DispatchToMethod(T* obj, Method method,
262 const Tuple2<P1, P2>& p, 326 const Tuple2<P1, P2>& p,
263 const Tuple0& c) { 327 const Tuple0& c) {
264 return (obj->*method)(p.a, p.b); 328 return (obj->*method)(p.a, p.b);
265 } 329 }
266 template <typename R, typename Function, typename P1, typename P2> 330 template <typename R, typename Function, typename P1, typename P2>
267 inline R DispatchToFunction(Function function, 331 inline R DispatchToFunction(Function function,
268 const Tuple2<P1, P2>& p, 332 const Tuple2<P1, P2>& p,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d); 390 return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d);
327 } 391 }
328 template <typename R, typename Function, typename P1, typename P2, typename C1, 392 template <typename R, typename Function, typename P1, typename P2, typename C1,
329 typename C2, typename C3, typename C4> 393 typename C2, typename C3, typename C4>
330 inline R DispatchToFunction(Function function, 394 inline R DispatchToFunction(Function function,
331 const Tuple2<P1, P2>& p, 395 const Tuple2<P1, P2>& p,
332 const Tuple4<C1, C2, C3, C4>& c) { 396 const Tuple4<C1, C2, C3, C4>& c) {
333 return (*function)(p.a, p.b, c.a, c.b, c.c, c.d); 397 return (*function)(p.a, p.b, c.a, c.b, c.c, c.d);
334 } 398 }
335 399
400 // 2 - 5
401 template <typename R, typename T, typename Method, typename P1, typename P2,
402 typename C1, typename C2, typename C3, typename C4, typename C5>
403 inline R DispatchToMethod(T* obj, Method method,
404 const Tuple2<P1, P2>& p,
405 const Tuple5<C1, C2, C3, C4, C5>& c) {
406 return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e);
407 }
408 template <typename R, typename Function, typename P1, typename P2, typename C1,
409 typename C2, typename C3, typename C4, typename C5>
410 inline R DispatchToFunction(Function function,
411 const Tuple2<P1, P2>& p,
412 const Tuple5<C1, C2, C3, C4, C5>& c) {
413 return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e);
414 }
415
416 // 2 - 6
417 template <typename R, typename T, typename Method, typename P1, typename P2,
418 typename C1, typename C2, typename C3, typename C4, typename C5,
419 typename C6>
420 inline R DispatchToMethod(T* obj, Method method,
421 const Tuple2<P1, P2>& p,
422 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
423 return (obj->*method)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f);
424 }
425 template <typename R, typename Function, typename P1, typename P2, typename C1,
426 typename C2, typename C3, typename C4, typename C5, typename C6>
427 inline R DispatchToFunction(Function function,
428 const Tuple2<P1, P2>& p,
429 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
430 return (*function)(p.a, p.b, c.a, c.b, c.c, c.d, c.e, c.f);
431 }
432
336 // 3 - 0 433 // 3 - 0
337 template <typename R, typename T, typename Method, typename P1, typename P2, 434 template <typename R, typename T, typename Method, typename P1, typename P2,
338 typename P3> 435 typename P3>
339 inline R DispatchToMethod(T* obj, Method method, 436 inline R DispatchToMethod(T* obj, Method method,
340 const Tuple3<P1, P2, P3>& p, 437 const Tuple3<P1, P2, P3>& p,
341 const Tuple0& c) { 438 const Tuple0& c) {
342 return (obj->*method)(p.a, p.b, p.c); 439 return (obj->*method)(p.a, p.b, p.c);
343 } 440 }
344 template <typename R, typename Function, typename P1, typename P2, typename P3> 441 template <typename R, typename Function, typename P1, typename P2, typename P3>
345 inline R DispatchToFunction(Function function, 442 inline R DispatchToFunction(Function function,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d); 502 return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d);
406 } 503 }
407 template <typename R, typename Function, typename P1, typename P2, typename P3, 504 template <typename R, typename Function, typename P1, typename P2, typename P3,
408 typename C1, typename C2, typename C3, typename C4> 505 typename C1, typename C2, typename C3, typename C4>
409 inline R DispatchToFunction(Function function, 506 inline R DispatchToFunction(Function function,
410 const Tuple3<P1, P2, P3>& p, 507 const Tuple3<P1, P2, P3>& p,
411 const Tuple4<C1, C2, C3, C4>& c) { 508 const Tuple4<C1, C2, C3, C4>& c) {
412 return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d); 509 return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d);
413 } 510 }
414 511
512 // 3 - 5
513 template <typename R, typename T, typename Method, typename P1, typename P2,
514 typename P3, typename C1, typename C2, typename C3, typename C4,
515 typename C5>
516 inline R DispatchToMethod(T* obj, Method method,
517 const Tuple3<P1, P2, P3>& p,
518 const Tuple5<C1, C2, C3, C4, C5>& c) {
519 return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e);
520 }
521 template <typename R, typename Function, typename P1, typename P2, typename P3,
522 typename C1, typename C2, typename C3, typename C4, typename C5>
523 inline R DispatchToFunction(Function function,
524 const Tuple3<P1, P2, P3>& p,
525 const Tuple5<C1, C2, C3, C4, C5>& c) {
526 return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e);
527 }
528
529 // 3 - 6
530 template <typename R, typename T, typename Method, typename P1, typename P2,
531 typename P3, typename C1, typename C2, typename C3, typename C4,
532 typename C5, typename C6>
533 inline R DispatchToMethod(T* obj, Method method,
534 const Tuple3<P1, P2, P3>& p,
535 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
536 return (obj->*method)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f);
537 }
538 template <typename R, typename Function, typename P1, typename P2, typename P3,
539 typename C1, typename C2, typename C3, typename C4, typename C5,
540 typename C6>
541 inline R DispatchToFunction(Function function,
542 const Tuple3<P1, P2, P3>& p,
543 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
544 return (*function)(p.a, p.b, p.c, c.a, c.b, c.c, c.d, c.e, c.f);
545 }
546
415 // 4 - 0 547 // 4 - 0
416 template <typename R, typename T, typename Method, typename P1, typename P2, 548 template <typename R, typename T, typename Method, typename P1, typename P2,
417 typename P3, typename P4> 549 typename P3, typename P4>
418 inline R DispatchToMethod(T* obj, Method method, 550 inline R DispatchToMethod(T* obj, Method method,
419 const Tuple4<P1, P2, P3, P4>& p, 551 const Tuple4<P1, P2, P3, P4>& p,
420 const Tuple0& c) { 552 const Tuple0& c) {
421 return (obj->*method)(p.a, p.b, p.c, p.d); 553 return (obj->*method)(p.a, p.b, p.c, p.d);
422 } 554 }
423 template <typename R, typename Function, typename P1, typename P2, typename P3, 555 template <typename R, typename Function, typename P1, typename P2, typename P3,
424 typename P4> 556 typename P4>
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d); 618 return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d);
487 } 619 }
488 template <typename R, typename Function, typename P1, typename P2, typename P3, 620 template <typename R, typename Function, typename P1, typename P2, typename P3,
489 typename P4, typename C1, typename C2, typename C3, typename C4> 621 typename P4, typename C1, typename C2, typename C3, typename C4>
490 inline R DispatchToFunction(Function function, 622 inline R DispatchToFunction(Function function,
491 const Tuple4<P1, P2, P3, P4>& p, 623 const Tuple4<P1, P2, P3, P4>& p,
492 const Tuple4<C1, C2, C3, C4>& c) { 624 const Tuple4<C1, C2, C3, C4>& c) {
493 return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d); 625 return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d);
494 } 626 }
495 627
628 // 4 - 5
629 template <typename R, typename T, typename Method, typename P1, typename P2,
630 typename P3, typename P4, typename C1, typename C2, typename C3,
631 typename C4, typename C5>
632 inline R DispatchToMethod(T* obj, Method method,
633 const Tuple4<P1, P2, P3, P4>& p,
634 const Tuple5<C1, C2, C3, C4, C5>& c) {
635 return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e);
636 }
637 template <typename R, typename Function, typename P1, typename P2, typename P3,
638 typename P4, typename C1, typename C2, typename C3, typename C4,
639 typename C5>
640 inline R DispatchToFunction(Function function,
641 const Tuple4<P1, P2, P3, P4>& p,
642 const Tuple5<C1, C2, C3, C4, C5>& c) {
643 return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e);
644 }
645
646 // 4 - 6
647 template <typename R, typename T, typename Method, typename P1, typename P2,
648 typename P3, typename P4, typename C1, typename C2, typename C3,
649 typename C4, typename C5, typename C6>
650 inline R DispatchToMethod(T* obj, Method method,
651 const Tuple4<P1, P2, P3, P4>& p,
652 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
653 return (obj->*method)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f);
654 }
655 template <typename R, typename Function, typename P1, typename P2, typename P3,
656 typename P4, typename C1, typename C2, typename C3, typename C4,
657 typename C5, typename C6>
658 inline R DispatchToFunction(Function function,
659 const Tuple4<P1, P2, P3, P4>& p,
660 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
661 return (*function)(p.a, p.b, p.c, p.d, c.a, c.b, c.c, c.d, c.e, c.f);
662 }
663
664 // 5 - 0
665 template <typename R, typename T, typename Method, typename P1, typename P2,
666 typename P3, typename P4, typename P5>
667 inline R DispatchToMethod(T* obj, Method method,
668 const Tuple5<P1, P2, P3, P4, P5>& p,
669 const Tuple0& c) {
670 return (obj->*method)(p.a, p.b, p.c, p.d, p.e);
671 }
672 template <typename R, typename Function, typename P1, typename P2, typename P3,
673 typename P4, typename P5>
674 inline R DispatchToFunction(Function function,
675 const Tuple5<P1, P2, P3, P4, P5>& p,
676 const Tuple0& c) {
677 return (*function)(p.a, p.b, p.c, p.d, p.e);
678 }
679
680 // 5 - 1
681 template <typename R, typename T, typename Method, typename P1, typename P2,
682 typename P3, typename P4, typename P5, typename C1>
683 inline R DispatchToMethod(T* obj, Method method,
684 const Tuple5<P1, P2, P3, P4, P5>& p,
685 const Tuple1<C1>& c) {
686 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a);
687 }
688 template <typename R, typename Function, typename P1, typename P2, typename P3,
689 typename P4, typename P5, typename C1>
690 inline R DispatchToFunction(Function function,
691 const Tuple5<P1, P2, P3, P4, P5>& p,
692 const Tuple1<C1>& c) {
693 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a);
694 }
695
696 // 5 - 2
697 template <typename R, typename T, typename Method, typename P1, typename P2,
698 typename P3, typename P4, typename P5, typename C1, typename C2>
699 inline R DispatchToMethod(T* obj, Method method,
700 const Tuple5<P1, P2, P3, P4, P5>& p,
701 const Tuple2<C1, C2>& c) {
702 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b);
703 }
704 template <typename R, typename Function, typename P1, typename P2, typename P3,
705 typename P4, typename P5, typename C1, typename C2>
706 inline R DispatchToFunction(Function function,
707 const Tuple5<P1, P2, P3, P4, P5>& p,
708 const Tuple2<C1, C2>& c) {
709 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b);
710 }
711
712 // 5 - 3
713 template <typename R, typename T, typename Method, typename P1, typename P2,
714 typename P3, typename P4, typename P5, typename C1, typename C2,
715 typename C3>
716 inline R DispatchToMethod(T* obj, Method method,
717 const Tuple5<P1, P2, P3, P4, P5>& p,
718 const Tuple3<C1, C2, C3>& c) {
719 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c);
720 }
721 template <typename R, typename Function, typename P1, typename P2, typename P3,
722 typename P4, typename P5, typename C1, typename C2, typename C3>
723 inline R DispatchToFunction(Function function,
724 const Tuple5<P1, P2, P3, P4, P5>& p,
725 const Tuple3<C1, C2, C3>& c) {
726 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c);
727 }
728
729 // 5 - 4
730 template <typename R, typename T, typename Method, typename P1, typename P2,
731 typename P3, typename P4, typename P5, typename C1, typename C2,
732 typename C3, typename C4>
733 inline R DispatchToMethod(T* obj, Method method,
734 const Tuple5<P1, P2, P3, P4, P5>& p,
735 const Tuple4<C1, C2, C3, C4>& c) {
736 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d);
737 }
738 template <typename R, typename Function, typename P1, typename P2, typename P3,
739 typename P4, typename P5, typename C1, typename C2, typename C3,
740 typename C4>
741 inline R DispatchToFunction(Function function,
742 const Tuple5<P1, P2, P3, P4, P5>& p,
743 const Tuple4<C1, C2, C3, C4>& c) {
744 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d);
745 }
746
747 // 5 - 5
748 template <typename R, typename T, typename Method, typename P1, typename P2,
749 typename P3, typename P4, typename P5, typename C1, typename C2,
750 typename C3, typename C4, typename C5>
751 inline R DispatchToMethod(T* obj, Method method,
752 const Tuple5<P1, P2, P3, P4, P5>& p,
753 const Tuple5<C1, C2, C3, C4, C5>& c) {
754 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e);
755 }
756 template <typename R, typename Function, typename P1, typename P2, typename P3,
757 typename P4, typename P5, typename C1, typename C2, typename C3,
758 typename C4, typename C5>
759 inline R DispatchToFunction(Function function,
760 const Tuple5<P1, P2, P3, P4, P5>& p,
761 const Tuple5<C1, C2, C3, C4, C5>& c) {
762 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e);
763 }
764
765 // 5 - 6
766 template <typename R, typename T, typename Method, typename P1, typename P2,
767 typename P3, typename P4, typename P5, typename C1, typename C2,
768 typename C3, typename C4, typename C5, typename C6>
769 inline R DispatchToMethod(T* obj, Method method,
770 const Tuple5<P1, P2, P3, P4, P5>& p,
771 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
772 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e, c.f);
773 }
774 template <typename R, typename Function, typename P1, typename P2, typename P3,
775 typename P4, typename P5, typename C1, typename C2, typename C3,
776 typename C4, typename C5, typename C6>
777 inline R DispatchToFunction(Function function,
778 const Tuple5<P1, P2, P3, P4, P5>& p,
779 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
780 return (*function)(p.a, p.b, p.c, p.d, p.e, c.a, c.b, c.c, c.d, c.e, c.f);
781 }
782
783 // 6 - 0
784 template <typename R, typename T, typename Method, typename P1, typename P2,
785 typename P3, typename P4, typename P5, typename P6>
786 inline R DispatchToMethod(T* obj, Method method,
787 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
788 const Tuple0& c) {
789 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f);
790 }
791 template <typename R, typename Function, typename P1, typename P2, typename P3,
792 typename P4, typename P5, typename P6>
793 inline R DispatchToFunction(Function function,
794 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
795 const Tuple0& c) {
796 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f);
797 }
798
799 // 6 - 1
800 template <typename R, typename T, typename Method, typename P1, typename P2,
801 typename P3, typename P4, typename P5, typename P6, typename C1>
802 inline R DispatchToMethod(T* obj, Method method,
803 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
804 const Tuple1<C1>& c) {
805 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a);
806 }
807 template <typename R, typename Function, typename P1, typename P2, typename P3,
808 typename P4, typename P5, typename P6, typename C1>
809 inline R DispatchToFunction(Function function,
810 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
811 const Tuple1<C1>& c) {
812 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a);
813 }
814
815 // 6 - 2
816 template <typename R, typename T, typename Method, typename P1, typename P2,
817 typename P3, typename P4, typename P5, typename P6, typename C1,
818 typename C2>
819 inline R DispatchToMethod(T* obj, Method method,
820 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
821 const Tuple2<C1, C2>& c) {
822 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b);
823 }
824 template <typename R, typename Function, typename P1, typename P2, typename P3,
825 typename P4, typename P5, typename P6, typename C1, typename C2>
826 inline R DispatchToFunction(Function function,
827 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
828 const Tuple2<C1, C2>& c) {
829 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b);
830 }
831
832 // 6 - 3
833 template <typename R, typename T, typename Method, typename P1, typename P2,
834 typename P3, typename P4, typename P5, typename P6, typename C1,
835 typename C2, typename C3>
836 inline R DispatchToMethod(T* obj, Method method,
837 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
838 const Tuple3<C1, C2, C3>& c) {
839 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c);
840 }
841 template <typename R, typename Function, typename P1, typename P2, typename P3,
842 typename P4, typename P5, typename P6, typename C1, typename C2,
843 typename C3>
844 inline R DispatchToFunction(Function function,
845 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
846 const Tuple3<C1, C2, C3>& c) {
847 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c);
848 }
849
850 // 6 - 4
851 template <typename R, typename T, typename Method, typename P1, typename P2,
852 typename P3, typename P4, typename P5, typename P6, typename C1,
853 typename C2, typename C3, typename C4>
854 inline R DispatchToMethod(T* obj, Method method,
855 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
856 const Tuple4<C1, C2, C3, C4>& c) {
857 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d);
858 }
859 template <typename R, typename Function, typename P1, typename P2, typename P3,
860 typename P4, typename P5, typename P6, typename C1, typename C2,
861 typename C3, typename C4>
862 inline R DispatchToFunction(Function function,
863 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
864 const Tuple4<C1, C2, C3, C4>& c) {
865 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d);
866 }
867
868 // 6 - 5
869 template <typename R, typename T, typename Method, typename P1, typename P2,
870 typename P3, typename P4, typename P5, typename P6, typename C1,
871 typename C2, typename C3, typename C4, typename C5>
872 inline R DispatchToMethod(T* obj, Method method,
873 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
874 const Tuple5<C1, C2, C3, C4, C5>& c) {
875 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e);
876 }
877 template <typename R, typename Function, typename P1, typename P2, typename P3,
878 typename P4, typename P5, typename P6, typename C1, typename C2,
879 typename C3, typename C4, typename C5>
880 inline R DispatchToFunction(Function function,
881 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
882 const Tuple5<C1, C2, C3, C4, C5>& c) {
883 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e);
884 }
885
886 // 6 - 6
887 template <typename R, typename T, typename Method, typename P1, typename P2,
888 typename P3, typename P4, typename P5, typename P6, typename C1,
889 typename C2, typename C3, typename C4, typename C5, typename C6>
890 inline R DispatchToMethod(T* obj, Method method,
891 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
892 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
893 return (obj->*method)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e, c .f);
894 }
895 template <typename R, typename Function, typename P1, typename P2, typename P3,
896 typename P4, typename P5, typename P6, typename C1, typename C2,
897 typename C3, typename C4, typename C5, typename C6>
898 inline R DispatchToFunction(Function function,
899 const Tuple6<P1, P2, P3, P4, P5, P6>& p,
900 const Tuple6<C1, C2, C3, C4, C5, C6>& c) {
901 return (*function)(p.a, p.b, p.c, p.d, p.e, p.f, c.a, c.b, c.c, c.d, c.e, c.f) ;
902 }
903
496 // Interface that is exposed to the consumer, that does the actual calling 904 // Interface that is exposed to the consumer, that does the actual calling
497 // of the method. 905 // of the method.
498 template <typename R, typename Params> 906 template <typename R, typename Params>
499 class MutantRunner { 907 class MutantRunner {
500 public: 908 public:
501 virtual R RunWithParams(const Params& params) = 0; 909 virtual R RunWithParams(const Params& params) = 0;
502 virtual ~MutantRunner() {} 910 virtual ~MutantRunner() {}
503 }; 911 };
504 912
505 // Mutant holds pre-bound arguments (like Task). Like Callback 913 // Mutant holds pre-bound arguments (like Task). Like Callback
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
938 CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4)) { 1346 CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4)) {
939 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1347 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
940 new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4), 1348 new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4),
941 Tuple0, Tuple4<A1, A2, A3, A4> > 1349 Tuple0, Tuple4<A1, A2, A3, A4> >
942 (obj, method, MakeTuple()); 1350 (obj, method, MakeTuple());
943 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1351 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
944 } 1352 }
945 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1353 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
946 #endif // OS_WIN 1354 #endif // OS_WIN
947 1355
1356 // 0 - 5
1357 template <typename R, typename T, typename U, typename A1, typename A2,
1358 typename A3, typename A4, typename A5>
1359 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1360 CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5)) {
1361 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1362 new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5),
1363 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1364 (obj, method, MakeTuple());
1365 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1366 }
1367
1368 template <typename R, typename A1, typename A2, typename A3, typename A4,
1369 typename A5>
1370 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1371 CreateFunctor(R (*function)(A1, A2, A3, A4, A5)) {
1372 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1373 new MutantFunction<R, R (*)(A1, A2, A3, A4, A5),
1374 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1375 (function, MakeTuple());
1376 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1377 }
1378
1379 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1380 template <typename R, typename T, typename U, typename A1, typename A2,
1381 typename A3, typename A4, typename A5>
1382 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1383 CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5)) {
1384 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1385 new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5),
1386 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1387 (obj, method, MakeTuple());
1388 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1389 }
1390 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1391
1392 #if defined (OS_WIN)
1393 template <typename R, typename T, typename U, typename A1, typename A2,
1394 typename A3, typename A4, typename A5>
1395 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1396 CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) {
1397 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1398 new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5),
1399 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1400 (obj, method, MakeTuple());
1401 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1402 }
1403
1404 template <typename R, typename A1, typename A2, typename A3, typename A4,
1405 typename A5>
1406 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1407 CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5)) {
1408 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1409 new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5),
1410 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1411 (function, MakeTuple());
1412 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1413 }
1414 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1415 template <typename R, typename T, typename U, typename A1, typename A2,
1416 typename A3, typename A4, typename A5>
1417 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1418 CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5)) {
1419 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1420 new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5),
1421 Tuple0, Tuple5<A1, A2, A3, A4, A5> >
1422 (obj, method, MakeTuple());
1423 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1424 }
1425 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1426 #endif // OS_WIN
1427
1428 // 0 - 6
1429 template <typename R, typename T, typename U, typename A1, typename A2,
1430 typename A3, typename A4, typename A5, typename A6>
1431 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1432 CreateFunctor(T* obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) {
1433 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1434 new Mutant<R, T, R (U::*)(A1, A2, A3, A4, A5, A6),
1435 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1436 (obj, method, MakeTuple());
1437 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1438 }
1439
1440 template <typename R, typename A1, typename A2, typename A3, typename A4,
1441 typename A5, typename A6>
1442 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1443 CreateFunctor(R (*function)(A1, A2, A3, A4, A5, A6)) {
1444 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1445 new MutantFunction<R, R (*)(A1, A2, A3, A4, A5, A6),
1446 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1447 (function, MakeTuple());
1448 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1449 }
1450
1451 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1452 template <typename R, typename T, typename U, typename A1, typename A2,
1453 typename A3, typename A4, typename A5, typename A6>
1454 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1455 CreateFunctor(T** obj, R (U::*method)(A1, A2, A3, A4, A5, A6)) {
1456 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1457 new MutantLateObjectBind<R, T, R (U::*)(A1, A2, A3, A4, A5, A6),
1458 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1459 (obj, method, MakeTuple());
1460 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1461 }
1462 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1463
1464 #if defined (OS_WIN)
1465 template <typename R, typename T, typename U, typename A1, typename A2,
1466 typename A3, typename A4, typename A5, typename A6>
1467 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1468 CreateFunctor(T* obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) {
1469 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1470 new Mutant<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6),
1471 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1472 (obj, method, MakeTuple());
1473 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1474 }
1475
1476 template <typename R, typename A1, typename A2, typename A3, typename A4,
1477 typename A5, typename A6>
1478 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1479 CreateFunctor(R (__stdcall *function)(A1, A2, A3, A4, A5, A6)) {
1480 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1481 new MutantFunction<R, R (__stdcall *)(A1, A2, A3, A4, A5, A6),
1482 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1483 (function, MakeTuple());
1484 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1485 }
1486 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1487 template <typename R, typename T, typename U, typename A1, typename A2,
1488 typename A3, typename A4, typename A5, typename A6>
1489 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1490 CreateFunctor(T** obj, R (__stdcall U::*method)(A1, A2, A3, A4, A5, A6)) {
1491 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1492 new MutantLateObjectBind<R, T, R (__stdcall U::*)(A1, A2, A3, A4, A5, A6),
1493 Tuple0, Tuple6<A1, A2, A3, A4, A5, A6> >
1494 (obj, method, MakeTuple());
1495 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1496 }
1497 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1498 #endif // OS_WIN
1499
948 // 1 - 0 1500 // 1 - 0
949 template <typename R, typename T, typename U, typename P1, typename X1> 1501 template <typename R, typename T, typename U, typename P1, typename X1>
950 inline MutantFunctor<R, Tuple0> 1502 inline MutantFunctor<R, Tuple0>
951 CreateFunctor(T* obj, R (U::*method)(X1), const P1& p1) { 1503 CreateFunctor(T* obj, R (U::*method)(X1), const P1& p1) {
952 MutantRunner<R, Tuple0>* t = 1504 MutantRunner<R, Tuple0>* t =
953 new Mutant<R, T, R (U::*)(X1), 1505 new Mutant<R, T, R (U::*)(X1),
954 Tuple1<P1>, Tuple0> 1506 Tuple1<P1>, Tuple0>
955 (obj, method, MakeTuple(p1)); 1507 (obj, method, MakeTuple(p1));
956 return MutantFunctor<R, Tuple0>(t); 1508 return MutantFunctor<R, Tuple0>(t);
957 } 1509 }
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 const P1& p1) { 1842 const P1& p1) {
1291 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 1843 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
1292 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4), 1844 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4),
1293 Tuple1<P1>, Tuple4<A1, A2, A3, A4> > 1845 Tuple1<P1>, Tuple4<A1, A2, A3, A4> >
1294 (obj, method, MakeTuple(p1)); 1846 (obj, method, MakeTuple(p1));
1295 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 1847 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
1296 } 1848 }
1297 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 1849 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1298 #endif // OS_WIN 1850 #endif // OS_WIN
1299 1851
1852 // 1 - 5
1853 template <typename R, typename T, typename U, typename P1, typename A1,
1854 typename A2, typename A3, typename A4, typename A5, typename X1>
1855 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1856 CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) {
1857 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1858 new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5),
1859 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1860 (obj, method, MakeTuple(p1));
1861 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1862 }
1863
1864 template <typename R, typename P1, typename A1, typename A2, typename A3,
1865 typename A4, typename A5, typename X1>
1866 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1867 CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5), const P1& p1) {
1868 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1869 new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5),
1870 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1871 (function, MakeTuple(p1));
1872 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1873 }
1874
1875 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1876 template <typename R, typename T, typename U, typename P1, typename A1,
1877 typename A2, typename A3, typename A4, typename A5, typename X1>
1878 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1879 CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5), const P1& p1) {
1880 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1881 new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5),
1882 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1883 (obj, method, MakeTuple(p1));
1884 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1885 }
1886 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1887
1888 #if defined (OS_WIN)
1889 template <typename R, typename T, typename U, typename P1, typename A1,
1890 typename A2, typename A3, typename A4, typename A5, typename X1>
1891 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1892 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5),
1893 const P1& p1) {
1894 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1895 new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5),
1896 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1897 (obj, method, MakeTuple(p1));
1898 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1899 }
1900
1901 template <typename R, typename P1, typename A1, typename A2, typename A3,
1902 typename A4, typename A5, typename X1>
1903 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1904 CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5), const P1& p1) {
1905 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1906 new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5),
1907 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1908 (function, MakeTuple(p1));
1909 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1910 }
1911 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1912 template <typename R, typename T, typename U, typename P1, typename A1,
1913 typename A2, typename A3, typename A4, typename A5, typename X1>
1914 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
1915 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5),
1916 const P1& p1) {
1917 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
1918 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5),
1919 Tuple1<P1>, Tuple5<A1, A2, A3, A4, A5> >
1920 (obj, method, MakeTuple(p1));
1921 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
1922 }
1923 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1924 #endif // OS_WIN
1925
1926 // 1 - 6
1927 template <typename R, typename T, typename U, typename P1, typename A1,
1928 typename A2, typename A3, typename A4, typename A5, typename A6,
1929 typename X1>
1930 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1931 CreateFunctor(T* obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6),
1932 const P1& p1) {
1933 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1934 new Mutant<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6),
1935 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
1936 (obj, method, MakeTuple(p1));
1937 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1938 }
1939
1940 template <typename R, typename P1, typename A1, typename A2, typename A3,
1941 typename A4, typename A5, typename A6, typename X1>
1942 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1943 CreateFunctor(R (*function)(X1, A1, A2, A3, A4, A5, A6), const P1& p1) {
1944 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1945 new MutantFunction<R, R (*)(X1, A1, A2, A3, A4, A5, A6),
1946 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
1947 (function, MakeTuple(p1));
1948 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1949 }
1950
1951 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1952 template <typename R, typename T, typename U, typename P1, typename A1,
1953 typename A2, typename A3, typename A4, typename A5, typename A6,
1954 typename X1>
1955 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1956 CreateFunctor(T** obj, R (U::*method)(X1, A1, A2, A3, A4, A5, A6),
1957 const P1& p1) {
1958 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1959 new MutantLateObjectBind<R, T, R (U::*)(X1, A1, A2, A3, A4, A5, A6),
1960 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
1961 (obj, method, MakeTuple(p1));
1962 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1963 }
1964 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1965
1966 #if defined (OS_WIN)
1967 template <typename R, typename T, typename U, typename P1, typename A1,
1968 typename A2, typename A3, typename A4, typename A5, typename A6,
1969 typename X1>
1970 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1971 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6),
1972 const P1& p1) {
1973 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1974 new Mutant<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6),
1975 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
1976 (obj, method, MakeTuple(p1));
1977 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1978 }
1979
1980 template <typename R, typename P1, typename A1, typename A2, typename A3,
1981 typename A4, typename A5, typename A6, typename X1>
1982 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1983 CreateFunctor(R (__stdcall *function)(X1, A1, A2, A3, A4, A5, A6),
1984 const P1& p1) {
1985 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1986 new MutantFunction<R, R (__stdcall *)(X1, A1, A2, A3, A4, A5, A6),
1987 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
1988 (function, MakeTuple(p1));
1989 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
1990 }
1991 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1992 template <typename R, typename T, typename U, typename P1, typename A1,
1993 typename A2, typename A3, typename A4, typename A5, typename A6,
1994 typename X1>
1995 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
1996 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, A1, A2, A3, A4, A5, A6),
1997 const P1& p1) {
1998 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
1999 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, A1, A2, A3, A4, A5, A6),
2000 Tuple1<P1>, Tuple6<A1, A2, A3, A4, A5, A6> >
2001 (obj, method, MakeTuple(p1));
2002 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2003 }
2004 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2005 #endif // OS_WIN
2006
1300 // 2 - 0 2007 // 2 - 0
1301 template <typename R, typename T, typename U, typename P1, typename P2, 2008 template <typename R, typename T, typename U, typename P1, typename P2,
1302 typename X1, typename X2> 2009 typename X1, typename X2>
1303 inline MutantFunctor<R, Tuple0> 2010 inline MutantFunctor<R, Tuple0>
1304 CreateFunctor(T* obj, R (U::*method)(X1, X2), const P1& p1, const P2& p2) { 2011 CreateFunctor(T* obj, R (U::*method)(X1, X2), const P1& p1, const P2& p2) {
1305 MutantRunner<R, Tuple0>* t = 2012 MutantRunner<R, Tuple0>* t =
1306 new Mutant<R, T, R (U::*)(X1, X2), 2013 new Mutant<R, T, R (U::*)(X1, X2),
1307 Tuple2<P1, P2>, Tuple0> 2014 Tuple2<P1, P2>, Tuple0>
1308 (obj, method, MakeTuple(p1, p2)); 2015 (obj, method, MakeTuple(p1, p2));
1309 return MutantFunctor<R, Tuple0>(t); 2016 return MutantFunctor<R, Tuple0>(t);
(...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after
1673 const P1& p1, const P2& p2) { 2380 const P1& p1, const P2& p2) {
1674 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 2381 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
1675 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4), 2382 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4),
1676 Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> > 2383 Tuple2<P1, P2>, Tuple4<A1, A2, A3, A4> >
1677 (obj, method, MakeTuple(p1, p2)); 2384 (obj, method, MakeTuple(p1, p2));
1678 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 2385 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
1679 } 2386 }
1680 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 2387 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
1681 #endif // OS_WIN 2388 #endif // OS_WIN
1682 2389
2390 // 2 - 5
2391 template <typename R, typename T, typename U, typename P1, typename P2,
2392 typename A1, typename A2, typename A3, typename A4, typename A5,
2393 typename X1, typename X2>
2394 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2395 CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1,
2396 const P2& p2) {
2397 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2398 new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5),
2399 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2400 (obj, method, MakeTuple(p1, p2));
2401 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2402 }
2403
2404 template <typename R, typename P1, typename P2, typename A1, typename A2,
2405 typename A3, typename A4, typename A5, typename X1, typename X2>
2406 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2407 CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1,
2408 const P2& p2) {
2409 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2410 new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5),
2411 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2412 (function, MakeTuple(p1, p2));
2413 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2414 }
2415
2416 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2417 template <typename R, typename T, typename U, typename P1, typename P2,
2418 typename A1, typename A2, typename A3, typename A4, typename A5,
2419 typename X1, typename X2>
2420 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2421 CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5), const P1& p1,
2422 const P2& p2) {
2423 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2424 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5),
2425 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2426 (obj, method, MakeTuple(p1, p2));
2427 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2428 }
2429 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2430
2431 #if defined (OS_WIN)
2432 template <typename R, typename T, typename U, typename P1, typename P2,
2433 typename A1, typename A2, typename A3, typename A4, typename A5,
2434 typename X1, typename X2>
2435 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2436 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5),
2437 const P1& p1, const P2& p2) {
2438 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2439 new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5),
2440 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2441 (obj, method, MakeTuple(p1, p2));
2442 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2443 }
2444
2445 template <typename R, typename P1, typename P2, typename A1, typename A2,
2446 typename A3, typename A4, typename A5, typename X1, typename X2>
2447 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2448 CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5), const P1& p1,
2449 const P2& p2) {
2450 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2451 new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5),
2452 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2453 (function, MakeTuple(p1, p2));
2454 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2455 }
2456 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2457 template <typename R, typename T, typename U, typename P1, typename P2,
2458 typename A1, typename A2, typename A3, typename A4, typename A5,
2459 typename X1, typename X2>
2460 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2461 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5),
2462 const P1& p1, const P2& p2) {
2463 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2464 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5),
2465 Tuple2<P1, P2>, Tuple5<A1, A2, A3, A4, A5> >
2466 (obj, method, MakeTuple(p1, p2));
2467 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2468 }
2469 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2470 #endif // OS_WIN
2471
2472 // 2 - 6
2473 template <typename R, typename T, typename U, typename P1, typename P2,
2474 typename A1, typename A2, typename A3, typename A4, typename A5,
2475 typename A6, typename X1, typename X2>
2476 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2477 CreateFunctor(T* obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6),
2478 const P1& p1, const P2& p2) {
2479 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2480 new Mutant<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6),
2481 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2482 (obj, method, MakeTuple(p1, p2));
2483 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2484 }
2485
2486 template <typename R, typename P1, typename P2, typename A1, typename A2,
2487 typename A3, typename A4, typename A5, typename A6, typename X1,
2488 typename X2>
2489 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2490 CreateFunctor(R (*function)(X1, X2, A1, A2, A3, A4, A5, A6), const P1& p1,
2491 const P2& p2) {
2492 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2493 new MutantFunction<R, R (*)(X1, X2, A1, A2, A3, A4, A5, A6),
2494 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2495 (function, MakeTuple(p1, p2));
2496 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2497 }
2498
2499 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2500 template <typename R, typename T, typename U, typename P1, typename P2,
2501 typename A1, typename A2, typename A3, typename A4, typename A5,
2502 typename A6, typename X1, typename X2>
2503 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2504 CreateFunctor(T** obj, R (U::*method)(X1, X2, A1, A2, A3, A4, A5, A6),
2505 const P1& p1, const P2& p2) {
2506 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2507 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, A1, A2, A3, A4, A5, A6),
2508 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2509 (obj, method, MakeTuple(p1, p2));
2510 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2511 }
2512 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2513
2514 #if defined (OS_WIN)
2515 template <typename R, typename T, typename U, typename P1, typename P2,
2516 typename A1, typename A2, typename A3, typename A4, typename A5,
2517 typename A6, typename X1, typename X2>
2518 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2519 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6),
2520 const P1& p1, const P2& p2) {
2521 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2522 new Mutant<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6),
2523 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2524 (obj, method, MakeTuple(p1, p2));
2525 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2526 }
2527
2528 template <typename R, typename P1, typename P2, typename A1, typename A2,
2529 typename A3, typename A4, typename A5, typename A6, typename X1,
2530 typename X2>
2531 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2532 CreateFunctor(R (__stdcall *function)(X1, X2, A1, A2, A3, A4, A5, A6),
2533 const P1& p1, const P2& p2) {
2534 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2535 new MutantFunction<R, R (__stdcall *)(X1, X2, A1, A2, A3, A4, A5, A6),
2536 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2537 (function, MakeTuple(p1, p2));
2538 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2539 }
2540 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2541 template <typename R, typename T, typename U, typename P1, typename P2,
2542 typename A1, typename A2, typename A3, typename A4, typename A5,
2543 typename A6, typename X1, typename X2>
2544 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
2545 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, A1, A2, A3, A4, A5, A6),
2546 const P1& p1, const P2& p2) {
2547 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
2548 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, A1, A2, A3, A4, A5, A6),
2549 Tuple2<P1, P2>, Tuple6<A1, A2, A3, A4, A5, A6> >
2550 (obj, method, MakeTuple(p1, p2));
2551 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
2552 }
2553 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2554 #endif // OS_WIN
2555
1683 // 3 - 0 2556 // 3 - 0
1684 template <typename R, typename T, typename U, typename P1, typename P2, 2557 template <typename R, typename T, typename U, typename P1, typename P2,
1685 typename P3, typename X1, typename X2, typename X3> 2558 typename P3, typename X1, typename X2, typename X3>
1686 inline MutantFunctor<R, Tuple0> 2559 inline MutantFunctor<R, Tuple0>
1687 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3), const P1& p1, const P2& p2, 2560 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3), const P1& p1, const P2& p2,
1688 const P3& p3) { 2561 const P3& p3) {
1689 MutantRunner<R, Tuple0>* t = 2562 MutantRunner<R, Tuple0>* t =
1690 new Mutant<R, T, R (U::*)(X1, X2, X3), 2563 new Mutant<R, T, R (U::*)(X1, X2, X3),
1691 Tuple3<P1, P2, P3>, Tuple0> 2564 Tuple3<P1, P2, P3>, Tuple0>
1692 (obj, method, MakeTuple(p1, p2, p3)); 2565 (obj, method, MakeTuple(p1, p2, p3));
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
2077 const P1& p1, const P2& p2, const P3& p3) { 2950 const P1& p1, const P2& p2, const P3& p3) {
2078 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 2951 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
2079 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4), 2952 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4),
2080 Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> > 2953 Tuple3<P1, P2, P3>, Tuple4<A1, A2, A3, A4> >
2081 (obj, method, MakeTuple(p1, p2, p3)); 2954 (obj, method, MakeTuple(p1, p2, p3));
2082 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 2955 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
2083 } 2956 }
2084 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 2957 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2085 #endif // OS_WIN 2958 #endif // OS_WIN
2086 2959
2960 // 3 - 5
2961 template <typename R, typename T, typename U, typename P1, typename P2,
2962 typename P3, typename A1, typename A2, typename A3, typename A4,
2963 typename A5, typename X1, typename X2, typename X3>
2964 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2965 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5),
2966 const P1& p1, const P2& p2, const P3& p3) {
2967 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2968 new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5),
2969 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
2970 (obj, method, MakeTuple(p1, p2, p3));
2971 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2972 }
2973
2974 template <typename R, typename P1, typename P2, typename P3, typename A1,
2975 typename A2, typename A3, typename A4, typename A5, typename X1,
2976 typename X2, typename X3>
2977 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2978 CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5), const P1& p1,
2979 const P2& p2, const P3& p3) {
2980 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2981 new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5),
2982 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
2983 (function, MakeTuple(p1, p2, p3));
2984 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2985 }
2986
2987 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2988 template <typename R, typename T, typename U, typename P1, typename P2,
2989 typename P3, typename A1, typename A2, typename A3, typename A4,
2990 typename A5, typename X1, typename X2, typename X3>
2991 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
2992 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5),
2993 const P1& p1, const P2& p2, const P3& p3) {
2994 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
2995 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5),
2996 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
2997 (obj, method, MakeTuple(p1, p2, p3));
2998 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
2999 }
3000 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3001
3002 #if defined (OS_WIN)
3003 template <typename R, typename T, typename U, typename P1, typename P2,
3004 typename P3, typename A1, typename A2, typename A3, typename A4,
3005 typename A5, typename X1, typename X2, typename X3>
3006 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3007 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5),
3008 const P1& p1, const P2& p2, const P3& p3) {
3009 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3010 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5),
3011 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
3012 (obj, method, MakeTuple(p1, p2, p3));
3013 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3014 }
3015
3016 template <typename R, typename P1, typename P2, typename P3, typename A1,
3017 typename A2, typename A3, typename A4, typename A5, typename X1,
3018 typename X2, typename X3>
3019 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3020 CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5),
3021 const P1& p1, const P2& p2, const P3& p3) {
3022 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3023 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5),
3024 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
3025 (function, MakeTuple(p1, p2, p3));
3026 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3027 }
3028 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3029 template <typename R, typename T, typename U, typename P1, typename P2,
3030 typename P3, typename A1, typename A2, typename A3, typename A4,
3031 typename A5, typename X1, typename X2, typename X3>
3032 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3033 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5),
3034 const P1& p1, const P2& p2, const P3& p3) {
3035 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3036 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5),
3037 Tuple3<P1, P2, P3>, Tuple5<A1, A2, A3, A4, A5> >
3038 (obj, method, MakeTuple(p1, p2, p3));
3039 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3040 }
3041 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3042 #endif // OS_WIN
3043
3044 // 3 - 6
3045 template <typename R, typename T, typename U, typename P1, typename P2,
3046 typename P3, typename A1, typename A2, typename A3, typename A4,
3047 typename A5, typename A6, typename X1, typename X2, typename X3>
3048 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3049 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3050 const P1& p1, const P2& p2, const P3& p3) {
3051 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3052 new Mutant<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3053 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> >
3054 (obj, method, MakeTuple(p1, p2, p3));
3055 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3056 }
3057
3058 template <typename R, typename P1, typename P2, typename P3, typename A1,
3059 typename A2, typename A3, typename A4, typename A5, typename A6,
3060 typename X1, typename X2, typename X3>
3061 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3062 CreateFunctor(R (*function)(X1, X2, X3, A1, A2, A3, A4, A5, A6), const P1& p1,
3063 const P2& p2, const P3& p3) {
3064 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3065 new MutantFunction<R, R (*)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3066 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> >
3067 (function, MakeTuple(p1, p2, p3));
3068 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3069 }
3070
3071 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3072 template <typename R, typename T, typename U, typename P1, typename P2,
3073 typename P3, typename A1, typename A2, typename A3, typename A4,
3074 typename A5, typename A6, typename X1, typename X2, typename X3>
3075 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3076 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3077 const P1& p1, const P2& p2, const P3& p3) {
3078 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3079 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6 ),
3080 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6 > >
3081 (obj, method, MakeTuple(p1, p2, p3));
3082 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3083 }
3084 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3085
3086 #if defined (OS_WIN)
3087 template <typename R, typename T, typename U, typename P1, typename P2,
3088 typename P3, typename A1, typename A2, typename A3, typename A4,
3089 typename A5, typename A6, typename X1, typename X2, typename X3>
3090 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3091 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5,
3092 A6), const P1& p1, const P2& p2, const P3& p3) {
3093 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3094 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3095 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> >
3096 (obj, method, MakeTuple(p1, p2, p3));
3097 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3098 }
3099
3100 template <typename R, typename P1, typename P2, typename P3, typename A1,
3101 typename A2, typename A3, typename A4, typename A5, typename A6,
3102 typename X1, typename X2, typename X3>
3103 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3104 CreateFunctor(R (__stdcall *function)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3105 const P1& p1, const P2& p2, const P3& p3) {
3106 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3107 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3108 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6> >
3109 (function, MakeTuple(p1, p2, p3));
3110 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3111 }
3112 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3113 template <typename R, typename T, typename U, typename P1, typename P2,
3114 typename P3, typename A1, typename A2, typename A3, typename A4,
3115 typename A5, typename A6, typename X1, typename X2, typename X3>
3116 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3117 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, A1, A2, A3, A4, A5,
3118 A6), const P1& p1, const P2& p2, const P3& p3) {
3119 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3120 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, A1, A2, A3, A4, A5, A6),
3121 Tuple3<P1, P2, P3>, Tuple6<A1, A2, A3, A4, A5, A6 > >
3122 (obj, method, MakeTuple(p1, p2, p3));
3123 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3124 }
3125 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3126 #endif // OS_WIN
3127
2087 // 4 - 0 3128 // 4 - 0
2088 template <typename R, typename T, typename U, typename P1, typename P2, 3129 template <typename R, typename T, typename U, typename P1, typename P2,
2089 typename P3, typename P4, typename X1, typename X2, typename X3, 3130 typename P3, typename P4, typename X1, typename X2, typename X3,
2090 typename X4> 3131 typename X4>
2091 inline MutantFunctor<R, Tuple0> 3132 inline MutantFunctor<R, Tuple0>
2092 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4), const P1& p1, 3133 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4), const P1& p1,
2093 const P2& p2, const P3& p3, const P4& p4) { 3134 const P2& p2, const P3& p3, const P4& p4) {
2094 MutantRunner<R, Tuple0>* t = 3135 MutantRunner<R, Tuple0>* t =
2095 new Mutant<R, T, R (U::*)(X1, X2, X3, X4), 3136 new Mutant<R, T, R (U::*)(X1, X2, X3, X4),
2096 Tuple4<P1, P2, P3, P4>, Tuple0> 3137 Tuple4<P1, P2, P3, P4>, Tuple0>
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
2493 const P1& p1, const P2& p2, const P3& p3, const P4& p4) { 3534 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
2494 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t = 3535 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
2495 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4), 3536 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4),
2496 Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> > 3537 Tuple4<P1, P2, P3, P4>, Tuple4<A1, A2, A3, A4> >
2497 (obj, method, MakeTuple(p1, p2, p3, p4)); 3538 (obj, method, MakeTuple(p1, p2, p3, p4));
2498 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t); 3539 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
2499 } 3540 }
2500 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING 3541 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
2501 #endif // OS_WIN 3542 #endif // OS_WIN
2502 3543
3544 // 4 - 5
3545 template <typename R, typename T, typename U, typename P1, typename P2,
3546 typename P3, typename P4, typename A1, typename A2, typename A3,
3547 typename A4, typename A5, typename X1, typename X2, typename X3,
3548 typename X4>
3549 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3550 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3551 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3552 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3553 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3554 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> >
3555 (obj, method, MakeTuple(p1, p2, p3, p4));
3556 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3557 }
3558
3559 template <typename R, typename P1, typename P2, typename P3, typename P4,
3560 typename A1, typename A2, typename A3, typename A4, typename A5,
3561 typename X1, typename X2, typename X3, typename X4>
3562 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3563 CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5), const P1& p1,
3564 const P2& p2, const P3& p3, const P4& p4) {
3565 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3566 new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3567 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> >
3568 (function, MakeTuple(p1, p2, p3, p4));
3569 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3570 }
3571
3572 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3573 template <typename R, typename T, typename U, typename P1, typename P2,
3574 typename P3, typename P4, typename A1, typename A2, typename A3,
3575 typename A4, typename A5, typename X1, typename X2, typename X3,
3576 typename X4>
3577 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3578 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3579 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3580 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3581 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5 ),
3582 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5 > >
3583 (obj, method, MakeTuple(p1, p2, p3, p4));
3584 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3585 }
3586 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3587
3588 #if defined (OS_WIN)
3589 template <typename R, typename T, typename U, typename P1, typename P2,
3590 typename P3, typename P4, typename A1, typename A2, typename A3,
3591 typename A4, typename A5, typename X1, typename X2, typename X3,
3592 typename X4>
3593 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3594 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4,
3595 A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3596 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3597 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3598 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> >
3599 (obj, method, MakeTuple(p1, p2, p3, p4));
3600 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3601 }
3602
3603 template <typename R, typename P1, typename P2, typename P3, typename P4,
3604 typename A1, typename A2, typename A3, typename A4, typename A5,
3605 typename X1, typename X2, typename X3, typename X4>
3606 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3607 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3608 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3609 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3610 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3611 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5> >
3612 (function, MakeTuple(p1, p2, p3, p4));
3613 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3614 }
3615 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3616 template <typename R, typename T, typename U, typename P1, typename P2,
3617 typename P3, typename P4, typename A1, typename A2, typename A3,
3618 typename A4, typename A5, typename X1, typename X2, typename X3,
3619 typename X4>
3620 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
3621 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4,
3622 A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3623 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
3624 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5),
3625 Tuple4<P1, P2, P3, P4>, Tuple5<A1, A2, A3, A4, A5 > >
3626 (obj, method, MakeTuple(p1, p2, p3, p4));
3627 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
3628 }
3629 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3630 #endif // OS_WIN
3631
3632 // 4 - 6
3633 template <typename R, typename T, typename U, typename P1, typename P2,
3634 typename P3, typename P4, typename A1, typename A2, typename A3,
3635 typename A4, typename A5, typename A6, typename X1, typename X2,
3636 typename X3, typename X4>
3637 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3638 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3639 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3640 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3641 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3642 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> >
3643 (obj, method, MakeTuple(p1, p2, p3, p4));
3644 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3645 }
3646
3647 template <typename R, typename P1, typename P2, typename P3, typename P4,
3648 typename A1, typename A2, typename A3, typename A4, typename A5,
3649 typename A6, typename X1, typename X2, typename X3, typename X4>
3650 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3651 CreateFunctor(R (*function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3652 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3653 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3654 new MutantFunction<R, R (*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3655 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> >
3656 (function, MakeTuple(p1, p2, p3, p4));
3657 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3658 }
3659
3660 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3661 template <typename R, typename T, typename U, typename P1, typename P2,
3662 typename P3, typename P4, typename A1, typename A2, typename A3,
3663 typename A4, typename A5, typename A6, typename X1, typename X2,
3664 typename X3, typename X4>
3665 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3666 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3667 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3668 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3669 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5 , A6),
3670 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5 , A6> >
3671 (obj, method, MakeTuple(p1, p2, p3, p4));
3672 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3673 }
3674 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3675
3676 #if defined (OS_WIN)
3677 template <typename R, typename T, typename U, typename P1, typename P2,
3678 typename P3, typename P4, typename A1, typename A2, typename A3,
3679 typename A4, typename A5, typename A6, typename X1, typename X2,
3680 typename X3, typename X4>
3681 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3682 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4,
3683 A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3684 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3685 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6 ),
3686 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> >
3687 (obj, method, MakeTuple(p1, p2, p3, p4));
3688 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3689 }
3690
3691 template <typename R, typename P1, typename P2, typename P3, typename P4,
3692 typename A1, typename A2, typename A3, typename A4, typename A5,
3693 typename A6, typename X1, typename X2, typename X3, typename X4>
3694 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3695 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3696 const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3697 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3698 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3699 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5, A6> >
3700 (function, MakeTuple(p1, p2, p3, p4));
3701 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3702 }
3703 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3704 template <typename R, typename T, typename U, typename P1, typename P2,
3705 typename P3, typename P4, typename A1, typename A2, typename A3,
3706 typename A4, typename A5, typename A6, typename X1, typename X2,
3707 typename X3, typename X4>
3708 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
3709 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, A1, A2, A3, A4,
3710 A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4) {
3711 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
3712 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, A1, A2, A3, A4, A5, A6),
3713 Tuple4<P1, P2, P3, P4>, Tuple6<A1, A2, A3, A4, A5 , A6> >
3714 (obj, method, MakeTuple(p1, p2, p3, p4));
3715 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
3716 }
3717 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3718 #endif // OS_WIN
3719
3720 // 5 - 0
3721 template <typename R, typename T, typename U, typename P1, typename P2,
3722 typename P3, typename P4, typename P5, typename X1, typename X2,
3723 typename X3, typename X4, typename X5>
3724 inline MutantFunctor<R, Tuple0>
3725 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1,
3726 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3727 MutantRunner<R, Tuple0>* t =
3728 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5),
3729 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3730 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3731 return MutantFunctor<R, Tuple0>(t);
3732 }
3733
3734 template <typename R, typename P1, typename P2, typename P3, typename P4,
3735 typename P5, typename X1, typename X2, typename X3, typename X4,
3736 typename X5>
3737 inline MutantFunctor<R, Tuple0>
3738 CreateFunctor(R (*function)(X1, X2, X3, X4, X5), const P1& p1, const P2& p2,
3739 const P3& p3, const P4& p4, const P5& p5) {
3740 MutantRunner<R, Tuple0>* t =
3741 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5),
3742 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3743 (function, MakeTuple(p1, p2, p3, p4, p5));
3744 return MutantFunctor<R, Tuple0>(t);
3745 }
3746
3747 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3748 template <typename R, typename T, typename U, typename P1, typename P2,
3749 typename P3, typename P4, typename P5, typename X1, typename X2,
3750 typename X3, typename X4, typename X5>
3751 inline MutantFunctor<R, Tuple0>
3752 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5), const P1& p1,
3753 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3754 MutantRunner<R, Tuple0>* t =
3755 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5),
3756 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3757 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3758 return MutantFunctor<R, Tuple0>(t);
3759 }
3760 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3761
3762 #if defined (OS_WIN)
3763 template <typename R, typename T, typename U, typename P1, typename P2,
3764 typename P3, typename P4, typename P5, typename X1, typename X2,
3765 typename X3, typename X4, typename X5>
3766 inline MutantFunctor<R, Tuple0>
3767 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5),
3768 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3769 MutantRunner<R, Tuple0>* t =
3770 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5),
3771 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3772 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3773 return MutantFunctor<R, Tuple0>(t);
3774 }
3775
3776 template <typename R, typename P1, typename P2, typename P3, typename P4,
3777 typename P5, typename X1, typename X2, typename X3, typename X4,
3778 typename X5>
3779 inline MutantFunctor<R, Tuple0>
3780 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5), const P1& p1,
3781 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3782 MutantRunner<R, Tuple0>* t =
3783 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5),
3784 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3785 (function, MakeTuple(p1, p2, p3, p4, p5));
3786 return MutantFunctor<R, Tuple0>(t);
3787 }
3788 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3789 template <typename R, typename T, typename U, typename P1, typename P2,
3790 typename P3, typename P4, typename P5, typename X1, typename X2,
3791 typename X3, typename X4, typename X5>
3792 inline MutantFunctor<R, Tuple0>
3793 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5),
3794 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3795 MutantRunner<R, Tuple0>* t =
3796 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5),
3797 Tuple5<P1, P2, P3, P4, P5>, Tuple0>
3798 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3799 return MutantFunctor<R, Tuple0>(t);
3800 }
3801 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3802 #endif // OS_WIN
3803
3804 // 5 - 1
3805 template <typename R, typename T, typename U, typename P1, typename P2,
3806 typename P3, typename P4, typename P5, typename A1, typename X1,
3807 typename X2, typename X3, typename X4, typename X5>
3808 inline MutantFunctor<R, Tuple1<A1> >
3809 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1,
3810 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3811 MutantRunner<R, Tuple1<A1> >* t =
3812 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1),
3813 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3814 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3815 return MutantFunctor<R, Tuple1<A1> >(t);
3816 }
3817
3818 template <typename R, typename P1, typename P2, typename P3, typename P4,
3819 typename P5, typename A1, typename X1, typename X2, typename X3,
3820 typename X4, typename X5>
3821 inline MutantFunctor<R, Tuple1<A1> >
3822 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1), const P1& p1, const P2& p2,
3823 const P3& p3, const P4& p4, const P5& p5) {
3824 MutantRunner<R, Tuple1<A1> >* t =
3825 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1),
3826 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3827 (function, MakeTuple(p1, p2, p3, p4, p5));
3828 return MutantFunctor<R, Tuple1<A1> >(t);
3829 }
3830
3831 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3832 template <typename R, typename T, typename U, typename P1, typename P2,
3833 typename P3, typename P4, typename P5, typename A1, typename X1,
3834 typename X2, typename X3, typename X4, typename X5>
3835 inline MutantFunctor<R, Tuple1<A1> >
3836 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1), const P1& p1,
3837 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3838 MutantRunner<R, Tuple1<A1> >* t =
3839 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1),
3840 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3841 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3842 return MutantFunctor<R, Tuple1<A1> >(t);
3843 }
3844 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3845
3846 #if defined (OS_WIN)
3847 template <typename R, typename T, typename U, typename P1, typename P2,
3848 typename P3, typename P4, typename P5, typename A1, typename X1,
3849 typename X2, typename X3, typename X4, typename X5>
3850 inline MutantFunctor<R, Tuple1<A1> >
3851 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1),
3852 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3853 MutantRunner<R, Tuple1<A1> >* t =
3854 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1),
3855 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3856 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3857 return MutantFunctor<R, Tuple1<A1> >(t);
3858 }
3859
3860 template <typename R, typename P1, typename P2, typename P3, typename P4,
3861 typename P5, typename A1, typename X1, typename X2, typename X3,
3862 typename X4, typename X5>
3863 inline MutantFunctor<R, Tuple1<A1> >
3864 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1), const P1& p1,
3865 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3866 MutantRunner<R, Tuple1<A1> >* t =
3867 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1),
3868 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3869 (function, MakeTuple(p1, p2, p3, p4, p5));
3870 return MutantFunctor<R, Tuple1<A1> >(t);
3871 }
3872 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3873 template <typename R, typename T, typename U, typename P1, typename P2,
3874 typename P3, typename P4, typename P5, typename A1, typename X1,
3875 typename X2, typename X3, typename X4, typename X5>
3876 inline MutantFunctor<R, Tuple1<A1> >
3877 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1),
3878 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3879 MutantRunner<R, Tuple1<A1> >* t =
3880 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1),
3881 Tuple5<P1, P2, P3, P4, P5>, Tuple1<A1> >
3882 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3883 return MutantFunctor<R, Tuple1<A1> >(t);
3884 }
3885 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3886 #endif // OS_WIN
3887
3888 // 5 - 2
3889 template <typename R, typename T, typename U, typename P1, typename P2,
3890 typename P3, typename P4, typename P5, typename A1, typename A2,
3891 typename X1, typename X2, typename X3, typename X4, typename X5>
3892 inline MutantFunctor<R, Tuple2<A1, A2> >
3893 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1,
3894 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3895 MutantRunner<R, Tuple2<A1, A2> >* t =
3896 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2),
3897 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3898 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3899 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3900 }
3901
3902 template <typename R, typename P1, typename P2, typename P3, typename P4,
3903 typename P5, typename A1, typename A2, typename X1, typename X2,
3904 typename X3, typename X4, typename X5>
3905 inline MutantFunctor<R, Tuple2<A1, A2> >
3906 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1,
3907 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3908 MutantRunner<R, Tuple2<A1, A2> >* t =
3909 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2),
3910 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3911 (function, MakeTuple(p1, p2, p3, p4, p5));
3912 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3913 }
3914
3915 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3916 template <typename R, typename T, typename U, typename P1, typename P2,
3917 typename P3, typename P4, typename P5, typename A1, typename A2,
3918 typename X1, typename X2, typename X3, typename X4, typename X5>
3919 inline MutantFunctor<R, Tuple2<A1, A2> >
3920 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2), const P1& p1,
3921 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3922 MutantRunner<R, Tuple2<A1, A2> >* t =
3923 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2),
3924 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3925 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3926 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3927 }
3928 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3929
3930 #if defined (OS_WIN)
3931 template <typename R, typename T, typename U, typename P1, typename P2,
3932 typename P3, typename P4, typename P5, typename A1, typename A2,
3933 typename X1, typename X2, typename X3, typename X4, typename X5>
3934 inline MutantFunctor<R, Tuple2<A1, A2> >
3935 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2),
3936 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3937 MutantRunner<R, Tuple2<A1, A2> >* t =
3938 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2),
3939 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3940 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3941 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3942 }
3943
3944 template <typename R, typename P1, typename P2, typename P3, typename P4,
3945 typename P5, typename A1, typename A2, typename X1, typename X2,
3946 typename X3, typename X4, typename X5>
3947 inline MutantFunctor<R, Tuple2<A1, A2> >
3948 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2), const P1& p1,
3949 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3950 MutantRunner<R, Tuple2<A1, A2> >* t =
3951 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2),
3952 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3953 (function, MakeTuple(p1, p2, p3, p4, p5));
3954 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3955 }
3956 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3957 template <typename R, typename T, typename U, typename P1, typename P2,
3958 typename P3, typename P4, typename P5, typename A1, typename A2,
3959 typename X1, typename X2, typename X3, typename X4, typename X5>
3960 inline MutantFunctor<R, Tuple2<A1, A2> >
3961 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2),
3962 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3963 MutantRunner<R, Tuple2<A1, A2> >* t =
3964 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2),
3965 Tuple5<P1, P2, P3, P4, P5>, Tuple2<A1, A2> >
3966 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3967 return MutantFunctor<R, Tuple2<A1, A2> >(t);
3968 }
3969 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
3970 #endif // OS_WIN
3971
3972 // 5 - 3
3973 template <typename R, typename T, typename U, typename P1, typename P2,
3974 typename P3, typename P4, typename P5, typename A1, typename A2,
3975 typename A3, typename X1, typename X2, typename X3, typename X4,
3976 typename X5>
3977 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
3978 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3),
3979 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3980 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
3981 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3),
3982 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
3983 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
3984 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
3985 }
3986
3987 template <typename R, typename P1, typename P2, typename P3, typename P4,
3988 typename P5, typename A1, typename A2, typename A3, typename X1,
3989 typename X2, typename X3, typename X4, typename X5>
3990 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
3991 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3), const P1& p1,
3992 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
3993 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
3994 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3),
3995 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
3996 (function, MakeTuple(p1, p2, p3, p4, p5));
3997 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
3998 }
3999
4000 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4001 template <typename R, typename T, typename U, typename P1, typename P2,
4002 typename P3, typename P4, typename P5, typename A1, typename A2,
4003 typename A3, typename X1, typename X2, typename X3, typename X4,
4004 typename X5>
4005 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4006 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3),
4007 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4008 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4009 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3),
4010 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
4011 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4012 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4013 }
4014 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4015
4016 #if defined (OS_WIN)
4017 template <typename R, typename T, typename U, typename P1, typename P2,
4018 typename P3, typename P4, typename P5, typename A1, typename A2,
4019 typename A3, typename X1, typename X2, typename X3, typename X4,
4020 typename X5>
4021 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4022 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3),
4023 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4024 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4025 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3),
4026 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
4027 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4028 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4029 }
4030
4031 template <typename R, typename P1, typename P2, typename P3, typename P4,
4032 typename P5, typename A1, typename A2, typename A3, typename X1,
4033 typename X2, typename X3, typename X4, typename X5>
4034 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4035 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3),
4036 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4037 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4038 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3),
4039 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
4040 (function, MakeTuple(p1, p2, p3, p4, p5));
4041 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4042 }
4043 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4044 template <typename R, typename T, typename U, typename P1, typename P2,
4045 typename P3, typename P4, typename P5, typename A1, typename A2,
4046 typename A3, typename X1, typename X2, typename X3, typename X4,
4047 typename X5>
4048 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4049 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3),
4050 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4051 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4052 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3),
4053 Tuple5<P1, P2, P3, P4, P5>, Tuple3<A1, A2, A3> >
4054 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4055 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4056 }
4057 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4058 #endif // OS_WIN
4059
4060 // 5 - 4
4061 template <typename R, typename T, typename U, typename P1, typename P2,
4062 typename P3, typename P4, typename P5, typename A1, typename A2,
4063 typename A3, typename A4, typename X1, typename X2, typename X3,
4064 typename X4, typename X5>
4065 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4066 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4067 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4068 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4069 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4070 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> >
4071 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4072 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4073 }
4074
4075 template <typename R, typename P1, typename P2, typename P3, typename P4,
4076 typename P5, typename A1, typename A2, typename A3, typename A4,
4077 typename X1, typename X2, typename X3, typename X4, typename X5>
4078 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4079 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4), const P1& p1,
4080 const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4081 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4082 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4083 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> >
4084 (function, MakeTuple(p1, p2, p3, p4, p5));
4085 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4086 }
4087
4088 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4089 template <typename R, typename T, typename U, typename P1, typename P2,
4090 typename P3, typename P4, typename P5, typename A1, typename A2,
4091 typename A3, typename A4, typename X1, typename X2, typename X3,
4092 typename X4, typename X5>
4093 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4094 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4095 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4096 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4097 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4 ),
4098 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4 > >
4099 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4100 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4101 }
4102 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4103
4104 #if defined (OS_WIN)
4105 template <typename R, typename T, typename U, typename P1, typename P2,
4106 typename P3, typename P4, typename P5, typename A1, typename A2,
4107 typename A3, typename A4, typename X1, typename X2, typename X3,
4108 typename X4, typename X5>
4109 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4110 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4111 A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4112 const P5& p5) {
4113 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4114 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4115 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> >
4116 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4117 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4118 }
4119
4120 template <typename R, typename P1, typename P2, typename P3, typename P4,
4121 typename P5, typename A1, typename A2, typename A3, typename A4,
4122 typename X1, typename X2, typename X3, typename X4, typename X5>
4123 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4124 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4125 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4126 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4127 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4128 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4> >
4129 (function, MakeTuple(p1, p2, p3, p4, p5));
4130 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4131 }
4132 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4133 template <typename R, typename T, typename U, typename P1, typename P2,
4134 typename P3, typename P4, typename P5, typename A1, typename A2,
4135 typename A3, typename A4, typename X1, typename X2, typename X3,
4136 typename X4, typename X5>
4137 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4138 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4139 A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4140 const P5& p5) {
4141 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4142 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4),
4143 Tuple5<P1, P2, P3, P4, P5>, Tuple4<A1, A2, A3, A4 > >
4144 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4145 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4146 }
4147 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4148 #endif // OS_WIN
4149
4150 // 5 - 5
4151 template <typename R, typename T, typename U, typename P1, typename P2,
4152 typename P3, typename P4, typename P5, typename A1, typename A2,
4153 typename A3, typename A4, typename A5, typename X1, typename X2,
4154 typename X3, typename X4, typename X5>
4155 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4156 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4157 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4158 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4159 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4160 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> >
4161 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4162 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4163 }
4164
4165 template <typename R, typename P1, typename P2, typename P3, typename P4,
4166 typename P5, typename A1, typename A2, typename A3, typename A4,
4167 typename A5, typename X1, typename X2, typename X3, typename X4,
4168 typename X5>
4169 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4170 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4171 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4172 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4173 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4174 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> >
4175 (function, MakeTuple(p1, p2, p3, p4, p5));
4176 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4177 }
4178
4179 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4180 template <typename R, typename T, typename U, typename P1, typename P2,
4181 typename P3, typename P4, typename P5, typename A1, typename A2,
4182 typename A3, typename A4, typename A5, typename X1, typename X2,
4183 typename X3, typename X4, typename X5>
4184 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4185 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4186 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4187 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4188 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4 , A5),
4189 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4 , A5> >
4190 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4191 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4192 }
4193 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4194
4195 #if defined (OS_WIN)
4196 template <typename R, typename T, typename U, typename P1, typename P2,
4197 typename P3, typename P4, typename P5, typename A1, typename A2,
4198 typename A3, typename A4, typename A5, typename X1, typename X2,
4199 typename X3, typename X4, typename X5>
4200 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4201 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4202 A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4203 const P5& p5) {
4204 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4205 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5 ),
4206 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> >
4207 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4208 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4209 }
4210
4211 template <typename R, typename P1, typename P2, typename P3, typename P4,
4212 typename P5, typename A1, typename A2, typename A3, typename A4,
4213 typename A5, typename X1, typename X2, typename X3, typename X4,
4214 typename X5>
4215 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4216 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4217 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4218 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4219 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4220 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4, A5> >
4221 (function, MakeTuple(p1, p2, p3, p4, p5));
4222 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4223 }
4224 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4225 template <typename R, typename T, typename U, typename P1, typename P2,
4226 typename P3, typename P4, typename P5, typename A1, typename A2,
4227 typename A3, typename A4, typename A5, typename X1, typename X2,
4228 typename X3, typename X4, typename X5>
4229 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4230 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4231 A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4232 const P5& p5) {
4233 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4234 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5),
4235 Tuple5<P1, P2, P3, P4, P5>, Tuple5<A1, A2, A3, A4 , A5> >
4236 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4237 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4238 }
4239 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4240 #endif // OS_WIN
4241
4242 // 5 - 6
4243 template <typename R, typename T, typename U, typename P1, typename P2,
4244 typename P3, typename P4, typename P5, typename A1, typename A2,
4245 typename A3, typename A4, typename A5, typename A6, typename X1,
4246 typename X2, typename X3, typename X4, typename X5>
4247 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4248 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5,
4249 A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4250 const P5& p5) {
4251 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4252 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6),
4253 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> >
4254 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4255 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4256 }
4257
4258 template <typename R, typename P1, typename P2, typename P3, typename P4,
4259 typename P5, typename A1, typename A2, typename A3, typename A4,
4260 typename A5, typename A6, typename X1, typename X2, typename X3,
4261 typename X4, typename X5>
4262 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4263 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6),
4264 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5) {
4265 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4266 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6),
4267 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> >
4268 (function, MakeTuple(p1, p2, p3, p4, p5));
4269 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4270 }
4271
4272 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4273 template <typename R, typename T, typename U, typename P1, typename P2,
4274 typename P3, typename P4, typename P5, typename A1, typename A2,
4275 typename A3, typename A4, typename A5, typename A6, typename X1,
4276 typename X2, typename X3, typename X4, typename X5>
4277 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4278 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5,
4279 A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4280 const P5& p5) {
4281 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4282 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4 , A5, A6),
4283 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4 , A5, A6> >
4284 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4285 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4286 }
4287 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4288
4289 #if defined (OS_WIN)
4290 template <typename R, typename T, typename U, typename P1, typename P2,
4291 typename P3, typename P4, typename P5, typename A1, typename A2,
4292 typename A3, typename A4, typename A5, typename A6, typename X1,
4293 typename X2, typename X3, typename X4, typename X5>
4294 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4295 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4296 A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4297 const P5& p5) {
4298 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4299 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5 , A6),
4300 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> >
4301 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4302 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4303 }
4304
4305 template <typename R, typename P1, typename P2, typename P3, typename P4,
4306 typename P5, typename A1, typename A2, typename A3, typename A4,
4307 typename A5, typename A6, typename X1, typename X2, typename X3,
4308 typename X4, typename X5>
4309 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4310 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5,
4311 A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4312 const P5& p5) {
4313 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4314 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6),
4315 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4, A5, A6> >
4316 (function, MakeTuple(p1, p2, p3, p4, p5));
4317 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4318 }
4319 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4320 template <typename R, typename T, typename U, typename P1, typename P2,
4321 typename P3, typename P4, typename P5, typename A1, typename A2,
4322 typename A3, typename A4, typename A5, typename A6, typename X1,
4323 typename X2, typename X3, typename X4, typename X5>
4324 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4325 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, A1, A2, A3,
4326 A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4327 const P5& p5) {
4328 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4329 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, A1, A2, A3, A4, A5, A6),
4330 Tuple5<P1, P2, P3, P4, P5>, Tuple6<A1, A2, A3, A4 , A5, A6> >
4331 (obj, method, MakeTuple(p1, p2, p3, p4, p5));
4332 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4333 }
4334 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4335 #endif // OS_WIN
4336
4337 // 6 - 0
4338 template <typename R, typename T, typename U, typename P1, typename P2,
4339 typename P3, typename P4, typename P5, typename P6, typename X1,
4340 typename X2, typename X3, typename X4, typename X5, typename X6>
4341 inline MutantFunctor<R, Tuple0>
4342 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1,
4343 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4344 MutantRunner<R, Tuple0>* t =
4345 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6),
4346 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4347 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4348 return MutantFunctor<R, Tuple0>(t);
4349 }
4350
4351 template <typename R, typename P1, typename P2, typename P3, typename P4,
4352 typename P5, typename P6, typename X1, typename X2, typename X3,
4353 typename X4, typename X5, typename X6>
4354 inline MutantFunctor<R, Tuple0>
4355 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6), const P1& p1, const P2& p2,
4356 const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4357 MutantRunner<R, Tuple0>* t =
4358 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6),
4359 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4360 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4361 return MutantFunctor<R, Tuple0>(t);
4362 }
4363
4364 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4365 template <typename R, typename T, typename U, typename P1, typename P2,
4366 typename P3, typename P4, typename P5, typename P6, typename X1,
4367 typename X2, typename X3, typename X4, typename X5, typename X6>
4368 inline MutantFunctor<R, Tuple0>
4369 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6), const P1& p1,
4370 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4371 MutantRunner<R, Tuple0>* t =
4372 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6),
4373 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4374 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4375 return MutantFunctor<R, Tuple0>(t);
4376 }
4377 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4378
4379 #if defined (OS_WIN)
4380 template <typename R, typename T, typename U, typename P1, typename P2,
4381 typename P3, typename P4, typename P5, typename P6, typename X1,
4382 typename X2, typename X3, typename X4, typename X5, typename X6>
4383 inline MutantFunctor<R, Tuple0>
4384 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6),
4385 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4386 const P6& p6) {
4387 MutantRunner<R, Tuple0>* t =
4388 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6),
4389 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4390 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4391 return MutantFunctor<R, Tuple0>(t);
4392 }
4393
4394 template <typename R, typename P1, typename P2, typename P3, typename P4,
4395 typename P5, typename P6, typename X1, typename X2, typename X3,
4396 typename X4, typename X5, typename X6>
4397 inline MutantFunctor<R, Tuple0>
4398 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6), const P1& p1,
4399 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4400 MutantRunner<R, Tuple0>* t =
4401 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6),
4402 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4403 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4404 return MutantFunctor<R, Tuple0>(t);
4405 }
4406 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4407 template <typename R, typename T, typename U, typename P1, typename P2,
4408 typename P3, typename P4, typename P5, typename P6, typename X1,
4409 typename X2, typename X3, typename X4, typename X5, typename X6>
4410 inline MutantFunctor<R, Tuple0>
4411 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6),
4412 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4413 const P6& p6) {
4414 MutantRunner<R, Tuple0>* t =
4415 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6),
4416 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple0>
4417 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4418 return MutantFunctor<R, Tuple0>(t);
4419 }
4420 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4421 #endif // OS_WIN
4422
4423 // 6 - 1
4424 template <typename R, typename T, typename U, typename P1, typename P2,
4425 typename P3, typename P4, typename P5, typename P6, typename A1,
4426 typename X1, typename X2, typename X3, typename X4, typename X5,
4427 typename X6>
4428 inline MutantFunctor<R, Tuple1<A1> >
4429 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1,
4430 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4431 MutantRunner<R, Tuple1<A1> >* t =
4432 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1),
4433 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4434 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4435 return MutantFunctor<R, Tuple1<A1> >(t);
4436 }
4437
4438 template <typename R, typename P1, typename P2, typename P3, typename P4,
4439 typename P5, typename P6, typename A1, typename X1, typename X2,
4440 typename X3, typename X4, typename X5, typename X6>
4441 inline MutantFunctor<R, Tuple1<A1> >
4442 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1,
4443 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4444 MutantRunner<R, Tuple1<A1> >* t =
4445 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1),
4446 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4447 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4448 return MutantFunctor<R, Tuple1<A1> >(t);
4449 }
4450
4451 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4452 template <typename R, typename T, typename U, typename P1, typename P2,
4453 typename P3, typename P4, typename P5, typename P6, typename A1,
4454 typename X1, typename X2, typename X3, typename X4, typename X5,
4455 typename X6>
4456 inline MutantFunctor<R, Tuple1<A1> >
4457 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1), const P1& p1,
4458 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4459 MutantRunner<R, Tuple1<A1> >* t =
4460 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1),
4461 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4462 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4463 return MutantFunctor<R, Tuple1<A1> >(t);
4464 }
4465 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4466
4467 #if defined (OS_WIN)
4468 template <typename R, typename T, typename U, typename P1, typename P2,
4469 typename P3, typename P4, typename P5, typename P6, typename A1,
4470 typename X1, typename X2, typename X3, typename X4, typename X5,
4471 typename X6>
4472 inline MutantFunctor<R, Tuple1<A1> >
4473 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1),
4474 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4475 const P6& p6) {
4476 MutantRunner<R, Tuple1<A1> >* t =
4477 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1),
4478 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4479 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4480 return MutantFunctor<R, Tuple1<A1> >(t);
4481 }
4482
4483 template <typename R, typename P1, typename P2, typename P3, typename P4,
4484 typename P5, typename P6, typename A1, typename X1, typename X2,
4485 typename X3, typename X4, typename X5, typename X6>
4486 inline MutantFunctor<R, Tuple1<A1> >
4487 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1), const P1& p1,
4488 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4489 MutantRunner<R, Tuple1<A1> >* t =
4490 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1),
4491 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4492 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4493 return MutantFunctor<R, Tuple1<A1> >(t);
4494 }
4495 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4496 template <typename R, typename T, typename U, typename P1, typename P2,
4497 typename P3, typename P4, typename P5, typename P6, typename A1,
4498 typename X1, typename X2, typename X3, typename X4, typename X5,
4499 typename X6>
4500 inline MutantFunctor<R, Tuple1<A1> >
4501 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1),
4502 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4503 const P6& p6) {
4504 MutantRunner<R, Tuple1<A1> >* t =
4505 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1),
4506 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple1<A1> >
4507 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4508 return MutantFunctor<R, Tuple1<A1> >(t);
4509 }
4510 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4511 #endif // OS_WIN
4512
4513 // 6 - 2
4514 template <typename R, typename T, typename U, typename P1, typename P2,
4515 typename P3, typename P4, typename P5, typename P6, typename A1,
4516 typename A2, typename X1, typename X2, typename X3, typename X4,
4517 typename X5, typename X6>
4518 inline MutantFunctor<R, Tuple2<A1, A2> >
4519 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2),
4520 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4521 const P6& p6) {
4522 MutantRunner<R, Tuple2<A1, A2> >* t =
4523 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2),
4524 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4525 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4526 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4527 }
4528
4529 template <typename R, typename P1, typename P2, typename P3, typename P4,
4530 typename P5, typename P6, typename A1, typename A2, typename X1,
4531 typename X2, typename X3, typename X4, typename X5, typename X6>
4532 inline MutantFunctor<R, Tuple2<A1, A2> >
4533 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2), const P1& p1,
4534 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4535 MutantRunner<R, Tuple2<A1, A2> >* t =
4536 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2),
4537 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4538 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4539 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4540 }
4541
4542 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4543 template <typename R, typename T, typename U, typename P1, typename P2,
4544 typename P3, typename P4, typename P5, typename P6, typename A1,
4545 typename A2, typename X1, typename X2, typename X3, typename X4,
4546 typename X5, typename X6>
4547 inline MutantFunctor<R, Tuple2<A1, A2> >
4548 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2),
4549 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4550 const P6& p6) {
4551 MutantRunner<R, Tuple2<A1, A2> >* t =
4552 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2),
4553 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4554 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4555 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4556 }
4557 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4558
4559 #if defined (OS_WIN)
4560 template <typename R, typename T, typename U, typename P1, typename P2,
4561 typename P3, typename P4, typename P5, typename P6, typename A1,
4562 typename A2, typename X1, typename X2, typename X3, typename X4,
4563 typename X5, typename X6>
4564 inline MutantFunctor<R, Tuple2<A1, A2> >
4565 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2),
4566 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4567 const P6& p6) {
4568 MutantRunner<R, Tuple2<A1, A2> >* t =
4569 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2),
4570 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4571 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4572 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4573 }
4574
4575 template <typename R, typename P1, typename P2, typename P3, typename P4,
4576 typename P5, typename P6, typename A1, typename A2, typename X1,
4577 typename X2, typename X3, typename X4, typename X5, typename X6>
4578 inline MutantFunctor<R, Tuple2<A1, A2> >
4579 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2),
4580 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4581 const P6& p6) {
4582 MutantRunner<R, Tuple2<A1, A2> >* t =
4583 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2),
4584 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4585 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4586 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4587 }
4588 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4589 template <typename R, typename T, typename U, typename P1, typename P2,
4590 typename P3, typename P4, typename P5, typename P6, typename A1,
4591 typename A2, typename X1, typename X2, typename X3, typename X4,
4592 typename X5, typename X6>
4593 inline MutantFunctor<R, Tuple2<A1, A2> >
4594 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2),
4595 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4596 const P6& p6) {
4597 MutantRunner<R, Tuple2<A1, A2> >* t =
4598 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2),
4599 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple2<A1, A2> >
4600 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4601 return MutantFunctor<R, Tuple2<A1, A2> >(t);
4602 }
4603 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4604 #endif // OS_WIN
4605
4606 // 6 - 3
4607 template <typename R, typename T, typename U, typename P1, typename P2,
4608 typename P3, typename P4, typename P5, typename P6, typename A1,
4609 typename A2, typename A3, typename X1, typename X2, typename X3,
4610 typename X4, typename X5, typename X6>
4611 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4612 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4613 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4614 const P6& p6) {
4615 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4616 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4617 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> >
4618 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4619 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4620 }
4621
4622 template <typename R, typename P1, typename P2, typename P3, typename P4,
4623 typename P5, typename P6, typename A1, typename A2, typename A3,
4624 typename X1, typename X2, typename X3, typename X4, typename X5,
4625 typename X6>
4626 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4627 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3), const P1& p1,
4628 const P2& p2, const P3& p3, const P4& p4, const P5& p5, const P6& p6) {
4629 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4630 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4631 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> >
4632 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4633 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4634 }
4635
4636 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4637 template <typename R, typename T, typename U, typename P1, typename P2,
4638 typename P3, typename P4, typename P5, typename P6, typename A1,
4639 typename A2, typename A3, typename X1, typename X2, typename X3,
4640 typename X4, typename X5, typename X6>
4641 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4642 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4643 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4644 const P6& p6) {
4645 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4646 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3 ),
4647 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3 > >
4648 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4649 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4650 }
4651 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4652
4653 #if defined (OS_WIN)
4654 template <typename R, typename T, typename U, typename P1, typename P2,
4655 typename P3, typename P4, typename P5, typename P6, typename A1,
4656 typename A2, typename A3, typename X1, typename X2, typename X3,
4657 typename X4, typename X5, typename X6>
4658 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4659 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4660 A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4661 const P6& p6) {
4662 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4663 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4664 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> >
4665 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4666 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4667 }
4668
4669 template <typename R, typename P1, typename P2, typename P3, typename P4,
4670 typename P5, typename P6, typename A1, typename A2, typename A3,
4671 typename X1, typename X2, typename X3, typename X4, typename X5,
4672 typename X6>
4673 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4674 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4675 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4676 const P6& p6) {
4677 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4678 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4679 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3> >
4680 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4681 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4682 }
4683 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4684 template <typename R, typename T, typename U, typename P1, typename P2,
4685 typename P3, typename P4, typename P5, typename P6, typename A1,
4686 typename A2, typename A3, typename X1, typename X2, typename X3,
4687 typename X4, typename X5, typename X6>
4688 inline MutantFunctor<R, Tuple3<A1, A2, A3> >
4689 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4690 A3), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4691 const P6& p6) {
4692 MutantRunner<R, Tuple3<A1, A2, A3> >* t =
4693 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3),
4694 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple3<A1, A2, A3 > >
4695 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4696 return MutantFunctor<R, Tuple3<A1, A2, A3> >(t);
4697 }
4698 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4699 #endif // OS_WIN
4700
4701 // 6 - 4
4702 template <typename R, typename T, typename U, typename P1, typename P2,
4703 typename P3, typename P4, typename P5, typename P6, typename A1,
4704 typename A2, typename A3, typename A4, typename X1, typename X2,
4705 typename X3, typename X4, typename X5, typename X6>
4706 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4707 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4708 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4709 const P6& p6) {
4710 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4711 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4712 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> >
4713 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4714 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4715 }
4716
4717 template <typename R, typename P1, typename P2, typename P3, typename P4,
4718 typename P5, typename P6, typename A1, typename A2, typename A3,
4719 typename A4, typename X1, typename X2, typename X3, typename X4,
4720 typename X5, typename X6>
4721 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4722 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4723 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4724 const P6& p6) {
4725 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4726 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4727 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> >
4728 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4729 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4730 }
4731
4732 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4733 template <typename R, typename T, typename U, typename P1, typename P2,
4734 typename P3, typename P4, typename P5, typename P6, typename A1,
4735 typename A2, typename A3, typename A4, typename X1, typename X2,
4736 typename X3, typename X4, typename X5, typename X6>
4737 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4738 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4739 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4740 const P6& p6) {
4741 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4742 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3 , A4),
4743 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3 , A4> >
4744 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4745 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4746 }
4747 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4748
4749 #if defined (OS_WIN)
4750 template <typename R, typename T, typename U, typename P1, typename P2,
4751 typename P3, typename P4, typename P5, typename P6, typename A1,
4752 typename A2, typename A3, typename A4, typename X1, typename X2,
4753 typename X3, typename X4, typename X5, typename X6>
4754 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4755 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4756 A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4757 const P5& p5, const P6& p6) {
4758 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4759 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4 ),
4760 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> >
4761 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4762 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4763 }
4764
4765 template <typename R, typename P1, typename P2, typename P3, typename P4,
4766 typename P5, typename P6, typename A1, typename A2, typename A3,
4767 typename A4, typename X1, typename X2, typename X3, typename X4,
4768 typename X5, typename X6>
4769 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4770 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4771 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4772 const P6& p6) {
4773 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4774 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4775 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3, A4> >
4776 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4777 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4778 }
4779 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4780 template <typename R, typename T, typename U, typename P1, typename P2,
4781 typename P3, typename P4, typename P5, typename P6, typename A1,
4782 typename A2, typename A3, typename A4, typename X1, typename X2,
4783 typename X3, typename X4, typename X5, typename X6>
4784 inline MutantFunctor<R, Tuple4<A1, A2, A3, A4> >
4785 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4786 A3, A4), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4787 const P5& p5, const P6& p6) {
4788 MutantRunner<R, Tuple4<A1, A2, A3, A4> >* t =
4789 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4),
4790 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple4<A1, A2, A3 , A4> >
4791 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4792 return MutantFunctor<R, Tuple4<A1, A2, A3, A4> >(t);
4793 }
4794 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4795 #endif // OS_WIN
4796
4797 // 6 - 5
4798 template <typename R, typename T, typename U, typename P1, typename P2,
4799 typename P3, typename P4, typename P5, typename P6, typename A1,
4800 typename A2, typename A3, typename A4, typename A5, typename X1,
4801 typename X2, typename X3, typename X4, typename X5, typename X6>
4802 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4803 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4,
4804 A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4805 const P6& p6) {
4806 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4807 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5),
4808 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> >
4809 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4810 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4811 }
4812
4813 template <typename R, typename P1, typename P2, typename P3, typename P4,
4814 typename P5, typename P6, typename A1, typename A2, typename A3,
4815 typename A4, typename A5, typename X1, typename X2, typename X3,
4816 typename X4, typename X5, typename X6>
4817 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4818 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5),
4819 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4820 const P6& p6) {
4821 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4822 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5),
4823 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> >
4824 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4825 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4826 }
4827
4828 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4829 template <typename R, typename T, typename U, typename P1, typename P2,
4830 typename P3, typename P4, typename P5, typename P6, typename A1,
4831 typename A2, typename A3, typename A4, typename A5, typename X1,
4832 typename X2, typename X3, typename X4, typename X5, typename X6>
4833 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4834 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4,
4835 A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4836 const P6& p6) {
4837 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4838 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3 , A4, A5),
4839 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3 , A4, A5> >
4840 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4841 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4842 }
4843 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4844
4845 #if defined (OS_WIN)
4846 template <typename R, typename T, typename U, typename P1, typename P2,
4847 typename P3, typename P4, typename P5, typename P6, typename A1,
4848 typename A2, typename A3, typename A4, typename A5, typename X1,
4849 typename X2, typename X3, typename X4, typename X5, typename X6>
4850 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4851 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4852 A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4853 const P5& p5, const P6& p6) {
4854 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4855 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4 , A5),
4856 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> >
4857 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4858 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4859 }
4860
4861 template <typename R, typename P1, typename P2, typename P3, typename P4,
4862 typename P5, typename P6, typename A1, typename A2, typename A3,
4863 typename A4, typename A5, typename X1, typename X2, typename X3,
4864 typename X4, typename X5, typename X6>
4865 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4866 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4,
4867 A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4868 const P6& p6) {
4869 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4870 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5),
4871 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3, A4, A5> >
4872 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4873 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4874 }
4875 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4876 template <typename R, typename T, typename U, typename P1, typename P2,
4877 typename P3, typename P4, typename P5, typename P6, typename A1,
4878 typename A2, typename A3, typename A4, typename A5, typename X1,
4879 typename X2, typename X3, typename X4, typename X5, typename X6>
4880 inline MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >
4881 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4882 A3, A4, A5), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4883 const P5& p5, const P6& p6) {
4884 MutantRunner<R, Tuple5<A1, A2, A3, A4, A5> >* t =
4885 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5),
4886 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple5<A1, A2, A3 , A4, A5> >
4887 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4888 return MutantFunctor<R, Tuple5<A1, A2, A3, A4, A5> >(t);
4889 }
4890 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4891 #endif // OS_WIN
4892
4893 // 6 - 6
4894 template <typename R, typename T, typename U, typename P1, typename P2,
4895 typename P3, typename P4, typename P5, typename P6, typename A1,
4896 typename A2, typename A3, typename A4, typename A5, typename A6,
4897 typename X1, typename X2, typename X3, typename X4, typename X5,
4898 typename X6>
4899 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4900 CreateFunctor(T* obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5,
4901 A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4902 const P6& p6) {
4903 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4904 new Mutant<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6),
4905 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> >
4906 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4907 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4908 }
4909
4910 template <typename R, typename P1, typename P2, typename P3, typename P4,
4911 typename P5, typename P6, typename A1, typename A2, typename A3,
4912 typename A4, typename A5, typename A6, typename X1, typename X2,
4913 typename X3, typename X4, typename X5, typename X6>
4914 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4915 CreateFunctor(R (*function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6),
4916 const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4917 const P6& p6) {
4918 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4919 new MutantFunction<R, R (*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6 ),
4920 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> >
4921 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4922 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4923 }
4924
4925 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4926 template <typename R, typename T, typename U, typename P1, typename P2,
4927 typename P3, typename P4, typename P5, typename P6, typename A1,
4928 typename A2, typename A3, typename A4, typename A5, typename A6,
4929 typename X1, typename X2, typename X3, typename X4, typename X5,
4930 typename X6>
4931 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4932 CreateFunctor(T** obj, R (U::*method)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5 ,
4933 A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4, const P5& p5,
4934 const P6& p6) {
4935 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4936 new MutantLateObjectBind<R, T, R (U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3 , A4, A5, A6),
4937 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3 , A4, A5, A6> >
4938 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4939 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4940 }
4941 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4942
4943 #if defined (OS_WIN)
4944 template <typename R, typename T, typename U, typename P1, typename P2,
4945 typename P3, typename P4, typename P5, typename P6, typename A1,
4946 typename A2, typename A3, typename A4, typename A5, typename A6,
4947 typename X1, typename X2, typename X3, typename X4, typename X5,
4948 typename X6>
4949 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4950 CreateFunctor(T* obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4951 A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4952 const P5& p5, const P6& p6) {
4953 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4954 new Mutant<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4 , A5, A6),
4955 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> >
4956 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4957 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4958 }
4959
4960 template <typename R, typename P1, typename P2, typename P3, typename P4,
4961 typename P5, typename P6, typename A1, typename A2, typename A3,
4962 typename A4, typename A5, typename A6, typename X1, typename X2,
4963 typename X3, typename X4, typename X5, typename X6>
4964 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4965 CreateFunctor(R (__stdcall *function)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4,
4966 A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4967 const P5& p5, const P6& p6) {
4968 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4969 new MutantFunction<R, R (__stdcall *)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6),
4970 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3, A4, A5, A6> >
4971 (function, MakeTuple(p1, p2, p3, p4, p5, p6));
4972 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4973 }
4974 #ifdef GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4975 template <typename R, typename T, typename U, typename P1, typename P2,
4976 typename P3, typename P4, typename P5, typename P6, typename A1,
4977 typename A2, typename A3, typename A4, typename A5, typename A6,
4978 typename X1, typename X2, typename X3, typename X4, typename X5,
4979 typename X6>
4980 inline MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >
4981 CreateFunctor(T** obj, R (__stdcall U::*method)(X1, X2, X3, X4, X5, X6, A1, A2,
4982 A3, A4, A5, A6), const P1& p1, const P2& p2, const P3& p3, const P4& p4,
4983 const P5& p5, const P6& p6) {
4984 MutantRunner<R, Tuple6<A1, A2, A3, A4, A5, A6> >* t =
4985 new MutantLateObjectBind<R, T, R (__stdcall U::*)(X1, X2, X3, X4, X5, X6, A1, A2, A3, A4, A5, A6),
4986 Tuple6<P1, P2, P3, P4, P5, P6>, Tuple6<A1, A2, A3 , A4, A5, A6> >
4987 (obj, method, MakeTuple(p1, p2, p3, p4, p5, p6));
4988 return MutantFunctor<R, Tuple6<A1, A2, A3, A4, A5, A6> >(t);
4989 }
4990 #endif // GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
4991 #endif // OS_WIN
4992
2503 } // namespace testing 4993 } // namespace testing
2504 4994
2505 #endif // TESTING_GMOCK_MUTANT_H_ 4995 #endif // TESTING_GMOCK_MUTANT_H_
OLDNEW
« testing/generate_gmock_mutant.py ('K') | « testing/generate_gmock_mutant.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698