Go to the documentation of this file.
37 #ifndef GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
38 #define GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
48 #include <type_traits>
55 # pragma warning(push)
56 # pragma warning(disable:4100)
77 template <
typename T,
bool kDefaultConstructible>
84 Assert(
false, __FILE__, __LINE__,
85 "Default action undefined for the function return type.");
86 return internal::Invalid<T>();
115 template <
typename T>
124 template <
typename T>
128 static T*
Get() {
return nullptr; }
133 #define GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(type, value) \
135 class BuiltInDefaultValue<type> { \
137 static bool Exists() { return true; } \
138 static type Get() { return value; } \
142 #if GTEST_HAS_GLOBAL_STRING
144 #endif // GTEST_HAS_GLOBAL_STRING
157 #if GMOCK_WCHAR_T_IS_NATIVE_
172 #undef GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_
189 template <
typename T>
264 template <
typename T>
273 static void Clear() { address_ =
nullptr; }
276 static bool IsSet() {
return address_ !=
nullptr; }
306 template <
typename T>
310 template <
typename T>
314 template <
typename F>
340 template <
typename F>
346 ::std::shared_ptr<ActionInterface<F>>
impl_;
348 template <
typename...
Args>
350 return impl_->Perform(
351 ::std::forward_as_tuple(::std::forward<Args>(
args)...));
366 template <
typename G,
367 typename = typename ::std::enable_if<
368 ::std::is_constructible<::std::function<F>, G>
::value>
::type>
373 :
fun_(ActionAdapter{::std::shared_ptr<ActionInterface<F>>(impl)}) {}
378 template <
typename Func>
398 template <
typename G>
426 template <
typename Impl>
431 template <
typename F>
437 template <
typename F>
446 return impl_.template Perform<Result>(
args);
462 template <
typename F>
474 template <
typename Impl>
483 template <
typename T>
516 template <
typename R>
526 template <
typename F>
539 use_ReturnRef_instead_of_Return_to_return_a_reference);
541 "Can't use Return() on an action expected to return `void`.");
547 template <
typename R_,
typename F>
568 Result_cannot_be_a_reference_type);
579 template <
typename R_,
typename F>
585 explicit Impl(
const std::shared_ptr<R>& wrapper)
586 : performed_(
false), wrapper_(wrapper) {}
590 <<
"A ByMove() action should only be performed once.";
592 return std::move(wrapper_->payload);
613 template <
typename Result,
typename ArgumentTuple>
623 template <
typename Result,
typename ArgumentTuple>
632 template <
typename T>
640 template <
typename F>
647 use_Return_instead_of_ReturnRef_to_return_a_value);
653 template <
typename F>
677 template <
typename T>
686 template <
typename F>
694 use_Return_instead_of_ReturnRefOfCopy_to_return_a_value);
700 template <
typename F>
726 template <
typename F>
732 template <
typename T1,
typename T2>
737 template <
typename Result,
typename ArgumentTuple>
749 #if !GTEST_OS_WINDOWS_MOBILE
753 template <
typename T>
759 template <
typename Result,
typename ArgumentTuple>
772 #endif // !GTEST_OS_WINDOWS_MOBILE
778 template <
size_t N,
typename A,
bool kIsProto>
785 template <
typename Result,
typename ArgumentTuple>
797 template <
size_t N,
typename Proto>
805 proto_->CopyFrom(proto);
808 template <
typename Result,
typename ArgumentTuple>
811 ::std::get<N>(
args)->CopyFrom(*proto_);
821 template <
class Class,
typename MethodPtr>
826 template <
typename...
Args>
837 template <
typename FunctionImpl>
843 template <
typename...
Args>
850 template <
class Class,
typename MethodPtr>
857 template <
typename...
Args>
864 template <
typename A>
869 template <
typename F>
888 template <
typename F>
917 template <
typename InnerAction,
size_t... I>
923 template <
typename R,
typename...
Args>
925 Action<R(
typename std::tuple_element<I, std::tuple<Args...>>::
type...)>
928 return [converted](
Args...
args) -> R {
929 return converted.
Perform(std::forward_as_tuple(
930 std::get<I>(std::forward_as_tuple(std::forward<Args>(
args)...))...));
935 template <
typename... Actions>
938 template <
typename...
Args,
size_t... I>
940 return {std::get<I>(
actions)...};
946 template <
typename R,
typename...
Args>
952 auto tuple_args = std::forward_as_tuple(std::forward<Args>(
args)...);
953 for (
auto&
a : converted) {
954 a.Perform(tuple_args);
956 return last.
Perform(tuple_args);
960 std::get<
sizeof...(Actions) - 1>(
actions)};
1000 template <
typename...
Action>
1003 return {std::forward_as_tuple(std::forward<Action>(
action)...)};
1011 template <
size_t k,
typename InnerAction>
1014 return {std::forward<InnerAction>(
action)};
1021 template <
size_t k,
size_t... ks,
typename InnerAction>
1024 return {std::forward<InnerAction>(
action)};
1031 template <
typename InnerAction>
1034 return {std::forward<InnerAction>(
action)};
1040 template <
typename R>
1056 template <
typename R>
1064 template <
typename R>
1073 template <
typename R>
1085 template <
size_t N,
typename T>
1087 internal::SetArgumentPointeeAction<
1096 internal::SetArgumentPointeeAction<N, const char*, false> >
1099 N,
const char*,
false>(
p));
1104 internal::SetArgumentPointeeAction<N, const wchar_t*, false> >
1107 N,
const wchar_t*,
false>(
p));
1111 template <
size_t N,
typename T>
1113 internal::SetArgumentPointeeAction<
1121 template <
typename T1,
typename T2>
1126 #if !GTEST_OS_WINDOWS_MOBILE
1129 template <
typename T>
1130 PolymorphicAction<internal::SetErrnoAndReturnAction<T> >
1136 #endif // !GTEST_OS_WINDOWS_MOBILE
1144 template <
typename FunctionImpl>
1146 return std::forward<FunctionImpl>(function_impl);
1151 template <
class Class,
typename MethodPtr>
1153 MethodPtr method_ptr) {
1154 return {obj_ptr, method_ptr};
1158 template <
typename FunctionImpl>
1161 return {std::move(function_impl)};
1166 template <
class Class,
typename MethodPtr>
1168 Class* obj_ptr, MethodPtr method_ptr) {
1169 return {obj_ptr, method_ptr};
1175 template <
typename A>
1190 template <
typename T>
1191 inline ::std::reference_wrapper<T>
ByRef(
T& l_value) {
1192 return ::std::reference_wrapper<T>(l_value);
1198 # pragma warning(pop)
1202 #endif // GMOCK_INCLUDE_GMOCK_GMOCK_ACTIONS_H_
Result Perform(const ArgumentTuple &) override
Function< F >::ArgumentTuple ArgumentTuple
TypeWithSize< 8 >::Int Int64
Function< F >::ArgumentTuple ArgumentTuple
static int forward(class zmq::socket_base_t *from_, class zmq::socket_base_t *to_, class zmq::socket_base_t *capture_, zmq::msg_t *msg_, stats_socket &recving, stats_socket &sending)
GTEST_DISALLOW_ASSIGN_(ReturnAction)
internal::Function< F >::ArgumentTuple ArgumentTuple
GTEST_DISALLOW_COPY_AND_ASSIGN_(ActionInterface)
GTEST_API_ void IllegalDoDefault(const char *file, int line)
GTEST_DISALLOW_ASSIGN_(Impl)
static void Perform(const ArgumentTuple &)
internal::Function< F >::MakeResultIgnoredValue OriginalFunction
GTEST_DISALLOW_ASSIGN_(AssignAction)
internal::Function< F >::ArgumentTuple ArgumentTuple
GTEST_DISALLOW_ASSIGN_(ReturnRefOfCopyAction)
internal::DoAllAction< typename std::decay< Action >::type... > DoAll(Action &&... action)
PolymorphicAction(const Impl &impl)
GTEST_DISALLOW_COPY_AND_ASSIGN_(FactoryValueProducer)
Action< F > MakeAction(ActionInterface< F > *impl)
Function< F >::Result Result
GTEST_DISALLOW_ASSIGN_(PolymorphicAction)
Result Perform(const ArgumentTuple &) override
PolymorphicAction< internal::AssignAction< T1, T2 > > Assign(T1 *ptr, T2 val)
Function< F >::Result Result
GTEST_DISALLOW_ASSIGN_(MonomorphicImpl)
auto Apply(F &&f, Tuple &&args) -> decltype(ApplyImpl(std::forward< F >(f), std::forward< Tuple >(args), make_int_pack< std::tuple_size< Tuple >::value >()))
static void SetFactory(FactoryFunction factory)
PolymorphicAction< Impl > MakePolymorphicAction(const Impl &impl)
SetErrnoAndReturnAction(int errno_value, T result)
internal::Function< F >::Result Result
::std::shared_ptr< ActionInterface< F > > impl_
Function< F >::ArgumentTuple ArgumentTuple
GTEST_DISALLOW_ASSIGN_(Impl)
PolymorphicAction< internal::ReturnNullAction > ReturnNull()
GLsizei const GLchar *const * string
inline ::std::reference_wrapper< T > ByRef(T &l_value)
#define GTEST_COMPILE_ASSERT_(expr, msg)
internal::InvokeWithoutArgsAction< typename std::decay< FunctionImpl >::type > InvokeWithoutArgs(FunctionImpl function_impl)
GTEST_COMPILE_ASSERT_(!is_reference< Result >::value, Result_cannot_be_a_reference_type)
std::tuple< Actions... > actions
const std::shared_ptr< R > wrapper_
Impl(const std::shared_ptr< R > &wrapper)
#define T(upbtypeconst, upbtype, ctype, default_value)
Function< F >::ArgumentTuple ArgumentTuple
Result Perform(const ArgumentTuple &) override
ReturnType operator()(const Args &...) const
internal::WithArgsAction< typename std::decay< InnerAction >::type, k, ks... > WithArgs(InnerAction &&action)
const std::shared_ptr< R > value_
void Perform(const ArgumentTuple &args) const
PolymorphicAction< internal::SetErrnoAndReturnAction< T > > SetErrnoAndReturn(int errval, T result)
GTEST_DISALLOW_ASSIGN_(ReturnRefAction)
internal::Function< F >::Result Result
FactoryValueProducer(FactoryFunction factory)
internal::WithArgsAction< typename std::decay< InnerAction >::type > WithoutArgs(InnerAction &&action)
Result Perform(const ArgumentTuple &) override
Action(const Action< Func > &action)
std::decay< FunctionImpl >::type Invoke(FunctionImpl &&function_impl)
SetArgumentPointeeAction(const Proto &proto)
const MethodPtr method_ptr
#define GTEST_CHECK_(condition)
ReturnRefOfCopyAction(const T &value)
internal::Function< F >::ArgumentTuple ArgumentTuple
GMOCK_DEFINE_DEFAULT_ACTION_FOR_RETURN_TYPE_(void,)
internal::ReturnRefOfCopyAction< R > ReturnRefOfCopy(const R &x)
Action(ActionInterface< F > *impl)
static Result Perform(const ArgumentTuple &)
Function< F >::Result Result
void Perform(const ArgumentTuple &) const
internal::ReturnRefAction< R > ReturnRef(R &x)
std::vector< Action< void(Args...)> > Convert(IndexSequence< I... >) const
Function< F >::Result Result
PolymorphicAction< internal::SetArgumentPointeeAction< N, T, internal::IsAProtocolMessage< T >::value > > SetArgumentPointee(const T &x)
virtual ~ActionInterface()
FunctionImpl function_impl
GTEST_DISALLOW_ASSIGN_(Impl)
GTEST_DISALLOW_ASSIGN_(IgnoreResultAction)
SetArgumentPointeeAction(const A &value)
typedef void(APIENTRY *GLDEBUGPROCARB)(GLenum source
internal::Function< F >::Result Result
TypeWithSize< 8 >::UInt UInt64
internal::WithArgsAction< typename std::decay< InnerAction >::type, k > WithArg(InnerAction &&action)
void Perform(const ArgumentTuple &args) const
AssignAction(T1 *ptr, T2 value)
::std::function< F > fun_
FixedValueProducer(T value)
internal::Function< F >::ArgumentTuple ArgumentTuple
virtual Result Perform(const ArgumentTuple &args)=0
void Assert(bool condition, const char *file, int line)
Impl(const std::shared_ptr< R > &value)
PolymorphicAction< internal::SetArgumentPointeeAction< N, T, internal::IsAProtocolMessage< T >::value > > SetArgPointee(const T &x)
const FactoryFunction factory_
auto operator()(Args &&... args) const -> decltype((obj_ptr-> *method_ptr)(std::forward< Args >(args)...))
const Action< OriginalFunction > action_
void Perform(const ArgumentTuple &args) override
IgnoreResultAction(const A &action)
static ValueProducer * producer_
Result Perform(ArgumentTuple args) const
GTEST_DISALLOW_COPY_AND_ASSIGN_(FixedValueProducer)
GTEST_DISALLOW_ASSIGN_(SetArgumentPointeeAction)
Result Perform(const ArgumentTuple &) const
internal::Function< F >::Result operator()(Args &&... args)
internal::ReturnAction< R > Return(R value)
auto operator()(const Args &...) -> decltype(function_impl())
internal::DoDefaultAction DoDefault()
GTEST_DISALLOW_COPY_AND_ASSIGN_(Impl)
GLsizei const GLfloat * value
GTEST_DISALLOW_ASSIGN_(SetErrnoAndReturnAction)
internal::IgnoreResultAction< A > IgnoreResult(const A &an_action)
typename std::result_of< MethodPtr(Class *)>::type ReturnType
GLboolean GLboolean GLboolean GLboolean a
MonomorphicImpl(const Impl &impl)
internal::IgnoredValue Unused
internal::ByMoveWrapper< R > ByMove(R x)
internal::Function< F >::Result Result
Result Perform(const ArgumentTuple &args) override
const std::shared_ptr< Proto > proto_
const MethodPtr method_ptr
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:52