Googletest export

Move part of functionality of Matcher* class to the base one. Reduce copypaste.

Make constructor and conversion operator of Matcher* class independent of pump.

PiperOrigin-RevId: 291405510
This commit is contained in:
Abseil Team
2020-01-24 14:09:22 -05:00
committed by Andy Getz
parent f1a6db9d4a
commit 87061810f4
3 changed files with 122 additions and 208 deletions

View File

@@ -275,10 +275,8 @@ $var template = [[$if i==0 [[]] $else [[
template <$for j, [[typename p$j##_type]]>\
]]]]
$var ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
$var impl_ctor_param_list = [[$for j, [[p$j##_type gmock_p$j]]]]
$var impl_inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
$var inits = [[$if i==0 [[]] $else [[ : $for j, [[p$j(::std::move(gmock_p$j))]]]]]]
$var params = [[$for j, [[p$j]]]]
$var param_types = [[$if i==0 [[]] $else [[<$for j, [[p$j##_type]]>]]]]
$var param_types_and_names = [[$for j, [[p$j##_type p$j]]]]
@@ -294,8 +292,10 @@ $var param_field_decls2 = [[$for j
]]]]
#define $macro_name(name$for j [[, p$j]], description)\$template
class $class_name {\
class $class_name : public ::testing::internal::MatcherBaseImpl<$class_name$param_types> {\
using __internal_base_type = ::testing::internal::MatcherBaseImpl<$class_name>;\
public:\
using __internal_base_type::__internal_base_type;\
template <typename arg_type>\
class gmock_Impl : public ::testing::MatcherInterface<\
GTEST_REFERENCE_TO_CONST_(arg_type)> {\
@@ -323,14 +323,6 @@ $var param_field_decls2 = [[$for j
::std::tuple<$for j, [[p$j##_type]]>($for j, [[p$j]])));\
}\
};\
template <typename arg_type>\
operator ::testing::Matcher<arg_type>() const {\
return ::testing::Matcher<arg_type>(\
new gmock_Impl<arg_type>($params));\
}\
[[$if i==1 [[explicit ]]]]$class_name($ctor_param_list)$inits {\
}\$param_field_decls2
private:\
};\$template
inline $class_name$param_types name($param_types_and_names) {\
return $class_name$param_types($params);\