SpECTRE Documentation Coverage Report
Current view: top level - Parallel - AlgorithmMetafunctions.hpp Hit Total Coverage
Commit: 3c072f0ce967e2e56649d3fa12aa2a0e4fe2a42e Lines: 0 1 0.0 %
Date: 2024-04-23 20:50:18
Legend: Lines: hit not hit

          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 "Utilities/TMPL.hpp"
       9             : 
      10             : namespace Parallel::Algorithm_detail {
      11             : 
      12             : template <typename Action, typename enable = std::void_t<>>
      13             : struct optional_simple_tags {
      14             :   using type = tmpl::list<>;
      15             : };
      16             : 
      17             : template <typename Action>
      18             : struct optional_simple_tags<Action, std::void_t<typename Action::simple_tags>> {
      19             :   using type = typename Action::simple_tags;
      20             : };
      21             : 
      22             : template <typename Action, typename enable = std::void_t<>>
      23             : struct optional_compute_tags {
      24             :   using type = tmpl::list<>;
      25             : };
      26             : 
      27             : template <typename Action>
      28             : struct optional_compute_tags<Action,
      29             :                              std::void_t<typename Action::compute_tags>> {
      30             :   using type = typename Action::compute_tags;
      31             : };
      32             : 
      33             : template <typename ActionList>
      34             : struct get_action_list_simple_tags {
      35             :   using type = tmpl::flatten<tmpl::transform<typename ActionList::action_list,
      36             :                                              optional_simple_tags<tmpl::_1>>>;
      37             : };
      38             : 
      39             : template <typename ActionList>
      40             : struct get_action_list_compute_tags {
      41             :   using type = tmpl::flatten<tmpl::transform<typename ActionList::action_list,
      42             :                                              optional_compute_tags<tmpl::_1>>>;
      43             : };
      44             : 
      45             : template <typename Pdal>
      46             : using get_pdal_simple_tags = tmpl::remove_duplicates<tmpl::flatten<
      47             :     tmpl::transform<Pdal, get_action_list_simple_tags<tmpl::_1>>>>;
      48             : 
      49             : template <typename Pdal>
      50             : using get_pdal_compute_tags = tmpl::remove_duplicates<tmpl::flatten<
      51             :     tmpl::transform<Pdal, get_action_list_compute_tags<tmpl::_1>>>>;
      52             : 
      53             : template <typename ParallelComponent>
      54             : using action_list_simple_tags = get_pdal_simple_tags<
      55             :     typename ParallelComponent::phase_dependent_action_list>;
      56             : 
      57             : template <typename ParallelComponent>
      58             : using action_list_compute_tags = tmpl::remove_duplicates<get_pdal_compute_tags<
      59             :     typename ParallelComponent::phase_dependent_action_list>>;
      60             : }  // namespace Parallel::Algorithm_detail

Generated by: LCOV version 1.14