SpECTRE Documentation Coverage Report
Current view: top level - Parallel - AlgorithmMetafunctions.hpp Coverage Total Hit
Commit: 0d1d717af84a81fb1284a20c4013708fe85cc2f0 Lines: 0.0 % 1 0
Test Date: 2026-10-22 17:29:42
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 2.0-1