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
|