Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <type_traits> 7 : 8 : #include "Parallel/Phase.hpp" 9 : #include "Utilities/TMPL.hpp" 10 : 11 : namespace Parallel { 12 : /*! 13 : * \ingroup ParallelGroup 14 : * \brief List of all the actions to be executed in the specified phase. 15 : */ 16 : template <Parallel::Phase Phase, typename ActionsList> 17 1 : struct PhaseActions { 18 0 : using action_list = tmpl::flatten<ActionsList>; 19 0 : static constexpr Parallel::Phase phase = Phase; 20 0 : static constexpr size_t number_of_actions = tmpl::size<action_list>::value; 21 : }; 22 : 23 : /*! 24 : * \ingroup ParallelGroup 25 : * \brief (Lazy) metafunction to get the action list from a `PhaseActions` 26 : */ 27 : template <typename PhaseDepActionList> 28 1 : struct get_action_list_from_phase_dep_action_list { 29 0 : using type = typename PhaseDepActionList::action_list; 30 : }; 31 : } // namespace Parallel