38#ifndef GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
39#define GMOCK_INCLUDE_GMOCK_GMOCK_GENERATED_MATCHERS_H_
45#include "gmock/gmock-matchers.h"
51#define GMOCK_FIELD_TYPE_(Tuple, i) \
52 typename ::std::tr1::tuple_element<i, Tuple>::type
65template <
class Tuple,
int k0 = -1,
int k1 = -1,
int k2 = -1,
int k3 = -1,
66 int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
int k8 = -1,
71template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
72 int k7,
int k8,
int k9>
82 using ::std::tr1::get;
83 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
84 get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t), get<k9>(t));
91class TupleFields<Tuple, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
93 typedef ::std::tr1::tuple<>
type;
95 using ::std::tr1::get;
100template <
class Tuple,
int k0>
101class TupleFields<Tuple, k0, -1, -1, -1, -1, -1, -1, -1, -1, -1> {
105 using ::std::tr1::get;
106 return type(get<k0>(t));
110template <
class Tuple,
int k0,
int k1>
111class TupleFields<Tuple, k0, k1, -1, -1, -1, -1, -1, -1, -1, -1> {
116 using ::std::tr1::get;
117 return type(get<k0>(t), get<k1>(t));
121template <
class Tuple,
int k0,
int k1,
int k2>
122class TupleFields<Tuple, k0, k1, k2, -1, -1, -1, -1, -1, -1, -1> {
127 using ::std::tr1::get;
128 return type(get<k0>(t), get<k1>(t), get<k2>(t));
132template <
class Tuple,
int k0,
int k1,
int k2,
int k3>
133class TupleFields<Tuple, k0, k1, k2, k3, -1, -1, -1, -1, -1, -1> {
139 using ::std::tr1::get;
140 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t));
144template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4>
145class TupleFields<Tuple, k0, k1, k2, k3, k4, -1, -1, -1, -1, -1> {
151 using ::std::tr1::get;
152 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t));
156template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5>
157class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, -1, -1, -1, -1> {
164 using ::std::tr1::get;
165 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
170template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6>
171class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, -1, -1, -1> {
178 using ::std::tr1::get;
179 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
180 get<k5>(t), get<k6>(t));
184template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
186class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, k7, -1, -1> {
194 using ::std::tr1::get;
195 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
196 get<k5>(t), get<k6>(t), get<k7>(t));
200template <
class Tuple,
int k0,
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
202class TupleFields<Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, -1> {
210 using ::std::tr1::get;
211 return type(get<k0>(t), get<k1>(t), get<k2>(t), get<k3>(t), get<k4>(t),
212 get<k5>(t), get<k6>(t), get<k7>(t), get<k8>(t));
216#undef GMOCK_FIELD_TYPE_
219template <
class ArgsTuple,
int k0 = -1,
int k1 = -1,
int k2 = -1,
int k3 = -1,
220 int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
int k8 = -1,
230 template <
typename InnerMatcher>
236 const SelectedArgs& selected_args = GetSelectedArgs(args);
238 return inner_matcher_.Matches(selected_args);
240 PrintIndices(listener->
stream());
244 const bool match = inner_matcher_.MatchAndExplain(selected_args,
251 *os <<
"are a tuple ";
253 inner_matcher_.DescribeTo(os);
257 *os <<
"are a tuple ";
259 inner_matcher_.DescribeNegationTo(os);
264 return TupleFields<RawArgsTuple, k0, k1, k2, k3, k4, k5, k6, k7, k8,
265 k9>::GetSelectedFields(args);
269 static void PrintIndices(::std::ostream* os) {
270 *os <<
"whose fields (";
271 const int indices[10] = { k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 };
272 for (
int i = 0; i < 10; i++) {
279 *os <<
"#" << indices[i];
289template <
class InnerMatcher,
int k0 = -1,
int k1 = -1,
int k2 = -1,
290 int k3 = -1,
int k4 = -1,
int k5 = -1,
int k6 = -1,
int k7 = -1,
291 int k8 = -1,
int k9 = -1>
295 : inner_matcher_(inner_matcher) {}
297 template <
typename ArgsTuple>
300 k6, k7, k8, k9>(inner_matcher_));
304 const InnerMatcher inner_matcher_;
315template <
typename M1>
320template <
typename M1,
typename M2>
328template <
typename M1,
typename M2,
typename M3>
336template <
typename M1,
typename M2,
typename M3,
typename M4>
344template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
352template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
361template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
362 typename M6,
typename M7>
370template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
371 typename M6,
typename M7,
typename M8>
379template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
380 typename M6,
typename M7,
typename M8,
typename M9>
388template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
389 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
403template <
typename M1>
408template <
typename M1,
typename M2>
416template <
typename M1,
typename M2,
typename M3>
424template <
typename M1,
typename M2,
typename M3,
typename M4>
432template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
440template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
449template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
450 typename M6,
typename M7>
458template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
459 typename M6,
typename M7,
typename M8>
467template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
468 typename M6,
typename M7,
typename M8,
typename M9>
476template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
477 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
490template <
typename InnerMatcher>
492Args(
const InnerMatcher& matcher) {
496template <
int k1,
typename InnerMatcher>
497inline internal::ArgsMatcher<InnerMatcher, k1>
498Args(
const InnerMatcher& matcher) {
502template <
int k1,
int k2,
typename InnerMatcher>
503inline internal::ArgsMatcher<InnerMatcher, k1, k2>
504Args(
const InnerMatcher& matcher) {
508template <
int k1,
int k2,
int k3,
typename InnerMatcher>
509inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3>
510Args(
const InnerMatcher& matcher) {
514template <
int k1,
int k2,
int k3,
int k4,
typename InnerMatcher>
515inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4>
516Args(
const InnerMatcher& matcher) {
520template <
int k1,
int k2,
int k3,
int k4,
int k5,
typename InnerMatcher>
521inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5>
522Args(
const InnerMatcher& matcher) {
526template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
typename InnerMatcher>
527inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6>
528Args(
const InnerMatcher& matcher) {
532template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
533 typename InnerMatcher>
534inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7>
535Args(
const InnerMatcher& matcher) {
540template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
541 typename InnerMatcher>
542inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8>
543Args(
const InnerMatcher& matcher) {
548template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
549 int k9,
typename InnerMatcher>
550inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8, k9>
551Args(
const InnerMatcher& matcher) {
556template <
int k1,
int k2,
int k3,
int k4,
int k5,
int k6,
int k7,
int k8,
557 int k9,
int k10,
typename InnerMatcher>
558inline internal::ArgsMatcher<InnerMatcher, k1, k2, k3, k4, k5, k6, k7, k8, k9,
560Args(
const InnerMatcher& matcher) {
579inline internal::ElementsAreMatcher<
586template <
typename T1>
587inline internal::ElementsAreMatcher<
596template <
typename T1,
typename T2>
597inline internal::ElementsAreMatcher<
608template <
typename T1,
typename T2,
typename T3>
609inline internal::ElementsAreMatcher<
622template <
typename T1,
typename T2,
typename T3,
typename T4>
623inline internal::ElementsAreMatcher<
629ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4) {
638template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
639inline internal::ElementsAreMatcher<
646ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
657template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
659inline internal::ElementsAreMatcher<
667ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
668 const T5& e5,
const T6& e6) {
679template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
680 typename T6,
typename T7>
681inline internal::ElementsAreMatcher<
690ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
691 const T5& e5,
const T6& e6,
const T7& e7) {
703template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
704 typename T6,
typename T7,
typename T8>
705inline internal::ElementsAreMatcher<
715ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
716 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8) {
730template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
731 typename T6,
typename T7,
typename T8,
typename T9>
732inline internal::ElementsAreMatcher<
743ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
744 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8,
const T9& e9) {
759template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
760 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
761inline internal::ElementsAreMatcher<
773ElementsAre(
const T1& e1,
const T2& e2,
const T3& e3,
const T4& e4,
774 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8,
const T9& e9,
794inline internal::UnorderedElementsAreMatcher<
801template <
typename T1>
802inline internal::UnorderedElementsAreMatcher<
811template <
typename T1,
typename T2>
812inline internal::UnorderedElementsAreMatcher<
823template <
typename T1,
typename T2,
typename T3>
824inline internal::UnorderedElementsAreMatcher<
837template <
typename T1,
typename T2,
typename T3,
typename T4>
838inline internal::UnorderedElementsAreMatcher<
853template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5>
854inline internal::UnorderedElementsAreMatcher<
872template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
874inline internal::UnorderedElementsAreMatcher<
883 const T5& e5,
const T6& e6) {
895template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
896 typename T6,
typename T7>
897inline internal::UnorderedElementsAreMatcher<
907 const T5& e5,
const T6& e6,
const T7& e7) {
920template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
921 typename T6,
typename T7,
typename T8>
922inline internal::UnorderedElementsAreMatcher<
933 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8) {
947template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
948 typename T6,
typename T7,
typename T8,
typename T9>
949inline internal::UnorderedElementsAreMatcher<
961 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8,
const T9& e9) {
976template <
typename T1,
typename T2,
typename T3,
typename T4,
typename T5,
977 typename T6,
typename T7,
typename T8,
typename T9,
typename T10>
978inline internal::UnorderedElementsAreMatcher<
991 const T5& e5,
const T6& e6,
const T7& e7,
const T8& e8,
const T9& e9,
1005 e6, e7, e8, e9, e10));
1011template <
typename M1,
typename M2>
1019template <
typename M1,
typename M2,
typename M3>
1027template <
typename M1,
typename M2,
typename M3,
typename M4>
1035template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
1037AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5) {
1043template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1046AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6) {
1052template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1053 typename M6,
typename M7>
1055AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7) {
1061template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1062 typename M6,
typename M7,
typename M8>
1064AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8) {
1070template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1071 typename M6,
typename M7,
typename M8,
typename M9>
1073AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9) {
1080template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1081 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
1082inline typename internal::AllOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
1084AllOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
1094template <
typename M1,
typename M2>
1102template <
typename M1,
typename M2,
typename M3>
1110template <
typename M1,
typename M2,
typename M3,
typename M4>
1118template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5>
1120AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5) {
1126template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1129AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6) {
1135template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1136 typename M6,
typename M7>
1138AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7) {
1144template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1145 typename M6,
typename M7,
typename M8>
1147AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8) {
1153template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1154 typename M6,
typename M7,
typename M8,
typename M9>
1156AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9) {
1163template <
typename M1,
typename M2,
typename M3,
typename M4,
typename M5,
1164 typename M6,
typename M7,
typename M8,
typename M9,
typename M10>
1165inline typename internal::AnyOfResult10<M1, M2, M3, M4, M5, M6, M7, M8, M9,
1167AnyOf(M1 m1, M2 m2, M3 m3, M4 m4, M5 m5, M6 m6, M7 m7, M8 m8, M9 m9, M10 m10) {
1392#define MATCHER(name, description)\
1393 class name##Matcher {\
1395 template <typename arg_type>\
1396 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1400 virtual bool MatchAndExplain(\
1401 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1402 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1403 *gmock_os << FormatDescription(false);\
1405 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1406 *gmock_os << FormatDescription(true);\
1409 ::testing::internal::string FormatDescription(bool negation) const {\
1410 const ::testing::internal::string gmock_description = (description);\
1411 if (!gmock_description.empty())\
1412 return gmock_description;\
1413 return ::testing::internal::FormatMatcherDescription(\
1415 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1416 ::std::tr1::tuple<>()));\
1418 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1420 template <typename arg_type>\
1421 operator ::testing::Matcher<arg_type>() const {\
1422 return ::testing::Matcher<arg_type>(\
1423 new gmock_Impl<arg_type>());\
1428 GTEST_DISALLOW_ASSIGN_(name##Matcher);\
1430 inline name##Matcher name() {\
1431 return name##Matcher();\
1433 template <typename arg_type>\
1434 bool name##Matcher::gmock_Impl<arg_type>::MatchAndExplain(\
1436 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1439#define MATCHER_P(name, p0, description)\
1440 template <typename p0##_type>\
1441 class name##MatcherP {\
1443 template <typename arg_type>\
1444 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1446 explicit gmock_Impl(p0##_type gmock_p0)\
1448 virtual bool MatchAndExplain(\
1449 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1450 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1451 *gmock_os << FormatDescription(false);\
1453 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1454 *gmock_os << FormatDescription(true);\
1458 ::testing::internal::string FormatDescription(bool negation) const {\
1459 const ::testing::internal::string gmock_description = (description);\
1460 if (!gmock_description.empty())\
1461 return gmock_description;\
1462 return ::testing::internal::FormatMatcherDescription(\
1464 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1465 ::std::tr1::tuple<p0##_type>(p0)));\
1467 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1469 template <typename arg_type>\
1470 operator ::testing::Matcher<arg_type>() const {\
1471 return ::testing::Matcher<arg_type>(\
1472 new gmock_Impl<arg_type>(p0));\
1474 name##MatcherP(p0##_type gmock_p0) : p0(gmock_p0) {\
1478 GTEST_DISALLOW_ASSIGN_(name##MatcherP);\
1480 template <typename p0##_type>\
1481 inline name##MatcherP<p0##_type> name(p0##_type p0) {\
1482 return name##MatcherP<p0##_type>(p0);\
1484 template <typename p0##_type>\
1485 template <typename arg_type>\
1486 bool name##MatcherP<p0##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1488 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1491#define MATCHER_P2(name, p0, p1, description)\
1492 template <typename p0##_type, typename p1##_type>\
1493 class name##MatcherP2 {\
1495 template <typename arg_type>\
1496 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1498 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1)\
1499 : p0(gmock_p0), p1(gmock_p1) {}\
1500 virtual bool MatchAndExplain(\
1501 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1502 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1503 *gmock_os << FormatDescription(false);\
1505 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1506 *gmock_os << FormatDescription(true);\
1511 ::testing::internal::string FormatDescription(bool negation) const {\
1512 const ::testing::internal::string gmock_description = (description);\
1513 if (!gmock_description.empty())\
1514 return gmock_description;\
1515 return ::testing::internal::FormatMatcherDescription(\
1517 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1518 ::std::tr1::tuple<p0##_type, p1##_type>(p0, p1)));\
1520 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1522 template <typename arg_type>\
1523 operator ::testing::Matcher<arg_type>() const {\
1524 return ::testing::Matcher<arg_type>(\
1525 new gmock_Impl<arg_type>(p0, p1));\
1527 name##MatcherP2(p0##_type gmock_p0, p1##_type gmock_p1) : p0(gmock_p0), \
1533 GTEST_DISALLOW_ASSIGN_(name##MatcherP2);\
1535 template <typename p0##_type, typename p1##_type>\
1536 inline name##MatcherP2<p0##_type, p1##_type> name(p0##_type p0, \
1538 return name##MatcherP2<p0##_type, p1##_type>(p0, p1);\
1540 template <typename p0##_type, typename p1##_type>\
1541 template <typename arg_type>\
1542 bool name##MatcherP2<p0##_type, \
1543 p1##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1545 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1548#define MATCHER_P3(name, p0, p1, p2, description)\
1549 template <typename p0##_type, typename p1##_type, typename p2##_type>\
1550 class name##MatcherP3 {\
1552 template <typename arg_type>\
1553 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1555 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2)\
1556 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {}\
1557 virtual bool MatchAndExplain(\
1558 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1559 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1560 *gmock_os << FormatDescription(false);\
1562 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1563 *gmock_os << FormatDescription(true);\
1569 ::testing::internal::string FormatDescription(bool negation) const {\
1570 const ::testing::internal::string gmock_description = (description);\
1571 if (!gmock_description.empty())\
1572 return gmock_description;\
1573 return ::testing::internal::FormatMatcherDescription(\
1575 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1576 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type>(p0, p1, \
1579 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1581 template <typename arg_type>\
1582 operator ::testing::Matcher<arg_type>() const {\
1583 return ::testing::Matcher<arg_type>(\
1584 new gmock_Impl<arg_type>(p0, p1, p2));\
1586 name##MatcherP3(p0##_type gmock_p0, p1##_type gmock_p1, \
1587 p2##_type gmock_p2) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2) {\
1593 GTEST_DISALLOW_ASSIGN_(name##MatcherP3);\
1595 template <typename p0##_type, typename p1##_type, typename p2##_type>\
1596 inline name##MatcherP3<p0##_type, p1##_type, p2##_type> name(p0##_type p0, \
1597 p1##_type p1, p2##_type p2) {\
1598 return name##MatcherP3<p0##_type, p1##_type, p2##_type>(p0, p1, p2);\
1600 template <typename p0##_type, typename p1##_type, typename p2##_type>\
1601 template <typename arg_type>\
1602 bool name##MatcherP3<p0##_type, p1##_type, \
1603 p2##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1605 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1608#define MATCHER_P4(name, p0, p1, p2, p3, description)\
1609 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1610 typename p3##_type>\
1611 class name##MatcherP4 {\
1613 template <typename arg_type>\
1614 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1616 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1617 p3##_type gmock_p3)\
1618 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3) {}\
1619 virtual bool MatchAndExplain(\
1620 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1621 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1622 *gmock_os << FormatDescription(false);\
1624 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1625 *gmock_os << FormatDescription(true);\
1632 ::testing::internal::string FormatDescription(bool negation) const {\
1633 const ::testing::internal::string gmock_description = (description);\
1634 if (!gmock_description.empty())\
1635 return gmock_description;\
1636 return ::testing::internal::FormatMatcherDescription(\
1638 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1639 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, \
1640 p3##_type>(p0, p1, p2, p3)));\
1642 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1644 template <typename arg_type>\
1645 operator ::testing::Matcher<arg_type>() const {\
1646 return ::testing::Matcher<arg_type>(\
1647 new gmock_Impl<arg_type>(p0, p1, p2, p3));\
1649 name##MatcherP4(p0##_type gmock_p0, p1##_type gmock_p1, \
1650 p2##_type gmock_p2, p3##_type gmock_p3) : p0(gmock_p0), p1(gmock_p1), \
1651 p2(gmock_p2), p3(gmock_p3) {\
1658 GTEST_DISALLOW_ASSIGN_(name##MatcherP4);\
1660 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1661 typename p3##_type>\
1662 inline name##MatcherP4<p0##_type, p1##_type, p2##_type, \
1663 p3##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
1665 return name##MatcherP4<p0##_type, p1##_type, p2##_type, p3##_type>(p0, \
1668 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1669 typename p3##_type>\
1670 template <typename arg_type>\
1671 bool name##MatcherP4<p0##_type, p1##_type, p2##_type, \
1672 p3##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1674 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1677#define MATCHER_P5(name, p0, p1, p2, p3, p4, description)\
1678 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1679 typename p3##_type, typename p4##_type>\
1680 class name##MatcherP5 {\
1682 template <typename arg_type>\
1683 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1685 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1686 p3##_type gmock_p3, p4##_type gmock_p4)\
1687 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
1689 virtual bool MatchAndExplain(\
1690 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1691 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1692 *gmock_os << FormatDescription(false);\
1694 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1695 *gmock_os << FormatDescription(true);\
1703 ::testing::internal::string FormatDescription(bool negation) const {\
1704 const ::testing::internal::string gmock_description = (description);\
1705 if (!gmock_description.empty())\
1706 return gmock_description;\
1707 return ::testing::internal::FormatMatcherDescription(\
1709 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1710 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
1711 p4##_type>(p0, p1, p2, p3, p4)));\
1713 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1715 template <typename arg_type>\
1716 operator ::testing::Matcher<arg_type>() const {\
1717 return ::testing::Matcher<arg_type>(\
1718 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4));\
1720 name##MatcherP5(p0##_type gmock_p0, p1##_type gmock_p1, \
1721 p2##_type gmock_p2, p3##_type gmock_p3, \
1722 p4##_type gmock_p4) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
1723 p3(gmock_p3), p4(gmock_p4) {\
1731 GTEST_DISALLOW_ASSIGN_(name##MatcherP5);\
1733 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1734 typename p3##_type, typename p4##_type>\
1735 inline name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1736 p4##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
1738 return name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1739 p4##_type>(p0, p1, p2, p3, p4);\
1741 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1742 typename p3##_type, typename p4##_type>\
1743 template <typename arg_type>\
1744 bool name##MatcherP5<p0##_type, p1##_type, p2##_type, p3##_type, \
1745 p4##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1747 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1750#define MATCHER_P6(name, p0, p1, p2, p3, p4, p5, description)\
1751 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1752 typename p3##_type, typename p4##_type, typename p5##_type>\
1753 class name##MatcherP6 {\
1755 template <typename arg_type>\
1756 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1758 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1759 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5)\
1760 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
1761 p4(gmock_p4), p5(gmock_p5) {}\
1762 virtual bool MatchAndExplain(\
1763 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1764 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1765 *gmock_os << FormatDescription(false);\
1767 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1768 *gmock_os << FormatDescription(true);\
1777 ::testing::internal::string FormatDescription(bool negation) const {\
1778 const ::testing::internal::string gmock_description = (description);\
1779 if (!gmock_description.empty())\
1780 return gmock_description;\
1781 return ::testing::internal::FormatMatcherDescription(\
1783 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1784 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
1785 p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5)));\
1787 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1789 template <typename arg_type>\
1790 operator ::testing::Matcher<arg_type>() const {\
1791 return ::testing::Matcher<arg_type>(\
1792 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5));\
1794 name##MatcherP6(p0##_type gmock_p0, p1##_type gmock_p1, \
1795 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1796 p5##_type gmock_p5) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
1797 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5) {\
1806 GTEST_DISALLOW_ASSIGN_(name##MatcherP6);\
1808 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1809 typename p3##_type, typename p4##_type, typename p5##_type>\
1810 inline name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
1811 p4##_type, p5##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, \
1812 p3##_type p3, p4##_type p4, p5##_type p5) {\
1813 return name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, \
1814 p4##_type, p5##_type>(p0, p1, p2, p3, p4, p5);\
1816 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1817 typename p3##_type, typename p4##_type, typename p5##_type>\
1818 template <typename arg_type>\
1819 bool name##MatcherP6<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1820 p5##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1822 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1825#define MATCHER_P7(name, p0, p1, p2, p3, p4, p5, p6, description)\
1826 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1827 typename p3##_type, typename p4##_type, typename p5##_type, \
1828 typename p6##_type>\
1829 class name##MatcherP7 {\
1831 template <typename arg_type>\
1832 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1834 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1835 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1836 p6##_type gmock_p6)\
1837 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
1838 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6) {}\
1839 virtual bool MatchAndExplain(\
1840 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1841 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1842 *gmock_os << FormatDescription(false);\
1844 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1845 *gmock_os << FormatDescription(true);\
1855 ::testing::internal::string FormatDescription(bool negation) const {\
1856 const ::testing::internal::string gmock_description = (description);\
1857 if (!gmock_description.empty())\
1858 return gmock_description;\
1859 return ::testing::internal::FormatMatcherDescription(\
1861 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1862 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
1863 p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, \
1866 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1868 template <typename arg_type>\
1869 operator ::testing::Matcher<arg_type>() const {\
1870 return ::testing::Matcher<arg_type>(\
1871 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6));\
1873 name##MatcherP7(p0##_type gmock_p0, p1##_type gmock_p1, \
1874 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1875 p5##_type gmock_p5, p6##_type gmock_p6) : p0(gmock_p0), p1(gmock_p1), \
1876 p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), \
1887 GTEST_DISALLOW_ASSIGN_(name##MatcherP7);\
1889 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1890 typename p3##_type, typename p4##_type, typename p5##_type, \
1891 typename p6##_type>\
1892 inline name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
1893 p4##_type, p5##_type, p6##_type> name(p0##_type p0, p1##_type p1, \
1894 p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
1896 return name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, \
1897 p4##_type, p5##_type, p6##_type>(p0, p1, p2, p3, p4, p5, p6);\
1899 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1900 typename p3##_type, typename p4##_type, typename p5##_type, \
1901 typename p6##_type>\
1902 template <typename arg_type>\
1903 bool name##MatcherP7<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1904 p5##_type, p6##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1906 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1909#define MATCHER_P8(name, p0, p1, p2, p3, p4, p5, p6, p7, description)\
1910 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1911 typename p3##_type, typename p4##_type, typename p5##_type, \
1912 typename p6##_type, typename p7##_type>\
1913 class name##MatcherP8 {\
1915 template <typename arg_type>\
1916 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
1918 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
1919 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
1920 p6##_type gmock_p6, p7##_type gmock_p7)\
1921 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
1922 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7) {}\
1923 virtual bool MatchAndExplain(\
1924 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
1925 virtual void DescribeTo(::std::ostream* gmock_os) const {\
1926 *gmock_os << FormatDescription(false);\
1928 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
1929 *gmock_os << FormatDescription(true);\
1940 ::testing::internal::string FormatDescription(bool negation) const {\
1941 const ::testing::internal::string gmock_description = (description);\
1942 if (!gmock_description.empty())\
1943 return gmock_description;\
1944 return ::testing::internal::FormatMatcherDescription(\
1946 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
1947 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
1948 p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, \
1949 p3, p4, p5, p6, p7)));\
1951 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
1953 template <typename arg_type>\
1954 operator ::testing::Matcher<arg_type>() const {\
1955 return ::testing::Matcher<arg_type>(\
1956 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7));\
1958 name##MatcherP8(p0##_type gmock_p0, p1##_type gmock_p1, \
1959 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
1960 p5##_type gmock_p5, p6##_type gmock_p6, \
1961 p7##_type gmock_p7) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
1962 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
1974 GTEST_DISALLOW_ASSIGN_(name##MatcherP8);\
1976 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1977 typename p3##_type, typename p4##_type, typename p5##_type, \
1978 typename p6##_type, typename p7##_type>\
1979 inline name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
1980 p4##_type, p5##_type, p6##_type, p7##_type> name(p0##_type p0, \
1981 p1##_type p1, p2##_type p2, p3##_type p3, p4##_type p4, p5##_type p5, \
1982 p6##_type p6, p7##_type p7) {\
1983 return name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, \
1984 p4##_type, p5##_type, p6##_type, p7##_type>(p0, p1, p2, p3, p4, p5, \
1987 template <typename p0##_type, typename p1##_type, typename p2##_type, \
1988 typename p3##_type, typename p4##_type, typename p5##_type, \
1989 typename p6##_type, typename p7##_type>\
1990 template <typename arg_type>\
1991 bool name##MatcherP8<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
1992 p5##_type, p6##_type, \
1993 p7##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
1995 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
1998#define MATCHER_P9(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, description)\
1999 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2000 typename p3##_type, typename p4##_type, typename p5##_type, \
2001 typename p6##_type, typename p7##_type, typename p8##_type>\
2002 class name##MatcherP9 {\
2004 template <typename arg_type>\
2005 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
2007 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
2008 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
2009 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8)\
2010 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
2011 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
2013 virtual bool MatchAndExplain(\
2014 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
2015 virtual void DescribeTo(::std::ostream* gmock_os) const {\
2016 *gmock_os << FormatDescription(false);\
2018 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
2019 *gmock_os << FormatDescription(true);\
2031 ::testing::internal::string FormatDescription(bool negation) const {\
2032 const ::testing::internal::string gmock_description = (description);\
2033 if (!gmock_description.empty())\
2034 return gmock_description;\
2035 return ::testing::internal::FormatMatcherDescription(\
2037 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
2038 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
2039 p4##_type, p5##_type, p6##_type, p7##_type, \
2040 p8##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8)));\
2042 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
2044 template <typename arg_type>\
2045 operator ::testing::Matcher<arg_type>() const {\
2046 return ::testing::Matcher<arg_type>(\
2047 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8));\
2049 name##MatcherP9(p0##_type gmock_p0, p1##_type gmock_p1, \
2050 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
2051 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
2052 p8##_type gmock_p8) : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), \
2053 p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
2066 GTEST_DISALLOW_ASSIGN_(name##MatcherP9);\
2068 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2069 typename p3##_type, typename p4##_type, typename p5##_type, \
2070 typename p6##_type, typename p7##_type, typename p8##_type>\
2071 inline name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
2072 p4##_type, p5##_type, p6##_type, p7##_type, \
2073 p8##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
2074 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, \
2076 return name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, \
2077 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type>(p0, p1, p2, \
2078 p3, p4, p5, p6, p7, p8);\
2080 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2081 typename p3##_type, typename p4##_type, typename p5##_type, \
2082 typename p6##_type, typename p7##_type, typename p8##_type>\
2083 template <typename arg_type>\
2084 bool name##MatcherP9<p0##_type, p1##_type, p2##_type, p3##_type, p4##_type, \
2085 p5##_type, p6##_type, p7##_type, \
2086 p8##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
2088 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
2091#define MATCHER_P10(name, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, description)\
2092 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2093 typename p3##_type, typename p4##_type, typename p5##_type, \
2094 typename p6##_type, typename p7##_type, typename p8##_type, \
2095 typename p9##_type>\
2096 class name##MatcherP10 {\
2098 template <typename arg_type>\
2099 class gmock_Impl : public ::testing::MatcherInterface<arg_type> {\
2101 gmock_Impl(p0##_type gmock_p0, p1##_type gmock_p1, p2##_type gmock_p2, \
2102 p3##_type gmock_p3, p4##_type gmock_p4, p5##_type gmock_p5, \
2103 p6##_type gmock_p6, p7##_type gmock_p7, p8##_type gmock_p8, \
2104 p9##_type gmock_p9)\
2105 : p0(gmock_p0), p1(gmock_p1), p2(gmock_p2), p3(gmock_p3), \
2106 p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), p7(gmock_p7), \
2107 p8(gmock_p8), p9(gmock_p9) {}\
2108 virtual bool MatchAndExplain(\
2109 arg_type arg, ::testing::MatchResultListener* result_listener) const;\
2110 virtual void DescribeTo(::std::ostream* gmock_os) const {\
2111 *gmock_os << FormatDescription(false);\
2113 virtual void DescribeNegationTo(::std::ostream* gmock_os) const {\
2114 *gmock_os << FormatDescription(true);\
2127 ::testing::internal::string FormatDescription(bool negation) const {\
2128 const ::testing::internal::string gmock_description = (description);\
2129 if (!gmock_description.empty())\
2130 return gmock_description;\
2131 return ::testing::internal::FormatMatcherDescription(\
2133 ::testing::internal::UniversalTersePrintTupleFieldsToStrings(\
2134 ::std::tr1::tuple<p0##_type, p1##_type, p2##_type, p3##_type, \
2135 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
2136 p9##_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9)));\
2138 GTEST_DISALLOW_ASSIGN_(gmock_Impl);\
2140 template <typename arg_type>\
2141 operator ::testing::Matcher<arg_type>() const {\
2142 return ::testing::Matcher<arg_type>(\
2143 new gmock_Impl<arg_type>(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9));\
2145 name##MatcherP10(p0##_type gmock_p0, p1##_type gmock_p1, \
2146 p2##_type gmock_p2, p3##_type gmock_p3, p4##_type gmock_p4, \
2147 p5##_type gmock_p5, p6##_type gmock_p6, p7##_type gmock_p7, \
2148 p8##_type gmock_p8, p9##_type gmock_p9) : p0(gmock_p0), p1(gmock_p1), \
2149 p2(gmock_p2), p3(gmock_p3), p4(gmock_p4), p5(gmock_p5), p6(gmock_p6), \
2150 p7(gmock_p7), p8(gmock_p8), p9(gmock_p9) {\
2163 GTEST_DISALLOW_ASSIGN_(name##MatcherP10);\
2165 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2166 typename p3##_type, typename p4##_type, typename p5##_type, \
2167 typename p6##_type, typename p7##_type, typename p8##_type, \
2168 typename p9##_type>\
2169 inline name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
2170 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
2171 p9##_type> name(p0##_type p0, p1##_type p1, p2##_type p2, p3##_type p3, \
2172 p4##_type p4, p5##_type p5, p6##_type p6, p7##_type p7, p8##_type p8, \
2174 return name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
2175 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, p9##_type>(p0, \
2176 p1, p2, p3, p4, p5, p6, p7, p8, p9);\
2178 template <typename p0##_type, typename p1##_type, typename p2##_type, \
2179 typename p3##_type, typename p4##_type, typename p5##_type, \
2180 typename p6##_type, typename p7##_type, typename p8##_type, \
2181 typename p9##_type>\
2182 template <typename arg_type>\
2183 bool name##MatcherP10<p0##_type, p1##_type, p2##_type, p3##_type, \
2184 p4##_type, p5##_type, p6##_type, p7##_type, p8##_type, \
2185 p9##_type>::gmock_Impl<arg_type>::MatchAndExplain(\
2187 ::testing::MatchResultListener* result_listener GTEST_ATTRIBUTE_UNUSED_)\
Definition dsd/test/gtest/include/gtest/internal/gtest-tuple.h:197
Definition mbelib/test/gtest/include/gtest/internal/gtest-tuple.h:604
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:80
::std::ostream * stream()
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:98
bool IsInterested() const
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:104
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:143
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:294
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:184
internal::string str() const
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:189
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:222
internal::TupleFields< RawArgsTuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, k9 >::type SelectedArgs
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:227
virtual bool MatchAndExplain(ArgsTuple args, MatchResultListener *listener) const
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:234
typedef GTEST_REMOVE_REFERENCE_AND_CONST_(ArgsTuple) RawArgsTuple
ArgsMatcherImpl(const InnerMatcher &inner_matcher)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:231
virtual void DescribeTo(::std::ostream *os) const
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:250
Matcher< const SelectedArgs & > MonomorphicInnerMatcher
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:228
virtual void DescribeNegationTo(::std::ostream *os) const
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:256
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:292
ArgsMatcher(const InnerMatcher &inner_matcher)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:294
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:1563
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:1658
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:3236
testing::internal::TupleFields< Tuple, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 >::type ::std::tr1::tuple type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:93
testing::internal::TupleFields< Tuple, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:94
testing::internal::TupleFields< Tuple, k0, -1, -1, -1, -1, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:104
testing::internal::TupleFields< Tuple, k0, -1, -1, -1, -1, -1, -1, -1, -1, -1 >::type ::std::tr1::tuple< GMOCK_FIELD_TYPE_(Tuple, k0)> type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:103
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:114
testing::internal::TupleFields< Tuple, k0, k1, -1, -1, -1, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:115
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:125
testing::internal::TupleFields< Tuple, k0, k1, k2, -1, -1, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:126
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, -1, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:138
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:137
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:149
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, -1, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:150
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, -1, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:163
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:162
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:208
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7, k8, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:209
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:192
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, k7, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:193
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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:176
testing::internal::TupleFields< Tuple, k0, k1, k2, k3, k4, k5, k6, -1, -1, -1 >::GetSelectedFields static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:177
Definition mbelib/test/gmock/include/gmock/gmock-generated-matchers.h:73
static type GetSelectedFields(const Tuple &t)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:81
::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
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:80
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:3210
#define GMOCK_FIELD_TYPE_(Tuple, i)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:51
#define GTEST_DISALLOW_ASSIGN_(type)
Definition dsd/test/gtest/include/gtest/internal/gtest-port.h:721
Definition dsd/test/gmock/include/gmock/gmock-actions.h:60
void PrintIfNotEmpty(const internal::string &explanation, ::std::ostream *os)
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:653
Definition dsd/test/gmock/include/gmock/gmock-actions.h:49
internal::AllOfResult2< M1, M2 >::type AllOf(M1 m1, M2 m2)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:1013
internal::ArgsMatcher< InnerMatcher > Args(const InnerMatcher &matcher)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:492
internal::UnorderedElementsAreMatcher< std::tr1::tuple<> > UnorderedElementsAre()
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:796
internal::ElementsAreMatcher< std::tr1::tuple<> > ElementsAre()
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:581
::std::string PrintToString(const T &value)
Definition dsd/test/gtest/include/gtest/gtest-printers.h:847
Matcher< T > MakeMatcher(const MatcherInterface< T > *impl)
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:459
internal::AnyOfResult2< M1, M2 >::type AnyOf(M1 m1, M2 m2)
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:1096
Matcher< T > SafeMatcherCast(const M &polymorphic_matcher)
Definition dsd/test/gmock/include/gmock/gmock-matchers.h:640
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:390
BothOfMatcher< typename AllOfResult5< M1, M2, M3, M4, M5 >::type, typename AllOfResult5< M6, M7, M8, M9, M10 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:394
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:316
M1 type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:317
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:321
BothOfMatcher< typename AllOfResult1< M1 >::type, typename AllOfResult1< M2 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:325
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:329
BothOfMatcher< typename AllOfResult1< M1 >::type, typename AllOfResult2< M2, M3 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:333
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:337
BothOfMatcher< typename AllOfResult2< M1, M2 >::type, typename AllOfResult2< M3, M4 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:341
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:345
BothOfMatcher< typename AllOfResult2< M1, M2 >::type, typename AllOfResult3< M3, M4, M5 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:349
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:354
BothOfMatcher< typename AllOfResult3< M1, M2, M3 >::type, typename AllOfResult3< M4, M5, M6 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:358
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:363
BothOfMatcher< typename AllOfResult3< M1, M2, M3 >::type, typename AllOfResult4< M4, M5, M6, M7 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:367
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:372
BothOfMatcher< typename AllOfResult4< M1, M2, M3, M4 >::type, typename AllOfResult4< M5, M6, M7, M8 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:376
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:381
BothOfMatcher< typename AllOfResult4< M1, M2, M3, M4 >::type, typename AllOfResult5< M5, M6, M7, M8, M9 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:385
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:478
EitherOfMatcher< typename AnyOfResult5< M1, M2, M3, M4, M5 >::type, typename AnyOfResult5< M6, M7, M8, M9, M10 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:482
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:404
M1 type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:405
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:409
EitherOfMatcher< typename AnyOfResult1< M1 >::type, typename AnyOfResult1< M2 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:413
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:417
EitherOfMatcher< typename AnyOfResult1< M1 >::type, typename AnyOfResult2< M2, M3 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:421
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:425
EitherOfMatcher< typename AnyOfResult2< M1, M2 >::type, typename AnyOfResult2< M3, M4 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:429
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:433
EitherOfMatcher< typename AnyOfResult2< M1, M2 >::type, typename AnyOfResult3< M3, M4, M5 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:437
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:442
EitherOfMatcher< typename AnyOfResult3< M1, M2, M3 >::type, typename AnyOfResult3< M4, M5, M6 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:446
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:451
EitherOfMatcher< typename AnyOfResult3< M1, M2, M3 >::type, typename AnyOfResult4< M4, M5, M6, M7 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:455
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:460
EitherOfMatcher< typename AnyOfResult4< M1, M2, M3, M4 >::type, typename AnyOfResult4< M5, M6, M7, M8 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:464
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:469
EitherOfMatcher< typename AnyOfResult4< M1, M2, M3, M4 >::type, typename AnyOfResult5< M5, M6, M7, M8, M9 >::type > type
Definition dsd/test/gmock/include/gmock/gmock-generated-matchers.h:473
T type
Definition dsd/test/gmock/include/gmock/internal/gmock-internal-utils.h:353