SpECTRE Documentation Coverage Report
Current view: top level - Parallel - CreateFromOptions.hpp Hit Total Coverage
Commit: 3ffcbc8ecf43797401b60bcca17d6040ee06f013 Lines: 1 2 50.0 %
Date: 2026-03-03 02:01:44
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 "Parallel/InitializationTag.hpp"
       7             : #include "Utilities/TMPL.hpp"
       8             : #include "Utilities/TaggedTuple.hpp"
       9             : #include "Utilities/TypeTraits.hpp"
      10             : 
      11             : namespace Parallel {
      12             : namespace detail {
      13             : template <typename Metavariables, templated_initialization_tag Tag,
      14             :           typename... OptionTags>
      15             : typename Tag::type create_initialization_item_from_options(
      16             :     const tuples::TaggedTuple<OptionTags...>& options) {
      17             :   return tuples::apply<typename Tag::template option_tags<Metavariables>>(
      18             :       [](const auto&... option) {
      19             :         return Tag::template create_from_options<Metavariables>(option...);
      20             :       },
      21             :       options);
      22             : }
      23             : 
      24             : template <typename Metavariables, untemplated_initialization_tag Tag,
      25             :           typename... OptionTags>
      26             : typename Tag::type create_initialization_item_from_options(
      27             :     const tuples::TaggedTuple<OptionTags...>& options) {
      28             :   return tuples::apply<typename Tag::option_tags>(
      29             :       [](const auto&... option) { return Tag::create_from_options(option...); },
      30             :       options);
      31             : }
      32             : }  // namespace detail
      33             : 
      34             : /// \ingroup ParallelGroup
      35             : /// \brief Given a list of tags and a tagged tuple containing items
      36             : /// created from input options, return a tagged tuple of items constructed
      37             : /// by calls to create_from_options for each tag in the list.
      38             : template <typename Metavariables, initialization_tag... Tags,
      39             :           typename... OptionTags>
      40           1 : tuples::TaggedTuple<Tags...> create_from_options(
      41             :     const tuples::TaggedTuple<OptionTags...>& options,
      42             :     tmpl::list<Tags...> /*meta*/) {
      43             :   return {detail::create_initialization_item_from_options<Metavariables, Tags>(
      44             :       options)...};
      45             : }
      46             : }  // namespace Parallel

Generated by: LCOV version 1.14