41 #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
42 #define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_
47 #include "gmock/gmock-actions.h"
48 #include "gmock/internal/gmock-port.h"
70 template <
typename Result,
class Impl>
80 template <
typename A0>
82 return impl->template gmock_PerformImpl<A0>(
args, std::get<0>(
args),
88 template <
typename A0,
typename A1>
90 return impl->template gmock_PerformImpl<A0, A1>(
args, std::get<0>(
args),
96 template <
typename A0,
typename A1,
typename A2>
98 return impl->template gmock_PerformImpl<A0, A1, A2>(
args,
104 template <
typename A0,
typename A1,
typename A2,
typename A3>
106 return impl->template gmock_PerformImpl<A0, A1, A2, A3>(
args,
107 std::get<0>(
args), std::get<1>(
args), std::get<2>(
args),
112 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4>
115 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4>(
args,
116 std::get<0>(
args), std::get<1>(
args), std::get<2>(
args),
121 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4,
125 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5>(
args,
126 std::get<0>(
args), std::get<1>(
args), std::get<2>(
args),
127 std::get<3>(
args), std::get<4>(
args), std::get<5>(
args),
131 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4,
132 typename A5,
typename A6>
133 static Result Perform(Impl* impl, const ::std::tuple<A0, A1, A2, A3, A4, A5,
135 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6>(
args,
136 std::get<0>(
args), std::get<1>(
args), std::get<2>(
args),
137 std::get<3>(
args), std::get<4>(
args), std::get<5>(
args),
141 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4,
142 typename A5,
typename A6,
typename A7>
143 static Result Perform(Impl* impl, const ::std::tuple<A0, A1, A2, A3, A4, A5,
145 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6,
147 std::get<3>(
args), std::get<4>(
args), std::get<5>(
args),
151 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4,
152 typename A5,
typename A6,
typename A7,
typename A8>
153 static Result Perform(Impl* impl, const ::std::tuple<A0, A1, A2, A3, A4, A5,
155 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6, A7,
157 std::get<3>(
args), std::get<4>(
args), std::get<5>(
args),
158 std::get<6>(
args), std::get<7>(
args), std::get<8>(
args),
162 template <
typename A0,
typename A1,
typename A2,
typename A3,
typename A4,
163 typename A5,
typename A6,
typename A7,
typename A8,
typename A9>
164 static Result Perform(Impl* impl, const ::std::tuple<A0, A1, A2, A3, A4, A5,
165 A6, A7, A8, A9>&
args) {
166 return impl->template gmock_PerformImpl<A0, A1, A2, A3, A4, A5, A6, A7, A8,
168 std::get<3>(
args), std::get<4>(
args), std::get<5>(
args),
169 std::get<6>(
args), std::get<7>(
args), std::get<8>(
args),
273 #define GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_\
274 const args_type& args GTEST_ATTRIBUTE_UNUSED_, \
275 const arg0_type& arg0 GTEST_ATTRIBUTE_UNUSED_, \
276 const arg1_type& arg1 GTEST_ATTRIBUTE_UNUSED_, \
277 const arg2_type& arg2 GTEST_ATTRIBUTE_UNUSED_, \
278 const arg3_type& arg3 GTEST_ATTRIBUTE_UNUSED_, \
279 const arg4_type& arg4 GTEST_ATTRIBUTE_UNUSED_, \
280 const arg5_type& arg5 GTEST_ATTRIBUTE_UNUSED_, \
281 const arg6_type& arg6 GTEST_ATTRIBUTE_UNUSED_, \
282 const arg7_type& arg7 GTEST_ATTRIBUTE_UNUSED_, \
283 const arg8_type& arg8 GTEST_ATTRIBUTE_UNUSED_, \
284 const arg9_type& arg9 GTEST_ATTRIBUTE_UNUSED_
368 #define GMOCK_INTERNAL_DECL_HAS_1_TEMPLATE_PARAMS(kind0, name0) kind0 name0
369 #define GMOCK_INTERNAL_DECL_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
370 name1) kind0 name0, kind1 name1
371 #define GMOCK_INTERNAL_DECL_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
372 kind2, name2) kind0 name0, kind1 name1, kind2 name2
373 #define GMOCK_INTERNAL_DECL_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
374 kind2, name2, kind3, name3) kind0 name0, kind1 name1, kind2 name2, \
376 #define GMOCK_INTERNAL_DECL_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
377 kind2, name2, kind3, name3, kind4, name4) kind0 name0, kind1 name1, \
378 kind2 name2, kind3 name3, kind4 name4
379 #define GMOCK_INTERNAL_DECL_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
380 kind2, name2, kind3, name3, kind4, name4, kind5, name5) kind0 name0, \
381 kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5
382 #define GMOCK_INTERNAL_DECL_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
383 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
384 name6) kind0 name0, kind1 name1, kind2 name2, kind3 name3, kind4 name4, \
385 kind5 name5, kind6 name6
386 #define GMOCK_INTERNAL_DECL_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
387 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
388 kind7, name7) kind0 name0, kind1 name1, kind2 name2, kind3 name3, \
389 kind4 name4, kind5 name5, kind6 name6, kind7 name7
390 #define GMOCK_INTERNAL_DECL_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
391 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
392 kind7, name7, kind8, name8) kind0 name0, kind1 name1, kind2 name2, \
393 kind3 name3, kind4 name4, kind5 name5, kind6 name6, kind7 name7, \
395 #define GMOCK_INTERNAL_DECL_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
396 name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
397 name6, kind7, name7, kind8, name8, kind9, name9) kind0 name0, \
398 kind1 name1, kind2 name2, kind3 name3, kind4 name4, kind5 name5, \
399 kind6 name6, kind7 name7, kind8 name8, kind9 name9
402 #define GMOCK_INTERNAL_LIST_HAS_1_TEMPLATE_PARAMS(kind0, name0) name0
403 #define GMOCK_INTERNAL_LIST_HAS_2_TEMPLATE_PARAMS(kind0, name0, kind1, \
405 #define GMOCK_INTERNAL_LIST_HAS_3_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
406 kind2, name2) name0, name1, name2
407 #define GMOCK_INTERNAL_LIST_HAS_4_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
408 kind2, name2, kind3, name3) name0, name1, name2, name3
409 #define GMOCK_INTERNAL_LIST_HAS_5_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
410 kind2, name2, kind3, name3, kind4, name4) name0, name1, name2, name3, \
412 #define GMOCK_INTERNAL_LIST_HAS_6_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
413 kind2, name2, kind3, name3, kind4, name4, kind5, name5) name0, name1, \
414 name2, name3, name4, name5
415 #define GMOCK_INTERNAL_LIST_HAS_7_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
416 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
417 name6) name0, name1, name2, name3, name4, name5, name6
418 #define GMOCK_INTERNAL_LIST_HAS_8_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
419 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
420 kind7, name7) name0, name1, name2, name3, name4, name5, name6, name7
421 #define GMOCK_INTERNAL_LIST_HAS_9_TEMPLATE_PARAMS(kind0, name0, kind1, name1, \
422 kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, name6, \
423 kind7, name7, kind8, name8) name0, name1, name2, name3, name4, name5, \
425 #define GMOCK_INTERNAL_LIST_HAS_10_TEMPLATE_PARAMS(kind0, name0, kind1, \
426 name1, kind2, name2, kind3, name3, kind4, name4, kind5, name5, kind6, \
427 name6, kind7, name7, kind8, name8, kind9, name9) name0, name1, name2, \
428 name3, name4, name5, name6, name7, name8, name9
431 #define GMOCK_INTERNAL_DECL_TYPE_AND_0_VALUE_PARAMS()
432 #define GMOCK_INTERNAL_DECL_TYPE_AND_1_VALUE_PARAMS(p0) , typename p0##_type
433 #define GMOCK_INTERNAL_DECL_TYPE_AND_2_VALUE_PARAMS(p0, p1) , \
434 typename p0##_type, typename p1##_type
435 #define GMOCK_INTERNAL_DECL_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , \
436 typename p0##_type, typename p1##_type, typename p2##_type
437 #define GMOCK_INTERNAL_DECL_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
438 typename p0##_type, typename p1##_type, typename p2##_type, \
440 #define GMOCK_INTERNAL_DECL_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
441 typename p0##_type, typename p1##_type, typename p2##_type, \
442 typename p3##_type, typename p4##_type
443 #define GMOCK_INTERNAL_DECL_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
444 typename p0##_type, typename p1##_type, typename p2##_type, \
445 typename p3##_type, typename p4##_type, typename p5##_type
446 #define GMOCK_INTERNAL_DECL_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
447 p6) , typename p0##_type, typename p1##_type, typename p2##_type, \
448 typename p3##_type, typename p4##_type, typename p5##_type, \
450 #define GMOCK_INTERNAL_DECL_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
451 p6, p7) , typename p0##_type, typename p1##_type, typename p2##_type, \
452 typename p3##_type, typename p4##_type, typename p5##_type, \
453 typename p6##_type, typename p7##_type
454 #define GMOCK_INTERNAL_DECL_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
455 p6, p7, p8) , typename p0##_type, typename p1##_type, typename p2##_type, \
456 typename p3##_type, typename p4##_type, typename p5##_type, \
457 typename p6##_type, typename p7##_type, typename p8##_type
458 #define GMOCK_INTERNAL_DECL_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
459 p6, p7, p8, p9) , typename p0##_type, typename p1##_type, \
460 typename p2##_type, typename p3##_type, typename p4##_type, \
461 typename p5##_type, typename p6##_type, typename p7##_type, \
462 typename p8##_type, typename p9##_type
465 #define GMOCK_INTERNAL_INIT_AND_0_VALUE_PARAMS()\
467 #define GMOCK_INTERNAL_INIT_AND_1_VALUE_PARAMS(p0)\
468 (p0##_type gmock_p0) : p0(::std::move(gmock_p0))
469 #define GMOCK_INTERNAL_INIT_AND_2_VALUE_PARAMS(p0, p1)\
470 (p0##_type gmock_p0, p1##_type gmock_p1) : p0(::std::move(gmock_p0)), \
471 p1(::std::move(gmock_p1))
472 #define GMOCK_INTERNAL_INIT_AND_3_VALUE_PARAMS(p0, p1, p2)\
473 (p0##_type gmock_p0, p1##_type gmock_p1, \
474 p2##_type gmock_p2) : p0(::std::move(gmock_p0)), \
475 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2))
476 #define GMOCK_INTERNAL_INIT_AND_4_VALUE_PARAMS(p0, p1, p2, p3)\
477 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
478 p3##_type gmock_p3) : p0(::std::move(gmock_p0)), \
479 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
480 p3(::std::move(gmock_p3))
481 #define GMOCK_INTERNAL_INIT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)\
482 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
483 p3##_type gmock_p3, p4##_type gmock_p4) : p0(::std::move(gmock_p0)), \
484 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
485 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4))
486 #define GMOCK_INTERNAL_INIT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)\
487 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
488 p3##_type gmock_p3, p4##_type gmock_p4, \
489 p5##_type gmock_p5) : p0(::std::move(gmock_p0)), \
490 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
491 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
492 p5(::std::move(gmock_p5))
493 #define GMOCK_INTERNAL_INIT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)\
494 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
495 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
496 p6##_type gmock_p6) : p0(::std::move(gmock_p0)), \
497 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
498 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
499 p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6))
500 #define GMOCK_INTERNAL_INIT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)\
501 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
502 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
503 p6##_type gmock_p6, p7##_type gmock_p7) : p0(::std::move(gmock_p0)), \
504 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
505 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
506 p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
507 p7(::std::move(gmock_p7))
508 #define GMOCK_INTERNAL_INIT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
510 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
511 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
512 p6##_type gmock_p6, p7##_type gmock_p7, \
513 p8##_type gmock_p8) : p0(::std::move(gmock_p0)), \
514 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
515 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
516 p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
517 p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8))
518 #define GMOCK_INTERNAL_INIT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
520 (p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
521 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
522 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
523 p9##_type gmock_p9) : p0(::std::move(gmock_p0)), \
524 p1(::std::move(gmock_p1)), p2(::std::move(gmock_p2)), \
525 p3(::std::move(gmock_p3)), p4(::std::move(gmock_p4)), \
526 p5(::std::move(gmock_p5)), p6(::std::move(gmock_p6)), \
527 p7(::std::move(gmock_p7)), p8(::std::move(gmock_p8)), \
528 p9(::std::move(gmock_p9))
531 #define GMOCK_INTERNAL_DEFN_AND_0_VALUE_PARAMS()
532 #define GMOCK_INTERNAL_DEFN_AND_1_VALUE_PARAMS(p0) p0##_type p0;
533 #define GMOCK_INTERNAL_DEFN_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0; \
535 #define GMOCK_INTERNAL_DEFN_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0; \
536 p1##_type p1; p2##_type p2;
537 #define GMOCK_INTERNAL_DEFN_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0; \
538 p1##_type p1; p2##_type p2; p3##_type p3;
539 #define GMOCK_INTERNAL_DEFN_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
540 p4) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4;
541 #define GMOCK_INTERNAL_DEFN_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
542 p5) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
544 #define GMOCK_INTERNAL_DEFN_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
545 p6) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
546 p5##_type p5; p6##_type p6;
547 #define GMOCK_INTERNAL_DEFN_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
548 p7) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; p4##_type p4; \
549 p5##_type p5; p6##_type p6; p7##_type p7;
550 #define GMOCK_INTERNAL_DEFN_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
551 p7, p8) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
552 p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8;
553 #define GMOCK_INTERNAL_DEFN_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
554 p7, p8, p9) p0##_type p0; p1##_type p1; p2##_type p2; p3##_type p3; \
555 p4##_type p4; p5##_type p5; p6##_type p6; p7##_type p7; p8##_type p8; \
559 #define GMOCK_INTERNAL_LIST_AND_0_VALUE_PARAMS()
560 #define GMOCK_INTERNAL_LIST_AND_1_VALUE_PARAMS(p0) p0
561 #define GMOCK_INTERNAL_LIST_AND_2_VALUE_PARAMS(p0, p1) p0, p1
562 #define GMOCK_INTERNAL_LIST_AND_3_VALUE_PARAMS(p0, p1, p2) p0, p1, p2
563 #define GMOCK_INTERNAL_LIST_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0, p1, p2, p3
564 #define GMOCK_INTERNAL_LIST_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) p0, p1, \
566 #define GMOCK_INTERNAL_LIST_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) p0, \
568 #define GMOCK_INTERNAL_LIST_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
569 p6) p0, p1, p2, p3, p4, p5, p6
570 #define GMOCK_INTERNAL_LIST_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
571 p7) p0, p1, p2, p3, p4, p5, p6, p7
572 #define GMOCK_INTERNAL_LIST_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
573 p7, p8) p0, p1, p2, p3, p4, p5, p6, p7, p8
574 #define GMOCK_INTERNAL_LIST_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
575 p7, p8, p9) p0, p1, p2, p3, p4, p5, p6, p7, p8, p9
578 #define GMOCK_INTERNAL_LIST_TYPE_AND_0_VALUE_PARAMS()
579 #define GMOCK_INTERNAL_LIST_TYPE_AND_1_VALUE_PARAMS(p0) , p0##_type
580 #define GMOCK_INTERNAL_LIST_TYPE_AND_2_VALUE_PARAMS(p0, p1) , p0##_type, \
582 #define GMOCK_INTERNAL_LIST_TYPE_AND_3_VALUE_PARAMS(p0, p1, p2) , p0##_type, \
584 #define GMOCK_INTERNAL_LIST_TYPE_AND_4_VALUE_PARAMS(p0, p1, p2, p3) , \
585 p0##_type, p1##_type, p2##_type, p3##_type
586 #define GMOCK_INTERNAL_LIST_TYPE_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) , \
587 p0##_type, p1##_type, p2##_type, p3##_type, p4##_type
588 #define GMOCK_INTERNAL_LIST_TYPE_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) , \
589 p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type
590 #define GMOCK_INTERNAL_LIST_TYPE_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
591 p6) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, p5##_type, \
593 #define GMOCK_INTERNAL_LIST_TYPE_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
594 p6, p7) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
595 p5##_type, p6##_type, p7##_type
596 #define GMOCK_INTERNAL_LIST_TYPE_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
597 p6, p7, p8) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
598 p5##_type, p6##_type, p7##_type, p8##_type
599 #define GMOCK_INTERNAL_LIST_TYPE_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
600 p6, p7, p8, p9) , p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
601 p5##_type, p6##_type, p7##_type, p8##_type, p9##_type
604 #define GMOCK_INTERNAL_DECL_AND_0_VALUE_PARAMS()
605 #define GMOCK_INTERNAL_DECL_AND_1_VALUE_PARAMS(p0) p0##_type p0
606 #define GMOCK_INTERNAL_DECL_AND_2_VALUE_PARAMS(p0, p1) p0##_type p0, \
608 #define GMOCK_INTERNAL_DECL_AND_3_VALUE_PARAMS(p0, p1, p2) p0##_type p0, \
609 p1##_type p1, p2##_type p2
610 #define GMOCK_INTERNAL_DECL_AND_4_VALUE_PARAMS(p0, p1, p2, p3) p0##_type p0, \
611 p1##_type p1, p2##_type p2, p3##_type p3
612 #define GMOCK_INTERNAL_DECL_AND_5_VALUE_PARAMS(p0, p1, p2, p3, \
613 p4) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4
614 #define GMOCK_INTERNAL_DECL_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, \
615 p5) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
617 #define GMOCK_INTERNAL_DECL_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, \
618 p6) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
619 p5##_type p5, p6##_type p6
620 #define GMOCK_INTERNAL_DECL_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
621 p7) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, \
622 p5##_type p5, p6##_type p6, p7##_type p7
623 #define GMOCK_INTERNAL_DECL_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
624 p7, p8) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
625 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8
626 #define GMOCK_INTERNAL_DECL_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
627 p7, p8, p9) p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
628 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
632 #define GMOCK_INTERNAL_COUNT_AND_0_VALUE_PARAMS()
633 #define GMOCK_INTERNAL_COUNT_AND_1_VALUE_PARAMS(p0) P
634 #define GMOCK_INTERNAL_COUNT_AND_2_VALUE_PARAMS(p0, p1) P2
635 #define GMOCK_INTERNAL_COUNT_AND_3_VALUE_PARAMS(p0, p1, p2) P3
636 #define GMOCK_INTERNAL_COUNT_AND_4_VALUE_PARAMS(p0, p1, p2, p3) P4
637 #define GMOCK_INTERNAL_COUNT_AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4) P5
638 #define GMOCK_INTERNAL_COUNT_AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5) P6
639 #define GMOCK_INTERNAL_COUNT_AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6) P7
640 #define GMOCK_INTERNAL_COUNT_AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
642 #define GMOCK_INTERNAL_COUNT_AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
644 #define GMOCK_INTERNAL_COUNT_AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, \
648 #define GMOCK_ACTION_CLASS_(name, value_params)\
649 GTEST_CONCAT_TOKEN_(name##Action, GMOCK_INTERNAL_COUNT_##value_params)
651 #define ACTION_TEMPLATE(name, template_params, value_params)\
652 template <GMOCK_INTERNAL_DECL_##template_params\
653 GMOCK_INTERNAL_DECL_TYPE_##value_params>\
654 class GMOCK_ACTION_CLASS_(name, value_params) {\
656 explicit GMOCK_ACTION_CLASS_(name, value_params)\
657 GMOCK_INTERNAL_INIT_##value_params {}\
658 template <typename F>\
659 class gmock_Impl : public ::testing::ActionInterface<F> {\
661 typedef F function_type;\
662 typedef typename ::testing::internal::Function<F>::Result return_type;\
663 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
665 explicit gmock_Impl GMOCK_INTERNAL_INIT_##value_params {}\
666 virtual return_type Perform(const args_type& args) {\
667 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
668 Perform(this, args);\
670 template <typename arg0_type, typename arg1_type, typename arg2_type, \
671 typename arg3_type, typename arg4_type, typename arg5_type, \
672 typename arg6_type, typename arg7_type, typename arg8_type, \
674 return_type gmock_PerformImpl(const args_type& args, \
675 const arg0_type& arg0, const arg1_type& arg1, \
676 const arg2_type& arg2, const arg3_type& arg3, \
677 const arg4_type& arg4, const arg5_type& arg5, \
678 const arg6_type& arg6, const arg7_type& arg7, \
679 const arg8_type& arg8, const arg9_type& arg9) const;\
680 GMOCK_INTERNAL_DEFN_##value_params\
682 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
684 template <typename F> operator ::testing::Action<F>() const {\
685 return ::testing::Action<F>(\
686 new gmock_Impl<F>(GMOCK_INTERNAL_LIST_##value_params));\
688 GMOCK_INTERNAL_DEFN_##value_params\
690 GTEST_DISALLOW_ASSIGN_(GMOCK_ACTION_CLASS_(name, value_params));\
692 template <GMOCK_INTERNAL_DECL_##template_params\
693 GMOCK_INTERNAL_DECL_TYPE_##value_params>\
694 inline GMOCK_ACTION_CLASS_(name, value_params)<\
695 GMOCK_INTERNAL_LIST_##template_params\
696 GMOCK_INTERNAL_LIST_TYPE_##value_params> name(\
697 GMOCK_INTERNAL_DECL_##value_params) {\
698 return GMOCK_ACTION_CLASS_(name, value_params)<\
699 GMOCK_INTERNAL_LIST_##template_params\
700 GMOCK_INTERNAL_LIST_TYPE_##value_params>(\
701 GMOCK_INTERNAL_LIST_##value_params);\
703 template <GMOCK_INTERNAL_DECL_##template_params\
704 GMOCK_INTERNAL_DECL_TYPE_##value_params>\
705 template <typename F>\
706 template <typename arg0_type, typename arg1_type, typename arg2_type, \
707 typename arg3_type, typename arg4_type, typename arg5_type, \
708 typename arg6_type, typename arg7_type, typename arg8_type, \
710 typename ::testing::internal::Function<F>::Result\
711 GMOCK_ACTION_CLASS_(name, value_params)<\
712 GMOCK_INTERNAL_LIST_##template_params\
713 GMOCK_INTERNAL_LIST_TYPE_##value_params>::gmock_Impl<F>::\
715 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
717 #define ACTION(name)\
718 class name##Action {\
721 template <typename F>\
722 class gmock_Impl : public ::testing::ActionInterface<F> {\
724 typedef F function_type;\
725 typedef typename ::testing::internal::Function<F>::Result return_type;\
726 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
729 virtual return_type Perform(const args_type& args) {\
730 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
731 Perform(this, args);\
733 template <typename arg0_type, typename arg1_type, typename arg2_type, \
734 typename arg3_type, typename arg4_type, typename arg5_type, \
735 typename arg6_type, typename arg7_type, typename arg8_type, \
737 return_type gmock_PerformImpl(const args_type& args, \
738 const arg0_type& arg0, const arg1_type& arg1, \
739 const arg2_type& arg2, const arg3_type& arg3, \
740 const arg4_type& arg4, const arg5_type& arg5, \
741 const arg6_type& arg6, const arg7_type& arg7, \
742 const arg8_type& arg8, const arg9_type& arg9) const;\
744 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
746 template <typename F> operator ::testing::Action<F>() const {\
747 return ::testing::Action<F>(new gmock_Impl<F>());\
750 GTEST_DISALLOW_ASSIGN_(name##Action);\
752 inline name##Action name() {\
753 return name##Action();\
755 template <typename F>\
756 template <typename arg0_type, typename arg1_type, typename arg2_type, \
757 typename arg3_type, typename arg4_type, typename arg5_type, \
758 typename arg6_type, typename arg7_type, typename arg8_type, \
760 typename ::testing::internal::Function<F>::Result\
761 name##Action::gmock_Impl<F>::gmock_PerformImpl(\
762 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
764 #define ACTION_P(name, p0)\
765 template <typename p0##_type>\
766 class name##ActionP {\
768 explicit name##ActionP(p0##_type gmock_p0) : \
769 p0(::std::forward<p0##_type>(gmock_p0)) {}\
770 template <typename F>\
771 class gmock_Impl : public ::testing::ActionInterface<F> {\
773 typedef F function_type;\
774 typedef typename ::testing::internal::Function<F>::Result return_type;\
775 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
777 explicit gmock_Impl(p0##_type gmock_p0) : \
778 p0(::std::forward<p0##_type>(gmock_p0)) {}\
779 virtual return_type Perform(const args_type& args) {\
780 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
781 Perform(this, args);\
783 template <typename arg0_type, typename arg1_type, typename arg2_type, \
784 typename arg3_type, typename arg4_type, typename arg5_type, \
785 typename arg6_type, typename arg7_type, typename arg8_type, \
787 return_type gmock_PerformImpl(const args_type& args, \
788 const arg0_type& arg0, const arg1_type& arg1, \
789 const arg2_type& arg2, const arg3_type& arg3, \
790 const arg4_type& arg4, const arg5_type& arg5, \
791 const arg6_type& arg6, const arg7_type& arg7, \
792 const arg8_type& arg8, const arg9_type& arg9) const;\
795 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
797 template <typename F> operator ::testing::Action<F>() const {\
798 return ::testing::Action<F>(new gmock_Impl<F>(p0));\
802 GTEST_DISALLOW_ASSIGN_(name##ActionP);\
804 template <typename p0##_type>\
805 inline name##ActionP<p0##_type> name(p0##_type p0) {\
806 return name##ActionP<p0##_type>(p0);\
808 template <typename p0##_type>\
809 template <typename F>\
810 template <typename arg0_type, typename arg1_type, typename arg2_type, \
811 typename arg3_type, typename arg4_type, typename arg5_type, \
812 typename arg6_type, typename arg7_type, typename arg8_type, \
814 typename ::testing::internal::Function<F>::Result\
815 name##ActionP<p0##_type>::gmock_Impl<F>::gmock_PerformImpl(\
816 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
818 #define ACTION_P2(name, p0, p1)\
819 template <typename p0##_type, typename p1##_type>\
820 class name##ActionP2 {\
822 name##ActionP2(p0##_type gmock_p0, \
823 p1##_type gmock_p1) : p0(::std::forward<p0##_type>(gmock_p0)), \
824 p1(::std::forward<p1##_type>(gmock_p1)) {}\
825 template <typename F>\
826 class gmock_Impl : public ::testing::ActionInterface<F> {\
828 typedef F function_type;\
829 typedef typename ::testing::internal::Function<F>::Result return_type;\
830 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
832 gmock_Impl(p0##_type gmock_p0, \
833 p1##_type gmock_p1) : p0(::std::forward<p0##_type>(gmock_p0)), \
834 p1(::std::forward<p1##_type>(gmock_p1)) {}\
835 virtual return_type Perform(const args_type& args) {\
836 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
837 Perform(this, args);\
839 template <typename arg0_type, typename arg1_type, typename arg2_type, \
840 typename arg3_type, typename arg4_type, typename arg5_type, \
841 typename arg6_type, typename arg7_type, typename arg8_type, \
843 return_type gmock_PerformImpl(const args_type& args, \
844 const arg0_type& arg0, const arg1_type& arg1, \
845 const arg2_type& arg2, const arg3_type& arg3, \
846 const arg4_type& arg4, const arg5_type& arg5, \
847 const arg6_type& arg6, const arg7_type& arg7, \
848 const arg8_type& arg8, const arg9_type& arg9) const;\
852 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
854 template <typename F> operator ::testing::Action<F>() const {\
855 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1));\
860 GTEST_DISALLOW_ASSIGN_(name##ActionP2);\
862 template <typename p0##_type, typename p1##_type>\
863 inline name##ActionP2<p0##_type, p1##_type> name(p0##_type p0, \
865 return name##ActionP2<p0##_type, p1##_type>(p0, p1);\
867 template <typename p0##_type, typename p1##_type>\
868 template <typename F>\
869 template <typename arg0_type, typename arg1_type, typename arg2_type, \
870 typename arg3_type, typename arg4_type, typename arg5_type, \
871 typename arg6_type, typename arg7_type, typename arg8_type, \
873 typename ::testing::internal::Function<F>::Result\
874 name##ActionP2<p0##_type, p1##_type>::gmock_Impl<F>::gmock_PerformImpl(\
875 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
877 #define ACTION_P3(name, p0, p1, p2)\
878 template <typename p0##_type, typename p1##_type, typename p2##_type>\
879 class name##ActionP3 {\
881 name##ActionP3(p0##_type gmock_p0, p1##_type gmock_p1, \
882 p2##_type gmock_p2) : p0(::std::forward<p0##_type>(gmock_p0)), \
883 p1(::std::forward<p1##_type>(gmock_p1)), \
884 p2(::std::forward<p2##_type>(gmock_p2)) {}\
885 template <typename F>\
886 class gmock_Impl : public ::testing::ActionInterface<F> {\
888 typedef F function_type;\
889 typedef typename ::testing::internal::Function<F>::Result return_type;\
890 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
892 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, \
893 p2##_type gmock_p2) : p0(::std::forward<p0##_type>(gmock_p0)), \
894 p1(::std::forward<p1##_type>(gmock_p1)), \
895 p2(::std::forward<p2##_type>(gmock_p2)) {}\
896 virtual return_type Perform(const args_type& args) {\
897 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
898 Perform(this, args);\
900 template <typename arg0_type, typename arg1_type, typename arg2_type, \
901 typename arg3_type, typename arg4_type, typename arg5_type, \
902 typename arg6_type, typename arg7_type, typename arg8_type, \
904 return_type gmock_PerformImpl(const args_type& args, \
905 const arg0_type& arg0, const arg1_type& arg1, \
906 const arg2_type& arg2, const arg3_type& arg3, \
907 const arg4_type& arg4, const arg5_type& arg5, \
908 const arg6_type& arg6, const arg7_type& arg7, \
909 const arg8_type& arg8, const arg9_type& arg9) const;\
914 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
916 template <typename F> operator ::testing::Action<F>() const {\
917 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2));\
923 GTEST_DISALLOW_ASSIGN_(name##ActionP3);\
925 template <typename p0##_type, typename p1##_type, typename p2##_type>\
926 inline name##ActionP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \
927 p1##_type p1, p2##_type p2) {\
928 return name##ActionP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\
930 template <typename p0##_type, typename p1##_type, typename p2##_type>\
931 template <typename F>\
932 template <typename arg0_type, typename arg1_type, typename arg2_type, \
933 typename arg3_type, typename arg4_type, typename arg5_type, \
934 typename arg6_type, typename arg7_type, typename arg8_type, \
936 typename ::testing::internal::Function<F>::Result\
937 name##ActionP3<p0##_type, p1##_type, \
938 p2##_type>::gmock_Impl<F>::gmock_PerformImpl(\
939 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
941 #define ACTION_P4(name, p0, p1, p2, p3)\
942 template <typename p0##_type, typename p1##_type, typename p2##_type, \
944 class name##ActionP4 {\
946 name##ActionP4(p0##_type gmock_p0, p1##_type gmock_p1, \
947 p2##_type gmock_p2, \
948 p3##_type gmock_p3) : p0(::std::forward<p0##_type>(gmock_p0)), \
949 p1(::std::forward<p1##_type>(gmock_p1)), \
950 p2(::std::forward<p2##_type>(gmock_p2)), \
951 p3(::std::forward<p3##_type>(gmock_p3)) {}\
952 template <typename F>\
953 class gmock_Impl : public ::testing::ActionInterface<F> {\
955 typedef F function_type;\
956 typedef typename ::testing::internal::Function<F>::Result return_type;\
957 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
959 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
960 p3##_type gmock_p3) : p0(::std::forward<p0##_type>(gmock_p0)), \
961 p1(::std::forward<p1##_type>(gmock_p1)), \
962 p2(::std::forward<p2##_type>(gmock_p2)), \
963 p3(::std::forward<p3##_type>(gmock_p3)) {}\
964 virtual return_type Perform(const args_type& args) {\
965 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
966 Perform(this, args);\
968 template <typename arg0_type, typename arg1_type, typename arg2_type, \
969 typename arg3_type, typename arg4_type, typename arg5_type, \
970 typename arg6_type, typename arg7_type, typename arg8_type, \
972 return_type gmock_PerformImpl(const args_type& args, \
973 const arg0_type& arg0, const arg1_type& arg1, \
974 const arg2_type& arg2, const arg3_type& arg3, \
975 const arg4_type& arg4, const arg5_type& arg5, \
976 const arg6_type& arg6, const arg7_type& arg7, \
977 const arg8_type& arg8, const arg9_type& arg9) const;\
983 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
985 template <typename F> operator ::testing::Action<F>() const {\
986 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3));\
993 GTEST_DISALLOW_ASSIGN_(name##ActionP4);\
995 template <typename p0##_type, typename p1##_type, typename p2##_type, \
997 inline name##ActionP4<p0##_type, p1##_type, p2##_type, \
998 p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
1000 return name##ActionP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, p1, \
1003 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1004 typename p3##_type>\
1005 template <typename F>\
1006 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1007 typename arg3_type, typename arg4_type, typename arg5_type, \
1008 typename arg6_type, typename arg7_type, typename arg8_type, \
1009 typename arg9_type>\
1010 typename ::testing::internal::Function<F>::Result\
1011 name##ActionP4<p0##_type, p1##_type, p2##_type, \
1012 p3##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1013 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1015 #define ACTION_P5(name, p0, p1, p2, p3, p4)\
1016 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1017 typename p3##_type, typename p4##_type>\
1018 class name##ActionP5 {\
1020 name##ActionP5(p0##_type gmock_p0, p1##_type gmock_p1, \
1021 p2##_type gmock_p2, p3##_type gmock_p3, \
1022 p4##_type gmock_p4) : p0(::std::forward<p0##_type>(gmock_p0)), \
1023 p1(::std::forward<p1##_type>(gmock_p1)), \
1024 p2(::std::forward<p2##_type>(gmock_p2)), \
1025 p3(::std::forward<p3##_type>(gmock_p3)), \
1026 p4(::std::forward<p4##_type>(gmock_p4)) {}\
1027 template <typename F>\
1028 class gmock_Impl : public ::testing::ActionInterface<F> {\
1030 typedef F function_type;\
1031 typedef typename ::testing::internal::Function<F>::Result return_type;\
1032 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1034 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1035 p3##_type gmock_p3, \
1036 p4##_type gmock_p4) : p0(::std::forward<p0##_type>(gmock_p0)), \
1037 p1(::std::forward<p1##_type>(gmock_p1)), \
1038 p2(::std::forward<p2##_type>(gmock_p2)), \
1039 p3(::std::forward<p3##_type>(gmock_p3)), \
1040 p4(::std::forward<p4##_type>(gmock_p4)) {}\
1041 virtual return_type Perform(const args_type& args) {\
1042 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1043 Perform(this, args);\
1045 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1046 typename arg3_type, typename arg4_type, typename arg5_type, \
1047 typename arg6_type, typename arg7_type, typename arg8_type, \
1048 typename arg9_type>\
1049 return_type gmock_PerformImpl(const args_type& args, \
1050 const arg0_type& arg0, const arg1_type& arg1, \
1051 const arg2_type& arg2, const arg3_type& arg3, \
1052 const arg4_type& arg4, const arg5_type& arg5, \
1053 const arg6_type& arg6, const arg7_type& arg7, \
1054 const arg8_type& arg8, const arg9_type& arg9) const;\
1061 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1063 template <typename F> operator ::testing::Action<F>() const {\
1064 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4));\
1072 GTEST_DISALLOW_ASSIGN_(name##ActionP5);\
1074 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1075 typename p3##_type, typename p4##_type>\
1076 inline name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1077 p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
1079 return name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1080 p4##_type>(p0, p1, p2, p3, p4);\
1082 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1083 typename p3##_type, typename p4##_type>\
1084 template <typename F>\
1085 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1086 typename arg3_type, typename arg4_type, typename arg5_type, \
1087 typename arg6_type, typename arg7_type, typename arg8_type, \
1088 typename arg9_type>\
1089 typename ::testing::internal::Function<F>::Result\
1090 name##ActionP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1091 p4##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1092 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1094 #define ACTION_P6(name, p0, p1, p2, p3, p4, p5)\
1095 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1096 typename p3##_type, typename p4##_type, typename p5##_type>\
1097 class name##ActionP6 {\
1099 name##ActionP6(p0##_type gmock_p0, p1##_type gmock_p1, \
1100 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1101 p5##_type gmock_p5) : p0(::std::forward<p0##_type>(gmock_p0)), \
1102 p1(::std::forward<p1##_type>(gmock_p1)), \
1103 p2(::std::forward<p2##_type>(gmock_p2)), \
1104 p3(::std::forward<p3##_type>(gmock_p3)), \
1105 p4(::std::forward<p4##_type>(gmock_p4)), \
1106 p5(::std::forward<p5##_type>(gmock_p5)) {}\
1107 template <typename F>\
1108 class gmock_Impl : public ::testing::ActionInterface<F> {\
1110 typedef F function_type;\
1111 typedef typename ::testing::internal::Function<F>::Result return_type;\
1112 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1114 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1115 p3##_type gmock_p3, p4##_type gmock_p4, \
1116 p5##_type gmock_p5) : p0(::std::forward<p0##_type>(gmock_p0)), \
1117 p1(::std::forward<p1##_type>(gmock_p1)), \
1118 p2(::std::forward<p2##_type>(gmock_p2)), \
1119 p3(::std::forward<p3##_type>(gmock_p3)), \
1120 p4(::std::forward<p4##_type>(gmock_p4)), \
1121 p5(::std::forward<p5##_type>(gmock_p5)) {}\
1122 virtual return_type Perform(const args_type& args) {\
1123 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1124 Perform(this, args);\
1126 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1127 typename arg3_type, typename arg4_type, typename arg5_type, \
1128 typename arg6_type, typename arg7_type, typename arg8_type, \
1129 typename arg9_type>\
1130 return_type gmock_PerformImpl(const args_type& args, \
1131 const arg0_type& arg0, const arg1_type& arg1, \
1132 const arg2_type& arg2, const arg3_type& arg3, \
1133 const arg4_type& arg4, const arg5_type& arg5, \
1134 const arg6_type& arg6, const arg7_type& arg7, \
1135 const arg8_type& arg8, const arg9_type& arg9) const;\
1143 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1145 template <typename F> operator ::testing::Action<F>() const {\
1146 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5));\
1155 GTEST_DISALLOW_ASSIGN_(name##ActionP6);\
1157 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1158 typename p3##_type, typename p4##_type, typename p5##_type>\
1159 inline name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, \
1160 p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
1161 p3##_type p3, p4##_type p4, p5##_type p5) {\
1162 return name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, \
1163 p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\
1165 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1166 typename p3##_type, typename p4##_type, typename p5##_type>\
1167 template <typename F>\
1168 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1169 typename arg3_type, typename arg4_type, typename arg5_type, \
1170 typename arg6_type, typename arg7_type, typename arg8_type, \
1171 typename arg9_type>\
1172 typename ::testing::internal::Function<F>::Result\
1173 name##ActionP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1174 p5##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1175 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1177 #define ACTION_P7(name, p0, p1, p2, p3, p4, p5, p6)\
1178 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1179 typename p3##_type, typename p4##_type, typename p5##_type, \
1180 typename p6##_type>\
1181 class name##ActionP7 {\
1183 name##ActionP7(p0##_type gmock_p0, p1##_type gmock_p1, \
1184 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1185 p5##_type gmock_p5, \
1186 p6##_type gmock_p6) : p0(::std::forward<p0##_type>(gmock_p0)), \
1187 p1(::std::forward<p1##_type>(gmock_p1)), \
1188 p2(::std::forward<p2##_type>(gmock_p2)), \
1189 p3(::std::forward<p3##_type>(gmock_p3)), \
1190 p4(::std::forward<p4##_type>(gmock_p4)), \
1191 p5(::std::forward<p5##_type>(gmock_p5)), \
1192 p6(::std::forward<p6##_type>(gmock_p6)) {}\
1193 template <typename F>\
1194 class gmock_Impl : public ::testing::ActionInterface<F> {\
1196 typedef F function_type;\
1197 typedef typename ::testing::internal::Function<F>::Result return_type;\
1198 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1200 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1201 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1202 p6##_type gmock_p6) : p0(::std::forward<p0##_type>(gmock_p0)), \
1203 p1(::std::forward<p1##_type>(gmock_p1)), \
1204 p2(::std::forward<p2##_type>(gmock_p2)), \
1205 p3(::std::forward<p3##_type>(gmock_p3)), \
1206 p4(::std::forward<p4##_type>(gmock_p4)), \
1207 p5(::std::forward<p5##_type>(gmock_p5)), \
1208 p6(::std::forward<p6##_type>(gmock_p6)) {}\
1209 virtual return_type Perform(const args_type& args) {\
1210 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1211 Perform(this, args);\
1213 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1214 typename arg3_type, typename arg4_type, typename arg5_type, \
1215 typename arg6_type, typename arg7_type, typename arg8_type, \
1216 typename arg9_type>\
1217 return_type gmock_PerformImpl(const args_type& args, \
1218 const arg0_type& arg0, const arg1_type& arg1, \
1219 const arg2_type& arg2, const arg3_type& arg3, \
1220 const arg4_type& arg4, const arg5_type& arg5, \
1221 const arg6_type& arg6, const arg7_type& arg7, \
1222 const arg8_type& arg8, const arg9_type& arg9) const;\
1231 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1233 template <typename F> operator ::testing::Action<F>() const {\
1234 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
1245 GTEST_DISALLOW_ASSIGN_(name##ActionP7);\
1247 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1248 typename p3##_type, typename p4##_type, typename p5##_type, \
1249 typename p6##_type>\
1250 inline name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, \
1251 p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \
1252 p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
1254 return name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, \
1255 p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\
1257 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1258 typename p3##_type, typename p4##_type, typename p5##_type, \
1259 typename p6##_type>\
1260 template <typename F>\
1261 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1262 typename arg3_type, typename arg4_type, typename arg5_type, \
1263 typename arg6_type, typename arg7_type, typename arg8_type, \
1264 typename arg9_type>\
1265 typename ::testing::internal::Function<F>::Result\
1266 name##ActionP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1267 p5##_type, p6##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1268 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1270 #define ACTION_P8(name, p0, p1, p2, p3, p4, p5, p6, p7)\
1271 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1272 typename p3##_type, typename p4##_type, typename p5##_type, \
1273 typename p6##_type, typename p7##_type>\
1274 class name##ActionP8 {\
1276 name##ActionP8(p0##_type gmock_p0, p1##_type gmock_p1, \
1277 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1278 p5##_type gmock_p5, p6##_type gmock_p6, \
1279 p7##_type gmock_p7) : p0(::std::forward<p0##_type>(gmock_p0)), \
1280 p1(::std::forward<p1##_type>(gmock_p1)), \
1281 p2(::std::forward<p2##_type>(gmock_p2)), \
1282 p3(::std::forward<p3##_type>(gmock_p3)), \
1283 p4(::std::forward<p4##_type>(gmock_p4)), \
1284 p5(::std::forward<p5##_type>(gmock_p5)), \
1285 p6(::std::forward<p6##_type>(gmock_p6)), \
1286 p7(::std::forward<p7##_type>(gmock_p7)) {}\
1287 template <typename F>\
1288 class gmock_Impl : public ::testing::ActionInterface<F> {\
1290 typedef F function_type;\
1291 typedef typename ::testing::internal::Function<F>::Result return_type;\
1292 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1294 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1295 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1296 p6##_type gmock_p6, \
1297 p7##_type gmock_p7) : p0(::std::forward<p0##_type>(gmock_p0)), \
1298 p1(::std::forward<p1##_type>(gmock_p1)), \
1299 p2(::std::forward<p2##_type>(gmock_p2)), \
1300 p3(::std::forward<p3##_type>(gmock_p3)), \
1301 p4(::std::forward<p4##_type>(gmock_p4)), \
1302 p5(::std::forward<p5##_type>(gmock_p5)), \
1303 p6(::std::forward<p6##_type>(gmock_p6)), \
1304 p7(::std::forward<p7##_type>(gmock_p7)) {}\
1305 virtual return_type Perform(const args_type& args) {\
1306 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1307 Perform(this, args);\
1309 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1310 typename arg3_type, typename arg4_type, typename arg5_type, \
1311 typename arg6_type, typename arg7_type, typename arg8_type, \
1312 typename arg9_type>\
1313 return_type gmock_PerformImpl(const args_type& args, \
1314 const arg0_type& arg0, const arg1_type& arg1, \
1315 const arg2_type& arg2, const arg3_type& arg3, \
1316 const arg4_type& arg4, const arg5_type& arg5, \
1317 const arg6_type& arg6, const arg7_type& arg7, \
1318 const arg8_type& arg8, const arg9_type& arg9) const;\
1328 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1330 template <typename F> operator ::testing::Action<F>() const {\
1331 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
1343 GTEST_DISALLOW_ASSIGN_(name##ActionP8);\
1345 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1346 typename p3##_type, typename p4##_type, typename p5##_type, \
1347 typename p6##_type, typename p7##_type>\
1348 inline name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, \
1349 p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \
1350 p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
1351 p6##_type p6, p7##_type p7) {\
1352 return name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, \
1353 p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \
1356 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1357 typename p3##_type, typename p4##_type, typename p5##_type, \
1358 typename p6##_type, typename p7##_type>\
1359 template <typename F>\
1360 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1361 typename arg3_type, typename arg4_type, typename arg5_type, \
1362 typename arg6_type, typename arg7_type, typename arg8_type, \
1363 typename arg9_type>\
1364 typename ::testing::internal::Function<F>::Result\
1365 name##ActionP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1366 p5##_type, p6##_type, \
1367 p7##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1368 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1370 #define ACTION_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8)\
1371 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1372 typename p3##_type, typename p4##_type, typename p5##_type, \
1373 typename p6##_type, typename p7##_type, typename p8##_type>\
1374 class name##ActionP9 {\
1376 name##ActionP9(p0##_type gmock_p0, p1##_type gmock_p1, \
1377 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1378 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
1379 p8##_type gmock_p8) : p0(::std::forward<p0##_type>(gmock_p0)), \
1380 p1(::std::forward<p1##_type>(gmock_p1)), \
1381 p2(::std::forward<p2##_type>(gmock_p2)), \
1382 p3(::std::forward<p3##_type>(gmock_p3)), \
1383 p4(::std::forward<p4##_type>(gmock_p4)), \
1384 p5(::std::forward<p5##_type>(gmock_p5)), \
1385 p6(::std::forward<p6##_type>(gmock_p6)), \
1386 p7(::std::forward<p7##_type>(gmock_p7)), \
1387 p8(::std::forward<p8##_type>(gmock_p8)) {}\
1388 template <typename F>\
1389 class gmock_Impl : public ::testing::ActionInterface<F> {\
1391 typedef F function_type;\
1392 typedef typename ::testing::internal::Function<F>::Result return_type;\
1393 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1395 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1396 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1397 p6##_type gmock_p6, p7##_type gmock_p7, \
1398 p8##_type gmock_p8) : p0(::std::forward<p0##_type>(gmock_p0)), \
1399 p1(::std::forward<p1##_type>(gmock_p1)), \
1400 p2(::std::forward<p2##_type>(gmock_p2)), \
1401 p3(::std::forward<p3##_type>(gmock_p3)), \
1402 p4(::std::forward<p4##_type>(gmock_p4)), \
1403 p5(::std::forward<p5##_type>(gmock_p5)), \
1404 p6(::std::forward<p6##_type>(gmock_p6)), \
1405 p7(::std::forward<p7##_type>(gmock_p7)), \
1406 p8(::std::forward<p8##_type>(gmock_p8)) {}\
1407 virtual return_type Perform(const args_type& args) {\
1408 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1409 Perform(this, args);\
1411 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1412 typename arg3_type, typename arg4_type, typename arg5_type, \
1413 typename arg6_type, typename arg7_type, typename arg8_type, \
1414 typename arg9_type>\
1415 return_type gmock_PerformImpl(const args_type& args, \
1416 const arg0_type& arg0, const arg1_type& arg1, \
1417 const arg2_type& arg2, const arg3_type& arg3, \
1418 const arg4_type& arg4, const arg5_type& arg5, \
1419 const arg6_type& arg6, const arg7_type& arg7, \
1420 const arg8_type& arg8, const arg9_type& arg9) const;\
1431 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1433 template <typename F> operator ::testing::Action<F>() const {\
1434 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
1447 GTEST_DISALLOW_ASSIGN_(name##ActionP9);\
1449 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1450 typename p3##_type, typename p4##_type, typename p5##_type, \
1451 typename p6##_type, typename p7##_type, typename p8##_type>\
1452 inline name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, \
1453 p4##_type, p5##_type, p6##_type, p7##_type, \
1454 p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
1455 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \
1457 return name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, \
1458 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \
1459 p3, p4, p5, p6, p7, p8);\
1461 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1462 typename p3##_type, typename p4##_type, typename p5##_type, \
1463 typename p6##_type, typename p7##_type, typename p8##_type>\
1464 template <typename F>\
1465 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1466 typename arg3_type, typename arg4_type, typename arg5_type, \
1467 typename arg6_type, typename arg7_type, typename arg8_type, \
1468 typename arg9_type>\
1469 typename ::testing::internal::Function<F>::Result\
1470 name##ActionP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1471 p5##_type, p6##_type, p7##_type, \
1472 p8##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1473 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1475 #define ACTION_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)\
1476 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1477 typename p3##_type, typename p4##_type, typename p5##_type, \
1478 typename p6##_type, typename p7##_type, typename p8##_type, \
1479 typename p9##_type>\
1480 class name##ActionP10 {\
1482 name##ActionP10(p0##_type gmock_p0, p1##_type gmock_p1, \
1483 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1484 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
1485 p8##_type gmock_p8, \
1486 p9##_type gmock_p9) : p0(::std::forward<p0##_type>(gmock_p0)), \
1487 p1(::std::forward<p1##_type>(gmock_p1)), \
1488 p2(::std::forward<p2##_type>(gmock_p2)), \
1489 p3(::std::forward<p3##_type>(gmock_p3)), \
1490 p4(::std::forward<p4##_type>(gmock_p4)), \
1491 p5(::std::forward<p5##_type>(gmock_p5)), \
1492 p6(::std::forward<p6##_type>(gmock_p6)), \
1493 p7(::std::forward<p7##_type>(gmock_p7)), \
1494 p8(::std::forward<p8##_type>(gmock_p8)), \
1495 p9(::std::forward<p9##_type>(gmock_p9)) {}\
1496 template <typename F>\
1497 class gmock_Impl : public ::testing::ActionInterface<F> {\
1499 typedef F function_type;\
1500 typedef typename ::testing::internal::Function<F>::Result return_type;\
1501 typedef typename ::testing::internal::Function<F>::ArgumentTuple\
1503 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1504 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1505 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
1506 p9##_type gmock_p9) : p0(::std::forward<p0##_type>(gmock_p0)), \
1507 p1(::std::forward<p1##_type>(gmock_p1)), \
1508 p2(::std::forward<p2##_type>(gmock_p2)), \
1509 p3(::std::forward<p3##_type>(gmock_p3)), \
1510 p4(::std::forward<p4##_type>(gmock_p4)), \
1511 p5(::std::forward<p5##_type>(gmock_p5)), \
1512 p6(::std::forward<p6##_type>(gmock_p6)), \
1513 p7(::std::forward<p7##_type>(gmock_p7)), \
1514 p8(::std::forward<p8##_type>(gmock_p8)), \
1515 p9(::std::forward<p9##_type>(gmock_p9)) {}\
1516 virtual return_type Perform(const args_type& args) {\
1517 return ::testing::internal::ActionHelper<return_type, gmock_Impl>::\
1518 Perform(this, args);\
1520 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1521 typename arg3_type, typename arg4_type, typename arg5_type, \
1522 typename arg6_type, typename arg7_type, typename arg8_type, \
1523 typename arg9_type>\
1524 return_type gmock_PerformImpl(const args_type& args, \
1525 const arg0_type& arg0, const arg1_type& arg1, \
1526 const arg2_type& arg2, const arg3_type& arg3, \
1527 const arg4_type& arg4, const arg5_type& arg5, \
1528 const arg6_type& arg6, const arg7_type& arg7, \
1529 const arg8_type& arg8, const arg9_type& arg9) const;\
1541 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1543 template <typename F> operator ::testing::Action<F>() const {\
1544 return ::testing::Action<F>(new gmock_Impl<F>(p0, p1, p2, p3, p4, p5, \
1558 GTEST_DISALLOW_ASSIGN_(name##ActionP10);\
1560 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1561 typename p3##_type, typename p4##_type, typename p5##_type, \
1562 typename p6##_type, typename p7##_type, typename p8##_type, \
1563 typename p9##_type>\
1564 inline name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, \
1565 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
1566 p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
1567 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
1569 return name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, \
1570 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \
1571 p1, p2, p3, p4, p5, p6, p7, p8, p9);\
1573 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1574 typename p3##_type, typename p4##_type, typename p5##_type, \
1575 typename p6##_type, typename p7##_type, typename p8##_type, \
1576 typename p9##_type>\
1577 template <typename F>\
1578 template <typename arg0_type, typename arg1_type, typename arg2_type, \
1579 typename arg3_type, typename arg4_type, typename arg5_type, \
1580 typename arg6_type, typename arg7_type, typename arg8_type, \
1581 typename arg9_type>\
1582 typename ::testing::internal::Function<F>::Result\
1583 name##ActionP10<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1584 p5##_type, p6##_type, p7##_type, p8##_type, \
1585 p9##_type>::gmock_Impl<F>::gmock_PerformImpl(\
1586 GMOCK_ACTION_ARG_TYPES_AND_NAMES_UNUSED_) const
1597 # pragma warning(push)
1598 # pragma warning(disable:4100)
1632 namespace invoke_argument {
1643 template <
typename R,
typename F>
1647 template <
typename R,
typename F,
typename A1>
1651 template <
typename R,
typename F,
typename A1,
typename A2>
1655 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3>
1657 return f(
a1,
a2, a3);
1659 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1662 return f(
a1,
a2, a3, a4);
1664 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1665 typename A4,
typename A5>
1667 return f(
a1,
a2, a3, a4, a5);
1669 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1670 typename A4,
typename A5,
typename A6>
1672 return f(
a1,
a2, a3, a4, a5, a6);
1674 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1675 typename A4,
typename A5,
typename A6,
typename A7>
1678 return f(
a1,
a2, a3, a4, a5, a6, a7);
1680 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1681 typename A4,
typename A5,
typename A6,
typename A7,
typename A8>
1684 return f(
a1,
a2, a3, a4, a5, a6, a7, a8);
1686 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1687 typename A4,
typename A5,
typename A6,
typename A7,
typename A8,
1690 A7 a7, A8 a8, A9 a9) {
1691 return f(
a1,
a2, a3, a4, a5, a6, a7, a8, a9);
1693 template <
typename R,
typename F,
typename A1,
typename A2,
typename A3,
1694 typename A4,
typename A5,
typename A6,
typename A7,
typename A8,
1695 typename A9,
typename A10>
1697 A7 a7, A8 a8, A9 a9, A10 a10) {
1698 return f(
a1,
a2, a3, a4, a5, a6, a7, a8, a9, a10);
1704 HAS_1_TEMPLATE_PARAMS(
int,
k),
1705 AND_0_VALUE_PARAMS()) {
1707 return InvokeArgumentAdl<return_type>(
1709 ::std::get<k>(
args));
1713 HAS_1_TEMPLATE_PARAMS(
int,
k),
1714 AND_1_VALUE_PARAMS(p0)) {
1716 return InvokeArgumentAdl<return_type>(
1718 ::std::get<k>(
args), p0);
1722 HAS_1_TEMPLATE_PARAMS(
int,
k),
1723 AND_2_VALUE_PARAMS(p0, p1)) {
1725 return InvokeArgumentAdl<return_type>(
1727 ::std::get<k>(
args), p0, p1);
1731 HAS_1_TEMPLATE_PARAMS(
int,
k),
1732 AND_3_VALUE_PARAMS(p0, p1, p2)) {
1734 return InvokeArgumentAdl<return_type>(
1736 ::std::get<k>(
args), p0, p1, p2);
1740 HAS_1_TEMPLATE_PARAMS(
int,
k),
1741 AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
1743 return InvokeArgumentAdl<return_type>(
1745 ::std::get<k>(
args), p0, p1, p2, p3);
1749 HAS_1_TEMPLATE_PARAMS(
int,
k),
1750 AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
1752 return InvokeArgumentAdl<return_type>(
1754 ::std::get<k>(
args), p0, p1, p2, p3, p4);
1758 HAS_1_TEMPLATE_PARAMS(
int,
k),
1759 AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
1761 return InvokeArgumentAdl<return_type>(
1763 ::std::get<k>(
args), p0, p1, p2, p3, p4, p5);
1767 HAS_1_TEMPLATE_PARAMS(
int,
k),
1768 AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
1770 return InvokeArgumentAdl<return_type>(
1772 ::std::get<k>(
args), p0, p1, p2, p3, p4, p5, p6);
1776 HAS_1_TEMPLATE_PARAMS(
int,
k),
1777 AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
1779 return InvokeArgumentAdl<return_type>(
1781 ::std::get<k>(
args), p0, p1, p2, p3, p4, p5, p6, p7);
1785 HAS_1_TEMPLATE_PARAMS(
int,
k),
1786 AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
1788 return InvokeArgumentAdl<return_type>(
1790 ::std::get<k>(
args), p0, p1, p2, p3, p4, p5, p6, p7, p8);
1794 HAS_1_TEMPLATE_PARAMS(
int,
k),
1795 AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
1797 return InvokeArgumentAdl<return_type>(
1799 ::std::get<k>(
args), p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1808 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1809 AND_0_VALUE_PARAMS()) {
1814 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1815 AND_1_VALUE_PARAMS(p0)) {
1820 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1821 AND_2_VALUE_PARAMS(p0, p1)) {
1822 return new T(p0, p1);
1826 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1827 AND_3_VALUE_PARAMS(p0, p1, p2)) {
1828 return new T(p0, p1, p2);
1832 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1833 AND_4_VALUE_PARAMS(p0, p1, p2, p3)) {
1834 return new T(p0, p1, p2, p3);
1838 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1839 AND_5_VALUE_PARAMS(p0, p1, p2, p3, p4)) {
1840 return new T(p0, p1, p2, p3, p4);
1844 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1845 AND_6_VALUE_PARAMS(p0, p1, p2, p3, p4, p5)) {
1846 return new T(p0, p1, p2, p3, p4, p5);
1850 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1851 AND_7_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6)) {
1852 return new T(p0, p1, p2, p3, p4, p5, p6);
1856 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1857 AND_8_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7)) {
1858 return new T(p0, p1, p2, p3, p4, p5, p6, p7);
1862 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1863 AND_9_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8)) {
1864 return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8);
1868 HAS_1_TEMPLATE_PARAMS(
typename,
T),
1869 AND_10_VALUE_PARAMS(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)) {
1870 return new T(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
1874 # pragma warning(pop)
1882 #include "gmock/internal/custom/gmock-generated-actions.h"
1884 #endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_ACTIONS_H_