summaryrefslogtreecommitdiffstats
path: root/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
diff options
context:
space:
mode:
Diffstat (limited to 'googlemock/include/gmock/internal/custom/gmock-generated-actions.h')
-rw-r--r--googlemock/include/gmock/internal/custom/gmock-generated-actions.h145
1 files changed, 1 insertions, 144 deletions
diff --git a/googlemock/include/gmock/internal/custom/gmock-generated-actions.h b/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
index c655fd0..bd88c6e 100644
--- a/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
+++ b/googlemock/include/gmock/internal/custom/gmock-generated-actions.h
@@ -1,149 +1,6 @@
// GOOGLETEST_CM0002 DO NOT DELETE
+
#ifndef GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
#define GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_
-#include "gmock/internal/gmock-port.h"
-#if GTEST_GOOGLE3_MODE_
-
-#include <memory>
-#include <type_traits>
-
-#include "base/callback.h"
-#include "gmock/gmock-actions.h"
-
-namespace testing {
-namespace internal {
-
-// Implements the Invoke(callback) action.
-template <typename CallbackType, typename Signature>
-class InvokeCallbackAction;
-
-template <typename CallbackType, typename R, typename... Args>
-class InvokeCallbackAction<CallbackType, R(Args...)> {
- public:
- // The c'tor takes ownership of the callback.
- explicit InvokeCallbackAction(CallbackType* callback) : callback_(callback) {
- callback->CheckIsRepeatable(); // Makes sure the callback is permanent.
- }
-
- R operator()(Args... args) const {
- return callback_->Run(std::forward<Args>(args)...);
- }
-
- private:
- const std::shared_ptr<CallbackType> callback_;
-};
-
-// Implements the InvokeWithoutArgs(callback) action.
-template <typename CallbackType>
-class InvokeCallbackWithoutArgsAction {
- const std::shared_ptr<CallbackType> callback_;
-
- public:
- // The c'tor takes ownership of the callback.
- explicit InvokeCallbackWithoutArgsAction(CallbackType* callback)
- : callback_(callback) {
- callback->CheckIsRepeatable(); // Makes sure the callback is permanent.
- }
-
- template <typename... Args>
- auto operator()(const Args&...) -> decltype(this->callback_->Run()) {
- return callback_->Run();
- }
-};
-
-template <typename T>
-struct TypeIdentity {
- using type = T;
-};
-
-inline TypeIdentity<void()> CallbackSignatureImpl(Closure*);
-template <typename R>
-TypeIdentity<R()> CallbackSignatureImpl(ResultCallback<R>*);
-
-template <typename... Args>
-TypeIdentity<void(Args...)> CallbackSignatureImpl(Callback1<Args...>*);
-template <typename R, typename... Args>
-TypeIdentity<R(Args...)> CallbackSignatureImpl(ResultCallback1<R, Args...>*);
-
-template <typename... Args>
-TypeIdentity<void(Args...)> CallbackSignatureImpl(Callback2<Args...>*);
-template <typename R, typename... Args>
-TypeIdentity<R(Args...)> CallbackSignatureImpl(ResultCallback2<R, Args...>*);
-
-template <typename... Args>
-TypeIdentity<void(Args...)> CallbackSignatureImpl(Callback3<Args...>*);
-template <typename R, typename... Args>
-TypeIdentity<R(Args...)> CallbackSignatureImpl(ResultCallback3<R, Args...>*);
-
-template <typename... Args>
-TypeIdentity<void(Args...)> CallbackSignatureImpl(Callback4<Args...>*);
-template <typename R, typename... Args>
-TypeIdentity<R(Args...)> CallbackSignatureImpl(ResultCallback4<R, Args...>*);
-
-template <typename... Args>
-TypeIdentity<void(Args...)> CallbackSignatureImpl(Callback5<Args...>*);
-template <typename R, typename... Args>
-TypeIdentity<R(Args...)> CallbackSignatureImpl(ResultCallback5<R, Args...>*);
-
-template <typename T>
-using CallbackSignature = typename decltype(
- internal::CallbackSignatureImpl(std::declval<T*>()))::type;
-
-// Specialization for protocol buffers.
-// We support setting a proto2::Message, which doesn't have an assignment
-// operator.
-template <size_t N, typename A>
-struct SetArgumentPointeeAction<
- N, A,
- typename std::enable_if<std::is_base_of<proto2::Message, A>::value>::type> {
- A value;
-
- template <typename... Args>
- void operator()(const Args&... args) const {
- ::std::get<N>(std::tie(args...))->CopyFrom(value);
- }
-};
-
-// Add Invoke overloads for google3 Callback types.
-
-template <typename C, typename... Args,
- typename = internal::CallbackSignature<C>>
-auto InvokeArgument(C* cb, Args... args) -> decltype(cb->Run(args...)) {
- return cb->Run(args...);
-}
-
-} // namespace internal
-
-// Add Invoke overloads for google3 Callback types.
-
-// Creates an action that invokes the given callback with the mock
-// function's arguments. The action takes ownership of the callback
-// and verifies that it's permanent.
-//
-// google3 doesn't support callbacks with more than 5
-// arguments yet, so we only support invoking callbacks with up to
-// 5 arguments.
-
-template <typename Callback>
-internal::InvokeCallbackAction<Callback, internal::CallbackSignature<Callback>>
-Invoke(Callback* callback) {
- return internal::InvokeCallbackAction<Callback,
- internal::CallbackSignature<Callback>>(
- callback);
-}
-
-// Creates an action that invokes the given callback with no argument.
-// The action takes ownership of the callback and verifies that it's
-// permanent.
-template <typename Callback, typename = internal::CallbackSignature<Callback>>
-internal::InvokeCallbackWithoutArgsAction<Callback> InvokeWithoutArgs(
- Callback* callback) {
- return internal::InvokeCallbackWithoutArgsAction<Callback>(callback);
-}
-
-} // namespace testing
-
-#endif // GTEST_GOOGLE3_MODE_
-
#endif // GMOCK_INCLUDE_GMOCK_INTERNAL_CUSTOM_GMOCK_GENERATED_ACTIONS_H_