38 #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ 39 #define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ 53 #define GMOCK_FIELD_TYPE_(Tuple, i) \ 54 typename ::std::tr1::tuple_element<i, Tuple>::type 67 template <
class Tuple,
int k0 = -1,
int k1 = -1,
int k2 = -1,
int k3 = -1,
68 int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
int k8 = -1,
73 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
74 int k7,
int k8,
int k9>
87 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
88 get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t), get<k9>(t));
94 template <
class Tuple>
95 class TupleFields < Tuple, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 >
98 typedef ::std::tr1::tuple<>
type;
106 template <
class Tuple,
int k0>
107 class TupleFields < Tuple, k0, -1, -1, -1, -1, -1, -1, -1, -1, -1 >
110 typedef ::std::tr1::tuple<GMOCK_FIELD_TYPE_(Tuple, k0)>
type;
114 return type(get<k0>(t));
118 template <
class Tuple,
int k0,
int k1>
119 class TupleFields < Tuple, k0, k1, -1, -1, -1, -1, -1, -1, -1, -1 >
127 return type(get<k0>(t), get<k1>(t));
131 template <
class Tuple,
int k0,
int k1,
int k2>
132 class TupleFields < Tuple, k0, k1, k2, -1, -1, -1, -1, -1, -1, -1 >
140 return type(get<k0>(t), get<k1>(t), get<k2>(t));
144 template <
class Tuple,
int k0,
int k1,
int k2,
int k3>
145 class TupleFields < Tuple, k0, k1, k2, k3, -1, -1, -1, -1, -1, -1 >
154 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t));
158 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4>
159 class TupleFields < Tuple, k0, k1, k2, k3, k4, -1, -1, -1, -1, -1 >
168 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t));
172 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5>
173 class TupleFields < Tuple, k0, k1, k2, k3, k4, k5, -1, -1, -1, -1 >
183 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
188 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6>
189 class TupleFields < Tuple, k0, k1, k2, k3, k4, k5, k6, -1, -1, -1 >
199 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
200 get<k5>(t), get<k6>(t));
204 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
206 class TupleFields < Tuple, k0, k1, k2, k3, k4, k5, k6, k7, -1, -1 >
217 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
218 get<k5>(t), get<k6>(t), get<k7>(t));
222 template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
224 class TupleFields < Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, -1 >
235 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
236 get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t));
240 #undef GMOCK_FIELD_TYPE_ 243 template <
class ArgsTuple,
int k0 = -1,
int k1 = -1,
int k2 = -1,
int k3 = -1,
244 int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
int k8 = -1,
255 template <
typename InnerMatcher>
257 : inner_matcher_(
SafeMatcherCast<const SelectedArgs & >(inner_matcher)) {}
262 const SelectedArgs & selected_args = GetSelectedArgs(args);
265 {
return inner_matcher_.Matches(selected_args); }
267 PrintIndices(listener->
stream());
271 const bool match = inner_matcher_.MatchAndExplain(selected_args,
279 *os <<
"are a tuple ";
281 inner_matcher_.DescribeTo(os);
286 *os <<
"are a tuple ";
288 inner_matcher_.DescribeNegationTo(os);
294 return TupleFields<RawArgsTuple, k0, k1, k2, k3, k4, k5, k6, k7, k8,
301 *os <<
"whose fields (";
302 const int indices[10] = { k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 };
304 for (
int i = 0; i < 10; i++)
312 *os <<
"#" << indices[i];
318 const MonomorphicInnerMatcher inner_matcher_;
323 template <
class InnerMatcher,
int k0 = -1,
int k1 = -1,
int k2 = -1,
324 int k3 = -1,
int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
325 int k8 = -1,
int k9 = -1 >
330 : inner_matcher_(inner_matcher) {}
332 template <
typename ArgsTuple>
336 k6, k7, k8, k9>(inner_matcher_));
340 const InnerMatcher inner_matcher_;
351 template <
typename M1>
357 template <
typename M1,
typename M2>
366 template <
typename M1,
typename M2,
typename M3>
375 template <
typename M1,
typename M2,
typename M3,
typename M4>
384 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
393 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
403 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
404 typename M6,
typename M7>
413 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
414 typename M6,
typename M7,
typename M8>
423 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
424 typename M6,
typename M7,
typename M8,
typename M9>
433 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
434 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
449 template <
typename M1>
455 template <
typename M1,
typename M2>
464 template <
typename M1,
typename M2,
typename M3>
473 template <
typename M1,
typename M2,
typename M3,
typename M4>
482 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
491 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
501 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
502 typename M6,
typename M7>
511 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
512 typename M6,
typename M7,
typename M8>
521 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
522 typename M6,
typename M7,
typename M8,
typename M9>
531 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
532 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
546 template <
typename InnerMatcher>
548 Args(
const InnerMatcher & matcher)
553 template <
int k1,
typename InnerMatcher>
555 Args(
const InnerMatcher & matcher)
560 template <
int k1,
int k2,
typename InnerMatcher>
562 Args(
const InnerMatcher & matcher)
567 template <
int k1,
int k2,
int k3,
typename InnerMatcher>
569 Args(
const InnerMatcher & matcher)
574 template <
int k1,
int k2,
int k3,
int k4,
typename InnerMatcher>
576 Args(
const InnerMatcher & matcher)
581 template <
int k1,
int k2,
int k3,
int k4,
int k5,
typename InnerMatcher>
583 Args(
const InnerMatcher & matcher)
588 template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
typename InnerMatcher>
590 Args(
const InnerMatcher & matcher)
595 template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
596 typename InnerMatcher>
598 Args(
const InnerMatcher & matcher)
604 template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
605 typename InnerMatcher>
607 Args(
const InnerMatcher & matcher)
613 template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
614 int k9,
typename InnerMatcher>
616 Args(
const InnerMatcher & matcher)
622 template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
623 int k9,
int k10,
typename InnerMatcher>
624 inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8, k9,
626 Args(
const InnerMatcher & matcher)
654 template <
typename T1>
665 template <
typename T1,
typename T2>
673 typename internal::DecayArray<T1>::type,
678 template <
typename T1,
typename T2,
typename T3>
681 typename internal::DecayArray<T1>::type,
684 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3)
687 typename internal::DecayArray<T1>::type,
688 typename internal::DecayArray<T2>::type,
693 template <
typename T1,
typename T2,
typename T3,
typename T4>
696 typename internal::DecayArray<T1>::type,
697 typename internal::DecayArray<T2>::type,
700 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4)
703 typename internal::DecayArray<T1>::type,
704 typename internal::DecayArray<T2>::type,
705 typename internal::DecayArray<T3>::type,
710 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
713 typename internal::DecayArray<T1>::type,
714 typename internal::DecayArray<T2>::type,
715 typename internal::DecayArray<T3>::type,
718 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
722 typename internal::DecayArray<T1>::type,
723 typename internal::DecayArray<T2>::type,
724 typename internal::DecayArray<T3>::type,
725 typename internal::DecayArray<T4>::type,
730 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
734 typename internal::DecayArray<T1>::type,
735 typename internal::DecayArray<T2>::type,
736 typename internal::DecayArray<T3>::type,
737 typename internal::DecayArray<T4>::type,
740 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
741 const T5 & e5,
const T6 & e6)
744 typename internal::DecayArray<T1>::type,
745 typename internal::DecayArray<T2>::type,
746 typename internal::DecayArray<T3>::type,
747 typename internal::DecayArray<T4>::type,
748 typename internal::DecayArray<T5>::type,
753 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
754 typename T6,
typename T7>
757 typename internal::DecayArray<T1>::type,
758 typename internal::DecayArray<T2>::type,
759 typename internal::DecayArray<T3>::type,
760 typename internal::DecayArray<T4>::type,
761 typename internal::DecayArray<T5>::type,
764 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
765 const T5 & e5,
const T6 & e6,
const T7 & e7)
768 typename internal::DecayArray<T1>::type,
769 typename internal::DecayArray<T2>::type,
770 typename internal::DecayArray<T3>::type,
771 typename internal::DecayArray<T4>::type,
772 typename internal::DecayArray<T5>::type,
773 typename internal::DecayArray<T6>::type,
778 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
779 typename T6,
typename T7,
typename T8>
782 typename internal::DecayArray<T1>::type,
783 typename internal::DecayArray<T2>::type,
784 typename internal::DecayArray<T3>::type,
785 typename internal::DecayArray<T4>::type,
786 typename internal::DecayArray<T5>::type,
787 typename internal::DecayArray<T6>::type,
790 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
791 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8)
794 typename internal::DecayArray<T1>::type,
795 typename internal::DecayArray<T2>::type,
796 typename internal::DecayArray<T3>::type,
797 typename internal::DecayArray<T4>::type,
798 typename internal::DecayArray<T5>::type,
799 typename internal::DecayArray<T6>::type,
800 typename internal::DecayArray<T7>::type,
806 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
807 typename T6,
typename T7,
typename T8,
typename T9>
810 typename internal::DecayArray<T1>::type,
811 typename internal::DecayArray<T2>::type,
812 typename internal::DecayArray<T3>::type,
813 typename internal::DecayArray<T4>::type,
814 typename internal::DecayArray<T5>::type,
815 typename internal::DecayArray<T6>::type,
816 typename internal::DecayArray<T7>::type,
819 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
820 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8,
const T9 & e9)
823 typename internal::DecayArray<T1>::type,
824 typename internal::DecayArray<T2>::type,
825 typename internal::DecayArray<T3>::type,
826 typename internal::DecayArray<T4>::type,
827 typename internal::DecayArray<T5>::type,
828 typename internal::DecayArray<T6>::type,
829 typename internal::DecayArray<T7>::type,
830 typename internal::DecayArray<T8>::type,
836 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
837 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
840 typename internal::DecayArray<T1>::type,
841 typename internal::DecayArray<T2>::type,
842 typename internal::DecayArray<T3>::type,
843 typename internal::DecayArray<T4>::type,
844 typename internal::DecayArray<T5>::type,
845 typename internal::DecayArray<T6>::type,
846 typename internal::DecayArray<T7>::type,
847 typename internal::DecayArray<T8>::type,
850 ElementsAre(
const T1 & e1,
const T2 & e2,
const T3 & e3,
const T4 & e4,
851 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8,
const T9 & e9,
855 typename internal::DecayArray<T1>::type,
856 typename internal::DecayArray<T2>::type,
857 typename internal::DecayArray<T3>::type,
858 typename internal::DecayArray<T4>::type,
859 typename internal::DecayArray<T5>::type,
860 typename internal::DecayArray<T6>::type,
861 typename internal::DecayArray<T7>::type,
862 typename internal::DecayArray<T8>::type,
863 typename internal::DecayArray<T9>::type,
880 template <
typename T1>
883 typename internal::DecayArray<T1>::type > >
887 typename internal::DecayArray<T1>::type >
Args;
891 template <
typename T1,
typename T2>
894 typename internal::DecayArray<T1>::type,
895 typename internal::DecayArray<T2>::type > >
899 typename internal::DecayArray<T1>::type,
900 typename internal::DecayArray<T2>::type >
Args;
904 template <
typename T1,
typename T2,
typename T3>
907 typename internal::DecayArray<T1>::type,
908 typename internal::DecayArray<T2>::type,
909 typename internal::DecayArray<T3>::type > >
913 typename internal::DecayArray<T1>::type,
914 typename internal::DecayArray<T2>::type,
915 typename internal::DecayArray<T3>::type >
Args;
919 template <
typename T1,
typename T2,
typename T3,
typename T4>
922 typename internal::DecayArray<T1>::type,
923 typename internal::DecayArray<T2>::type,
924 typename internal::DecayArray<T3>::type,
925 typename internal::DecayArray<T4>::type > >
929 typename internal::DecayArray<T1>::type,
930 typename internal::DecayArray<T2>::type,
931 typename internal::DecayArray<T3>::type,
932 typename internal::DecayArray<T4>::type >
Args;
936 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
939 typename internal::DecayArray<T1>::type,
940 typename internal::DecayArray<T2>::type,
941 typename internal::DecayArray<T3>::type,
942 typename internal::DecayArray<T4>::type,
943 typename internal::DecayArray<T5>::type > >
948 typename internal::DecayArray<T1>::type,
949 typename internal::DecayArray<T2>::type,
950 typename internal::DecayArray<T3>::type,
951 typename internal::DecayArray<T4>::type,
952 typename internal::DecayArray<T5>::type >
Args;
956 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
960 typename internal::DecayArray<T1>::type,
961 typename internal::DecayArray<T2>::type,
962 typename internal::DecayArray<T3>::type,
963 typename internal::DecayArray<T4>::type,
964 typename internal::DecayArray<T5>::type,
965 typename internal::DecayArray<T6>::type > >
967 const T5 & e5,
const T6 & e6)
970 typename internal::DecayArray<T1>::type,
971 typename internal::DecayArray<T2>::type,
972 typename internal::DecayArray<T3>::type,
973 typename internal::DecayArray<T4>::type,
974 typename internal::DecayArray<T5>::type,
975 typename internal::DecayArray<T6>::type >
Args;
980 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
981 typename T6,
typename T7>
984 typename internal::DecayArray<T1>::type,
985 typename internal::DecayArray<T2>::type,
986 typename internal::DecayArray<T3>::type,
987 typename internal::DecayArray<T4>::type,
988 typename internal::DecayArray<T5>::type,
989 typename internal::DecayArray<T6>::type,
990 typename internal::DecayArray<T7>::type > >
992 const T5 & e5,
const T6 & e6,
const T7 & e7)
995 typename internal::DecayArray<T1>::type,
996 typename internal::DecayArray<T2>::type,
997 typename internal::DecayArray<T3>::type,
998 typename internal::DecayArray<T4>::type,
999 typename internal::DecayArray<T5>::type,
1000 typename internal::DecayArray<T6>::type,
1001 typename internal::DecayArray<T7>::type >
Args;
1006 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1007 typename T6,
typename T7,
typename T8>
1010 typename internal::DecayArray<T1>::type,
1011 typename internal::DecayArray<T2>::type,
1012 typename internal::DecayArray<T3>::type,
1013 typename internal::DecayArray<T4>::type,
1014 typename internal::DecayArray<T5>::type,
1015 typename internal::DecayArray<T6>::type,
1016 typename internal::DecayArray<T7>::type,
1017 typename internal::DecayArray<T8>::type > >
1019 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8)
1022 typename internal::DecayArray<T1>::type,
1023 typename internal::DecayArray<T2>::type,
1024 typename internal::DecayArray<T3>::type,
1025 typename internal::DecayArray<T4>::type,
1026 typename internal::DecayArray<T5>::type,
1027 typename internal::DecayArray<T6>::type,
1028 typename internal::DecayArray<T7>::type,
1029 typename internal::DecayArray<T8>::type >
Args;
1034 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1035 typename T6,
typename T7,
typename T8,
typename T9>
1038 typename internal::DecayArray<T1>::type,
1039 typename internal::DecayArray<T2>::type,
1040 typename internal::DecayArray<T3>::type,
1041 typename internal::DecayArray<T4>::type,
1042 typename internal::DecayArray<T5>::type,
1043 typename internal::DecayArray<T6>::type,
1044 typename internal::DecayArray<T7>::type,
1045 typename internal::DecayArray<T8>::type,
1046 typename internal::DecayArray<T9>::type > >
1048 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8,
const T9 & e9)
1051 typename internal::DecayArray<T1>::type,
1052 typename internal::DecayArray<T2>::type,
1053 typename internal::DecayArray<T3>::type,
1054 typename internal::DecayArray<T4>::type,
1055 typename internal::DecayArray<T5>::type,
1056 typename internal::DecayArray<T6>::type,
1057 typename internal::DecayArray<T7>::type,
1058 typename internal::DecayArray<T8>::type,
1059 typename internal::DecayArray<T9>::type >
Args;
1064 template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
1065 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
1068 typename internal::DecayArray<T1>::type,
1069 typename internal::DecayArray<T2>::type,
1070 typename internal::DecayArray<T3>::type,
1071 typename internal::DecayArray<T4>::type,
1072 typename internal::DecayArray<T5>::type,
1073 typename internal::DecayArray<T6>::type,
1074 typename internal::DecayArray<T7>::type,
1075 typename internal::DecayArray<T8>::type,
1076 typename internal::DecayArray<T9>::type,
1079 const T5 & e5,
const T6 & e6,
const T7 & e7,
const T8 & e8,
const T9 & e9,
1083 typename internal::DecayArray<T1>::type,
1084 typename internal::DecayArray<T2>::type,
1085 typename internal::DecayArray<T3>::type,
1086 typename internal::DecayArray<T4>::type,
1087 typename internal::DecayArray<T5>::type,
1088 typename internal::DecayArray<T6>::type,
1089 typename internal::DecayArray<T7>::type,
1090 typename internal::DecayArray<T8>::type,
1091 typename internal::DecayArray<T9>::type,
1094 e6, e7, e8, e9, e10));
1100 template <
typename M1,
typename M2>
1109 template <
typename M1,
typename M2,
typename M3>
1111 AllOf(M1 m1, M2 m2, M3 m3)
1118 template <
typename M1,
typename M2,
typename M3,
typename M4>
1120 AllOf(M1 m1, M2 m2, M3 m3, M4 m4)
1127 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
1129 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5)
1136 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1139 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6)
1146 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1147 typename M6,
typename M7>
1149 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7)
1156 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1157 typename M6,
typename M7,
typename M8>
1159 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8)
1166 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1167 typename M6,
typename M7,
typename M8,
typename M9>
1169 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9)
1177 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1178 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
1181 AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10)
1192 template <
typename M1,
typename M2>
1201 template <
typename M1,
typename M2,
typename M3>
1203 AnyOf(M1 m1, M2 m2, M3 m3)
1210 template <
typename M1,
typename M2,
typename M3,
typename M4>
1212 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4)
1219 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
1221 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5)
1228 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1231 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6)
1238 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1239 typename M6,
typename M7>
1241 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7)
1248 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1249 typename M6,
typename M7,
typename M8>
1251 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8)
1258 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1259 typename M6,
typename M7,
typename M8,
typename M9>
1261 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9)
1269 template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1270 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
1273 AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10)
1499 #define MATCHER(name, description)\ 1500 class name##Matcher {\ 1502 template <typename arg_type>\ 1503 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1507 virtual bool MatchAndExplain(\ 1508 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1509 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1510 *gmock_os << FormatDescription(false);\ 1512 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1513 *gmock_os << FormatDescription(true);\ 1516 ::testing::internal::string FormatDescription(bool negation) const {\ 1517 const ::testing::internal::string gmock_description = (description);\ 1518 if (!gmock_description.empty())\ 1519 return gmock_description;\ 1520 return ::testing::internal::FormatMatcherDescription(\ 1522 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1523 ::std::tr1::tuple<>()));\ 1525 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1527 template <typename arg_type>\ 1528 operator ::testing::Matcher<arg_type>() const {\ 1529 return ::testing::Matcher<arg_type>(\ 1530 new gmock_Impl<arg_type>());\ 1535 GTEST_DISALLOW_ASSIGN_(name##Matcher);\ 1537 inline name##Matcher name() {\ 1538 return name##Matcher();\ 1540 template <typename arg_type>\ 1541 bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(\ 1543 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1546 #define MATCHER_P(name, p0, description)\ 1547 template <typename p0##_type>\ 1548 class name##MatcherP {\ 1550 template <typename arg_type>\ 1551 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1553 explicit gmock_Impl(p0##_type gmock_p0)\ 1555 virtual bool MatchAndExplain(\ 1556 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1557 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1558 *gmock_os << FormatDescription(false);\ 1560 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1561 *gmock_os << FormatDescription(true);\ 1565 ::testing::internal::string FormatDescription(bool negation) const {\ 1566 const ::testing::internal::string gmock_description = (description);\ 1567 if (!gmock_description.empty())\ 1568 return gmock_description;\ 1569 return ::testing::internal::FormatMatcherDescription(\ 1571 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1572 ::std::tr1::tuple<p0##_type>(p0)));\ 1574 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1576 template <typename arg_type>\ 1577 operator ::testing::Matcher<arg_type>() const {\ 1578 return ::testing::Matcher<arg_type>(\ 1579 new gmock_Impl<arg_type>(p0));\ 1581 name##MatcherP(p0##_type gmock_p0) : p0(gmock_p0) {\ 1585 GTEST_DISALLOW_ASSIGN_(name##MatcherP);\ 1587 template <typename p0##_type>\ 1588 inline name##MatcherP<p0##_type> name(p0##_type p0) {\ 1589 return name##MatcherP<p0##_type>(p0);\ 1591 template <typename p0##_type>\ 1592 template <typename arg_type>\ 1593 bool name##MatcherP<p0##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1595 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1598 #define MATCHER_P2(name, p0, p1, description)\ 1599 template <typename p0##_type, typename p1##_type>\ 1600 class name##MatcherP2 {\ 1602 template <typename arg_type>\ 1603 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1605 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1)\ 1606 : p0(gmock_p0), p1(gmock_p1) {}\ 1607 virtual bool MatchAndExplain(\ 1608 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1609 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1610 *gmock_os << FormatDescription(false);\ 1612 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1613 *gmock_os << FormatDescription(true);\ 1618 ::testing::internal::string FormatDescription(bool negation) const {\ 1619 const ::testing::internal::string gmock_description = (description);\ 1620 if (!gmock_description.empty())\ 1621 return gmock_description;\ 1622 return ::testing::internal::FormatMatcherDescription(\ 1624 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1625 ::std::tr1::tuple<p0##_type, p1##_type>(p0, p1)));\ 1627 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1629 template <typename arg_type>\ 1630 operator ::testing::Matcher<arg_type>() const {\ 1631 return ::testing::Matcher<arg_type>(\ 1632 new gmock_Impl<arg_type>(p0, p1));\ 1634 name##MatcherP2(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \ 1640 GTEST_DISALLOW_ASSIGN_(name##MatcherP2);\ 1642 template <typename p0##_type, typename p1##_type>\ 1643 inline name##MatcherP2<p0##_type, p1##_type> name(p0##_type p0, \ 1645 return name##MatcherP2<p0##_type, p1##_type>(p0, p1);\ 1647 template <typename p0##_type, typename p1##_type>\ 1648 template <typename arg_type>\ 1649 bool name##MatcherP2<p0##_type, \ 1650 p1##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1652 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1655 #define MATCHER_P3(name, p0, p1, p2, description)\ 1656 template <typename p0##_type, typename p1##_type, typename p2##_type>\ 1657 class name##MatcherP3 {\ 1659 template <typename arg_type>\ 1660 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1662 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2)\ 1663 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\ 1664 virtual bool MatchAndExplain(\ 1665 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1666 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1667 *gmock_os << FormatDescription(false);\ 1669 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1670 *gmock_os << FormatDescription(true);\ 1676 ::testing::internal::string FormatDescription(bool negation) const {\ 1677 const ::testing::internal::string gmock_description = (description);\ 1678 if (!gmock_description.empty())\ 1679 return gmock_description;\ 1680 return ::testing::internal::FormatMatcherDescription(\ 1682 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1683 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type>(p0, p1, \ 1686 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1688 template <typename arg_type>\ 1689 operator ::testing::Matcher<arg_type>() const {\ 1690 return ::testing::Matcher<arg_type>(\ 1691 new gmock_Impl<arg_type>(p0, p1, p2));\ 1693 name##MatcherP3(p0##_type gmock_p0, p1##_type gmock_p1, \ 1694 p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {\ 1700 GTEST_DISALLOW_ASSIGN_(name##MatcherP3);\ 1702 template <typename p0##_type, typename p1##_type, typename p2##_type>\ 1703 inline name##MatcherP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \ 1704 p1##_type p1, p2##_type p2) {\ 1705 return name##MatcherP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\ 1707 template <typename p0##_type, typename p1##_type, typename p2##_type>\ 1708 template <typename arg_type>\ 1709 bool name##MatcherP3<p0##_type, p1##_type, \ 1710 p2##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1712 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1715 #define MATCHER_P4(name, p0, p1, p2, p3, description)\ 1716 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1717 typename p3##_type>\ 1718 class name##MatcherP4 {\ 1720 template <typename arg_type>\ 1721 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1723 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 1724 p3##_type gmock_p3)\ 1725 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3) {}\ 1726 virtual bool MatchAndExplain(\ 1727 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1728 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1729 *gmock_os << FormatDescription(false);\ 1731 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1732 *gmock_os << FormatDescription(true);\ 1739 ::testing::internal::string FormatDescription(bool negation) const {\ 1740 const ::testing::internal::string gmock_description = (description);\ 1741 if (!gmock_description.empty())\ 1742 return gmock_description;\ 1743 return ::testing::internal::FormatMatcherDescription(\ 1745 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1746 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, \ 1747 p3##_type>(p0, p1, p2, p3)));\ 1749 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1751 template <typename arg_type>\ 1752 operator ::testing::Matcher<arg_type>() const {\ 1753 return ::testing::Matcher<arg_type>(\ 1754 new gmock_Impl<arg_type>(p0, p1, p2, p3));\ 1756 name##MatcherP4(p0##_type gmock_p0, p1##_type gmock_p1, \ 1757 p2##_type gmock_p2, p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), \ 1758 p2(gmock_p2), p3(gmock_p3) {\ 1765 GTEST_DISALLOW_ASSIGN_(name##MatcherP4);\ 1767 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1768 typename p3##_type>\ 1769 inline name##MatcherP4<p0##_type, p1##_type, p2##_type, \ 1770 p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \ 1772 return name##MatcherP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, \ 1775 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1776 typename p3##_type>\ 1777 template <typename arg_type>\ 1778 bool name##MatcherP4<p0##_type, p1##_type, p2##_type, \ 1779 p3##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1781 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1784 #define MATCHER_P5(name, p0, p1, p2, p3, p4, description)\ 1785 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1786 typename p3##_type, typename p4##_type>\ 1787 class name##MatcherP5 {\ 1789 template <typename arg_type>\ 1790 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1792 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 1793 p3##_type gmock_p3, p4##_type gmock_p4)\ 1794 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 1796 virtual bool MatchAndExplain(\ 1797 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1798 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1799 *gmock_os << FormatDescription(false);\ 1801 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1802 *gmock_os << FormatDescription(true);\ 1810 ::testing::internal::string FormatDescription(bool negation) const {\ 1811 const ::testing::internal::string gmock_description = (description);\ 1812 if (!gmock_description.empty())\ 1813 return gmock_description;\ 1814 return ::testing::internal::FormatMatcherDescription(\ 1816 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1817 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 1818 p4##_type>(p0, p1, p2, p3, p4)));\ 1820 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1822 template <typename arg_type>\ 1823 operator ::testing::Matcher<arg_type>() const {\ 1824 return ::testing::Matcher<arg_type>(\ 1825 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4));\ 1827 name##MatcherP5(p0##_type gmock_p0, p1##_type gmock_p1, \ 1828 p2##_type gmock_p2, p3##_type gmock_p3, \ 1829 p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ 1830 p3(gmock_p3), p4(gmock_p4) {\ 1838 GTEST_DISALLOW_ASSIGN_(name##MatcherP5);\ 1840 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1841 typename p3##_type, typename p4##_type>\ 1842 inline name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \ 1843 p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ 1845 return name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \ 1846 p4##_type>(p0, p1, p2, p3, p4);\ 1848 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1849 typename p3##_type, typename p4##_type>\ 1850 template <typename arg_type>\ 1851 bool name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \ 1852 p4##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1854 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1857 #define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description)\ 1858 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1859 typename p3##_type, typename p4##_type, typename p5##_type>\ 1860 class name##MatcherP6 {\ 1862 template <typename arg_type>\ 1863 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1865 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 1866 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5)\ 1867 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 1868 p4(gmock_p4), p5(gmock_p5) {}\ 1869 virtual bool MatchAndExplain(\ 1870 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1871 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1872 *gmock_os << FormatDescription(false);\ 1874 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1875 *gmock_os << FormatDescription(true);\ 1884 ::testing::internal::string FormatDescription(bool negation) const {\ 1885 const ::testing::internal::string gmock_description = (description);\ 1886 if (!gmock_description.empty())\ 1887 return gmock_description;\ 1888 return ::testing::internal::FormatMatcherDescription(\ 1890 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1891 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 1892 p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5)));\ 1894 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1896 template <typename arg_type>\ 1897 operator ::testing::Matcher<arg_type>() const {\ 1898 return ::testing::Matcher<arg_type>(\ 1899 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5));\ 1901 name##MatcherP6(p0##_type gmock_p0, p1##_type gmock_p1, \ 1902 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ 1903 p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ 1904 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {\ 1913 GTEST_DISALLOW_ASSIGN_(name##MatcherP6);\ 1915 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1916 typename p3##_type, typename p4##_type, typename p5##_type>\ 1917 inline name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \ 1918 p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \ 1919 p3##_type p3, p4##_type p4, p5##_type p5) {\ 1920 return name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \ 1921 p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\ 1923 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1924 typename p3##_type, typename p4##_type, typename p5##_type>\ 1925 template <typename arg_type>\ 1926 bool name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ 1927 p5##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 1929 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 1932 #define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description)\ 1933 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1934 typename p3##_type, typename p4##_type, typename p5##_type, \ 1935 typename p6##_type>\ 1936 class name##MatcherP7 {\ 1938 template <typename arg_type>\ 1939 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 1941 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 1942 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ 1943 p6##_type gmock_p6)\ 1944 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 1945 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) {}\ 1946 virtual bool MatchAndExplain(\ 1947 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 1948 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 1949 *gmock_os << FormatDescription(false);\ 1951 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 1952 *gmock_os << FormatDescription(true);\ 1962 ::testing::internal::string FormatDescription(bool negation) const {\ 1963 const ::testing::internal::string gmock_description = (description);\ 1964 if (!gmock_description.empty())\ 1965 return gmock_description;\ 1966 return ::testing::internal::FormatMatcherDescription(\ 1968 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 1969 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 1970 p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, \ 1973 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 1975 template <typename arg_type>\ 1976 operator ::testing::Matcher<arg_type>() const {\ 1977 return ::testing::Matcher<arg_type>(\ 1978 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6));\ 1980 name##MatcherP7(p0##_type gmock_p0, p1##_type gmock_p1, \ 1981 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ 1982 p5##_type gmock_p5, p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), \ 1983 p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), \ 1994 GTEST_DISALLOW_ASSIGN_(name##MatcherP7);\ 1996 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 1997 typename p3##_type, typename p4##_type, typename p5##_type, \ 1998 typename p6##_type>\ 1999 inline name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \ 2000 p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \ 2001 p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ 2003 return name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \ 2004 p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\ 2006 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2007 typename p3##_type, typename p4##_type, typename p5##_type, \ 2008 typename p6##_type>\ 2009 template <typename arg_type>\ 2010 bool name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ 2011 p5##_type, p6##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 2013 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 2016 #define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description)\ 2017 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2018 typename p3##_type, typename p4##_type, typename p5##_type, \ 2019 typename p6##_type, typename p7##_type>\ 2020 class name##MatcherP8 {\ 2022 template <typename arg_type>\ 2023 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 2025 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 2026 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ 2027 p6##_type gmock_p6, p7##_type gmock_p7)\ 2028 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 2029 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7) {}\ 2030 virtual bool MatchAndExplain(\ 2031 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 2032 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 2033 *gmock_os << FormatDescription(false);\ 2035 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 2036 *gmock_os << FormatDescription(true);\ 2047 ::testing::internal::string FormatDescription(bool negation) const {\ 2048 const ::testing::internal::string gmock_description = (description);\ 2049 if (!gmock_description.empty())\ 2050 return gmock_description;\ 2051 return ::testing::internal::FormatMatcherDescription(\ 2053 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 2054 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 2055 p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, \ 2056 p3, p4, p5, p6, p7)));\ 2058 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 2060 template <typename arg_type>\ 2061 operator ::testing::Matcher<arg_type>() const {\ 2062 return ::testing::Matcher<arg_type>(\ 2063 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7));\ 2065 name##MatcherP8(p0##_type gmock_p0, p1##_type gmock_p1, \ 2066 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ 2067 p5##_type gmock_p5, p6##_type gmock_p6, \ 2068 p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ 2069 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ 2081 GTEST_DISALLOW_ASSIGN_(name##MatcherP8);\ 2083 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2084 typename p3##_type, typename p4##_type, typename p5##_type, \ 2085 typename p6##_type, typename p7##_type>\ 2086 inline name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \ 2087 p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \ 2088 p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \ 2089 p6##_type p6, p7##_type p7) {\ 2090 return name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \ 2091 p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \ 2094 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2095 typename p3##_type, typename p4##_type, typename p5##_type, \ 2096 typename p6##_type, typename p7##_type>\ 2097 template <typename arg_type>\ 2098 bool name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ 2099 p5##_type, p6##_type, \ 2100 p7##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 2102 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 2105 #define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description)\ 2106 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2107 typename p3##_type, typename p4##_type, typename p5##_type, \ 2108 typename p6##_type, typename p7##_type, typename p8##_type>\ 2109 class name##MatcherP9 {\ 2111 template <typename arg_type>\ 2112 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 2114 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 2115 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ 2116 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8)\ 2117 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 2118 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ 2120 virtual bool MatchAndExplain(\ 2121 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 2122 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 2123 *gmock_os << FormatDescription(false);\ 2125 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 2126 *gmock_os << FormatDescription(true);\ 2138 ::testing::internal::string FormatDescription(bool negation) const {\ 2139 const ::testing::internal::string gmock_description = (description);\ 2140 if (!gmock_description.empty())\ 2141 return gmock_description;\ 2142 return ::testing::internal::FormatMatcherDescription(\ 2144 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 2145 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 2146 p4##_type, p5##_type, p6##_type, p7##_type, \ 2147 p8##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8)));\ 2149 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 2151 template <typename arg_type>\ 2152 operator ::testing::Matcher<arg_type>() const {\ 2153 return ::testing::Matcher<arg_type>(\ 2154 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8));\ 2156 name##MatcherP9(p0##_type gmock_p0, p1##_type gmock_p1, \ 2157 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ 2158 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ 2159 p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \ 2160 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ 2173 GTEST_DISALLOW_ASSIGN_(name##MatcherP9);\ 2175 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2176 typename p3##_type, typename p4##_type, typename p5##_type, \ 2177 typename p6##_type, typename p7##_type, typename p8##_type>\ 2178 inline name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \ 2179 p4##_type, p5##_type, p6##_type, p7##_type, \ 2180 p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ 2181 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \ 2183 return name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \ 2184 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \ 2185 p3, p4, p5, p6, p7, p8);\ 2187 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2188 typename p3##_type, typename p4##_type, typename p5##_type, \ 2189 typename p6##_type, typename p7##_type, typename p8##_type>\ 2190 template <typename arg_type>\ 2191 bool name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \ 2192 p5##_type, p6##_type, p7##_type, \ 2193 p8##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 2195 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 2198 #define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description)\ 2199 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2200 typename p3##_type, typename p4##_type, typename p5##_type, \ 2201 typename p6##_type, typename p7##_type, typename p8##_type, \ 2202 typename p9##_type>\ 2203 class name##MatcherP10 {\ 2205 template <typename arg_type>\ 2206 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\ 2208 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \ 2209 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \ 2210 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \ 2211 p9##_type gmock_p9)\ 2212 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \ 2213 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \ 2214 p8(gmock_p8), p9(gmock_p9) {}\ 2215 virtual bool MatchAndExplain(\ 2216 arg_type arg, ::testing::MatchResultListener* result_listener) const;\ 2217 virtual void DescribeTo(::std::ostream* gmock_os) const {\ 2218 *gmock_os << FormatDescription(false);\ 2220 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\ 2221 *gmock_os << FormatDescription(true);\ 2234 ::testing::internal::string FormatDescription(bool negation) const {\ 2235 const ::testing::internal::string gmock_description = (description);\ 2236 if (!gmock_description.empty())\ 2237 return gmock_description;\ 2238 return ::testing::internal::FormatMatcherDescription(\ 2240 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\ 2241 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \ 2242 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \ 2243 p9##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)));\ 2245 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\ 2247 template <typename arg_type>\ 2248 operator ::testing::Matcher<arg_type>() const {\ 2249 return ::testing::Matcher<arg_type>(\ 2250 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9));\ 2252 name##MatcherP10(p0##_type gmock_p0, p1##_type gmock_p1, \ 2253 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \ 2254 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \ 2255 p8##_type gmock_p8, p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), \ 2256 p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \ 2257 p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {\ 2270 GTEST_DISALLOW_ASSIGN_(name##MatcherP10);\ 2272 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2273 typename p3##_type, typename p4##_type, typename p5##_type, \ 2274 typename p6##_type, typename p7##_type, typename p8##_type, \ 2275 typename p9##_type>\ 2276 inline name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \ 2277 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \ 2278 p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \ 2279 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \ 2281 return name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \ 2282 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \ 2283 p1, p2, p3, p4, p5, p6, p7, p8, p9);\ 2285 template <typename p0##_type, typename p1##_type, typename p2##_type, \ 2286 typename p3##_type, typename p4##_type, typename p5##_type, \ 2287 typename p6##_type, typename p7##_type, typename p8##_type, \ 2288 typename p9##_type>\ 2289 template <typename arg_type>\ 2290 bool name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \ 2291 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \ 2292 p9##_type>::gmock_Impl<arg_type>::MatchAndExplain(\ 2294 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\ 2297 #endif // GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_ virtual void DescribeNegationTo(::std::ostream *os) const
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
BothOfMatcher< typename AllOfResult3< M1, M2, M3 >::type, typename AllOfResult3< M4, M5, M6 >::type > type
EitherOfMatcher< typename AnyOfResult3< M1, M2, M3 >::type, typename AnyOfResult3< M4, M5, M6 >::type > type
testing::internal::TupleFields< Tuple, k0,-1,-1,-1,-1,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0)> type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3,-1,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
BothOfMatcher< typename AllOfResult4< M1, M2, M3, M4 >::type, typename AllOfResult4< M5, M6, M7, M8 >::type > type
::std::string PrintToString(const T &value)
::std::ostream * stream()
testing::internal::TupleFields< Tuple,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &)
static void PrintIndices(::std::ostream *os)
virtual bool MatchAndExplain(ArgsTuple args, MatchResultListener *listener) const
internal::string str() const
EitherOfMatcher< typename AnyOfResult2< M1, M2 >::type, typename AnyOfResult3< M3, M4, M5 >::type > type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
bool IsInterested() const
testing::internal::TupleFields< Tuple, k0, k1, k2,-1,-1,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
testing::internal::TupleFields< Tuple, k0, k1,-1,-1,-1,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4), GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6), GMOCK_FIELD_TYPE_(Tuple, k7), GMOCK_FIELD_TYPE_(Tuple, k8)> type
EitherOfMatcher< typename AnyOfResult5< M1, M2, M3, M4, M5 >::type, typename AnyOfResult5< M6, M7, M8, M9, M10 >::type > type
internal::AllOfResult2< M1, M2 >::type AllOf(M1 m1, M2 m2)
internal::TupleFields< RawArgsTuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 >::type SelectedArgs
EitherOfMatcher< typename AnyOfResult2< M1, M2 >::type, typename AnyOfResult2< M3, M4 >::type > type
BothOfMatcher< typename AllOfResult2< M1, M2 >::type, typename AllOfResult3< M3, M4, M5 >::type > type
BothOfMatcher< typename AllOfResult5< M1, M2, M3, M4, M5 >::type, typename AllOfResult5< M6, M7, M8, M9, M10 >::type > type
internal::UnorderedElementsAreMatcher< std::tr1::tuple<> > UnorderedElementsAre()
internal::ElementsAreMatcher< std::tr1::tuple<> > ElementsAre()
static type GetSelectedFields(const Tuple &t)
::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4), GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6), GMOCK_FIELD_TYPE_(Tuple, k7), GMOCK_FIELD_TYPE_(Tuple, k8), GMOCK_FIELD_TYPE_(Tuple, k9)> type
void PrintIfNotEmpty(const internal::string &explanation,::std::ostream *os)
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4), GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6)> type
internal::AnyOfResult2< M1, M2 >::type AnyOf(M1 m1, M2 m2)
Matcher< T > MakeMatcher(const MatcherInterface< T > *impl)
Matcher< T > SafeMatcherCast(const M &polymorphic_matcher)
EitherOfMatcher< typename AnyOfResult4< M1, M2, M3, M4 >::type, typename AnyOfResult5< M5, M6, M7, M8, M9 >::type > type
testing::internal::TupleFields< Tuple, k0,-1,-1,-1,-1,-1,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
#define GTEST_REMOVE_REFERENCE_AND_CONST_(T)
#define GTEST_DISALLOW_ASSIGN_(type)
static SelectedArgs GetSelectedArgs(ArgsTuple args)
BothOfMatcher< typename AllOfResult4< M1, M2, M3, M4 >::type, typename AllOfResult5< M5, M6, M7, M8, M9 >::type > type
EitherOfMatcher< typename AnyOfResult3< M1, M2, M3 >::type, typename AnyOfResult4< M4, M5, M6, M7 >::type > type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4), GMOCK_FIELD_TYPE_(Tuple, k5), GMOCK_FIELD_TYPE_(Tuple, k6), GMOCK_FIELD_TYPE_(Tuple, k7)> type
#define GMOCK_FIELD_TYPE_(Tuple, i)
ArgsMatcher(const InnerMatcher &inner_matcher)
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4)> type
EitherOfMatcher< typename AnyOfResult1< M1 >::type, typename AnyOfResult2< M2, M3 >::type > type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
virtual void DescribeTo(::std::ostream *os) const
BothOfMatcher< typename AllOfResult3< M1, M2, M3 >::type, typename AllOfResult4< M4, M5, M6, M7 >::type > type
BothOfMatcher< typename AllOfResult2< M1, M2 >::type, typename AllOfResult2< M3, M4 >::type > type
EitherOfMatcher< typename AnyOfResult1< M1 >::type, typename AnyOfResult1< M2 >::type > type
BothOfMatcher< typename AllOfResult1< M1 >::type, typename AllOfResult1< M2 >::type > type
BothOfMatcher< typename AllOfResult1< M1 >::type, typename AllOfResult2< M2, M3 >::type > type
Matcher< const SelectedArgs & > MonomorphicInnerMatcher
testing::internal::TupleFields< Tuple, k0, k1,-1,-1,-1,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1)> type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3), GMOCK_FIELD_TYPE_(Tuple, k4), GMOCK_FIELD_TYPE_(Tuple, k5)> type
testing::internal::TupleFields< Tuple,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple type
testing::internal::TupleFields< Tuple, k0, k1, k2,-1,-1,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2)> type
EitherOfMatcher< typename AnyOfResult4< M1, M2, M3, M4 >::type, typename AnyOfResult4< M5, M6, M7, M8 >::type > type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
ArgsMatcherImpl(const InnerMatcher &inner_matcher)
testing::internal::TupleFields< Tuple, k0, k1, k2, k3,-1,-1,-1,-1,-1,-1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0), GMOCK_FIELD_TYPE_(Tuple, k1), GMOCK_FIELD_TYPE_(Tuple, k2), GMOCK_FIELD_TYPE_(Tuple, k3)> type
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5,-1,-1,-1,-1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)