Xmipp  v3.23.11-Nereus
Classes | Public Member Functions | List of all members
testing::internal::DoAllAction< InitialAction, OtherActions... > Class Template Reference

#include <gmock-actions.h>

Inheritance diagram for testing::internal::DoAllAction< InitialAction, OtherActions... >:
Inheritance graph
[legend]
Collaboration diagram for testing::internal::DoAllAction< InitialAction, OtherActions... >:
Collaboration graph
[legend]

Classes

struct  UserConstructorTag
 

Public Member Functions

template<typename T , typename... U>
 DoAllAction (UserConstructorTag, T &&initial_action, U &&... other_actions)
 
template<typename R , typename... Args, typename std::enable_if< conjunction< std::is_convertible< InitialAction, OnceAction< void(InitialActionArgType< Args >...)>>, std::is_convertible< Base, OnceAction< R(Args...)>>>::value, int >::type = 0>
 operator OnceAction< R (Args...)>() &&
 
template<typename R , typename... Args, typename std::enable_if< conjunction< std::is_convertible< const InitialAction &, Action< void(InitialActionArgType< Args >...)>>, std::is_convertible< const Base &, Action< R(Args...)>>>::value, int >::type = 0>
 operator Action< R (Args...)>() const
 

Detailed Description

template<typename InitialAction, typename... OtherActions>
class testing::internal::DoAllAction< InitialAction, OtherActions... >

Definition at line 1516 of file gmock-actions.h.

Constructor & Destructor Documentation

◆ DoAllAction()

template<typename InitialAction , typename... OtherActions>
template<typename T , typename... U>
testing::internal::DoAllAction< InitialAction, OtherActions... >::DoAllAction ( UserConstructorTag  ,
T &&  initial_action,
U &&...  other_actions 
)
inlineexplicit

Definition at line 1574 of file gmock-actions.h.

1576  : Base({}, std::forward<U>(other_actions)...),
1577  initial_action_(std::forward<T>(initial_action)) {}

Member Function Documentation

◆ operator Action< R()

template<typename InitialAction , typename... OtherActions>
template<typename R , typename... Args, typename std::enable_if< conjunction< std::is_convertible< const InitialAction &, Action< void(InitialActionArgType< Args >...)>>, std::is_convertible< const Base &, Action< R(Args...)>>>::value, int >::type = 0>
testing::internal::DoAllAction< InitialAction, OtherActions... >::operator Action< R ( Args...  ) const
inline

Definition at line 1621 of file gmock-actions.h.

1621  { // NOLINT
1622  // Return an action that first calls the initial action with arguments
1623  // filtered through InitialActionArgType, then forwards arguments directly
1624  // to the base class to deal with the remaining actions.
1625  struct OA {
1626  Action<void(InitialActionArgType<Args>...)> initial_action;
1627  Action<R(Args...)> remaining_actions;
1628 
1629  R operator()(Args... args) const {
1630  initial_action.Perform(std::forward_as_tuple(
1631  static_cast<InitialActionArgType<Args>>(args)...));
1632 
1633  return remaining_actions.Perform(
1634  std::forward_as_tuple(std::forward<Args>(args)...));
1635  }
1636  };
1637 
1638  return OA{
1639  initial_action_,
1640  static_cast<const Base&>(*this),
1641  };
1642  }

◆ operator OnceAction< R()

template<typename InitialAction , typename... OtherActions>
template<typename R , typename... Args, typename std::enable_if< conjunction< std::is_convertible< InitialAction, OnceAction< void(InitialActionArgType< Args >...)>>, std::is_convertible< Base, OnceAction< R(Args...)>>>::value, int >::type = 0>
testing::internal::DoAllAction< InitialAction, OtherActions... >::operator OnceAction< R ( Args...  ) &&
inline

Definition at line 1589 of file gmock-actions.h.

1589  { // NOLINT
1590  // Return an action that first calls the initial action with arguments
1591  // filtered through InitialActionArgType, then forwards arguments directly
1592  // to the base class to deal with the remaining actions.
1593  struct OA {
1594  OnceAction<void(InitialActionArgType<Args>...)> initial_action;
1595  OnceAction<R(Args...)> remaining_actions;
1596 
1597  R operator()(Args... args) && {
1598  std::move(initial_action)
1599  .Call(static_cast<InitialActionArgType<Args>>(args)...);
1600 
1601  return std::move(remaining_actions).Call(std::forward<Args>(args)...);
1602  }
1603  };
1604 
1605  return OA{
1606  std::move(initial_action_),
1607  std::move(static_cast<Base&>(*this)),
1608  };
1609  }

The documentation for this class was generated from the following file: