mirror of
https://github.com/google/googletest.git
synced 2025-01-14 08:27:56 +08:00
Googletest export
Use C++11 variadic templates for InvokeArgumentAdl in gmock-generated-actions.h. Make InvokeArgumentAdl use variadic templates to generate its overloads instead of using pump.py syntax. PiperOrigin-RevId: 286267615
This commit is contained in:
parent
6f1a8ffde9
commit
d0a521255e
@ -1222,23 +1222,6 @@ class ActionHelper {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace invoke_argument {
|
|
||||||
|
|
||||||
// Appears in InvokeArgumentAdl's argument list to help avoid
|
|
||||||
// accidental calls to user functions of the same name.
|
|
||||||
struct AdlTag {};
|
|
||||||
|
|
||||||
// InvokeArgumentAdl - a helper for InvokeArgument.
|
|
||||||
// The basic overloads are provided here for generic functors.
|
|
||||||
// Overloads for other custom-callables are provided in the
|
|
||||||
// internal/custom/gmock-generated-actions.h header.
|
|
||||||
|
|
||||||
template <typename R, typename F, typename... Args>
|
|
||||||
R InvokeArgumentAdl(AdlTag, F f, Args&&... args) {
|
|
||||||
return f(std::forward<Args>(args)...);
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace invoke_argument
|
|
||||||
} // namespace internal
|
} // namespace internal
|
||||||
|
|
||||||
} // namespace testing
|
} // namespace testing
|
||||||
|
@ -1501,6 +1501,78 @@ namespace testing {
|
|||||||
// InvokeArgument action from temporary values and have it performed
|
// InvokeArgument action from temporary values and have it performed
|
||||||
// later.
|
// later.
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
namespace invoke_argument {
|
||||||
|
|
||||||
|
// Appears in InvokeArgumentAdl's argument list to help avoid
|
||||||
|
// accidental calls to user functions of the same name.
|
||||||
|
struct AdlTag {};
|
||||||
|
|
||||||
|
// InvokeArgumentAdl - a helper for InvokeArgument.
|
||||||
|
// The basic overloads are provided here for generic functors.
|
||||||
|
// Overloads for other custom-callables are provided in the
|
||||||
|
// internal/custom/gmock-generated-actions.h header.
|
||||||
|
|
||||||
|
template <typename R, typename F>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f) {
|
||||||
|
return f();
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1) {
|
||||||
|
return f(a1);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2) {
|
||||||
|
return f(a1, a2);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3) {
|
||||||
|
return f(a1, a2, a3);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4) {
|
||||||
|
return f(a1, a2, a3, a4);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5) {
|
||||||
|
return f(a1, a2, a3, a4, a5);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5, typename A6>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6) {
|
||||||
|
return f(a1, a2, a3, a4, a5, a6);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5, typename A6, typename A7>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
|
||||||
|
A7 a7) {
|
||||||
|
return f(a1, a2, a3, a4, a5, a6, a7);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5, typename A6, typename A7, typename A8>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
|
||||||
|
A7 a7, A8 a8) {
|
||||||
|
return f(a1, a2, a3, a4, a5, a6, a7, a8);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5, typename A6, typename A7, typename A8,
|
||||||
|
typename A9>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
|
||||||
|
A7 a7, A8 a8, A9 a9) {
|
||||||
|
return f(a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
||||||
|
}
|
||||||
|
template <typename R, typename F, typename A1, typename A2, typename A3,
|
||||||
|
typename A4, typename A5, typename A6, typename A7, typename A8,
|
||||||
|
typename A9, typename A10>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6,
|
||||||
|
A7 a7, A8 a8, A9 a9, A10 a10) {
|
||||||
|
return f(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10);
|
||||||
|
}
|
||||||
|
} // namespace invoke_argument
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
ACTION_TEMPLATE(InvokeArgument,
|
ACTION_TEMPLATE(InvokeArgument,
|
||||||
HAS_1_TEMPLATE_PARAMS(int, k),
|
HAS_1_TEMPLATE_PARAMS(int, k),
|
||||||
AND_0_VALUE_PARAMS()) {
|
AND_0_VALUE_PARAMS()) {
|
||||||
|
@ -506,6 +506,32 @@ namespace testing {
|
|||||||
// InvokeArgument action from temporary values and have it performed
|
// InvokeArgument action from temporary values and have it performed
|
||||||
// later.
|
// later.
|
||||||
|
|
||||||
|
namespace internal {
|
||||||
|
namespace invoke_argument {
|
||||||
|
|
||||||
|
// Appears in InvokeArgumentAdl's argument list to help avoid
|
||||||
|
// accidental calls to user functions of the same name.
|
||||||
|
struct AdlTag {};
|
||||||
|
|
||||||
|
// InvokeArgumentAdl - a helper for InvokeArgument.
|
||||||
|
// The basic overloads are provided here for generic functors.
|
||||||
|
// Overloads for other custom-callables are provided in the
|
||||||
|
// internal/custom/gmock-generated-actions.h header.
|
||||||
|
|
||||||
|
$range i 0..n
|
||||||
|
$for i
|
||||||
|
[[
|
||||||
|
$range j 1..i
|
||||||
|
|
||||||
|
template <typename R, typename F[[$for j [[, typename A$j]]]]>
|
||||||
|
R InvokeArgumentAdl(AdlTag, F f[[$for j [[, A$j a$j]]]]) {
|
||||||
|
return f([[$for j, [[a$j]]]]);
|
||||||
|
}
|
||||||
|
]]
|
||||||
|
|
||||||
|
} // namespace invoke_argument
|
||||||
|
} // namespace internal
|
||||||
|
|
||||||
$range i 0..n
|
$range i 0..n
|
||||||
$for i [[
|
$for i [[
|
||||||
$range j 0..i-1
|
$range j 0..i-1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user