DUNE PDELab (unstable)
accumulate_static.hh
    3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
  107      template<typename Node, typename Functor, typename Reduction, typename Functor::result_type current_value, typename TreePath, bool doVisit>
  118      template<typename Node, typename Functor, typename Reduction, typename Functor::result_type current_value, typename TreePath>
  124        static const result_type result = Reduction::template reduce<current_value,Functor::template visit<Node,TreePath>::result>::result;
  129      template<typename Tree, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath, typename Tag>
  133      template<typename LeafNode, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath>
  134      struct accumulate_value<LeafNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,LeafNodeTag>
  141          accumulate_node_helper<LeafNode,Functor,Reduction,current_value,TreePath,Functor::template doVisit<LeafNode,TreePath>::value>::result;
  146      template<typename Node, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath, std::size_t i, std::size_t n>
  156        static const result_type child_result = accumulate_value<child,Functor,Reduction,ParentChildReduction,current_value,child_tree_path,NodeTag<child>>::result;
  158        static const result_type result = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,child_result,TreePath,i+1,n>::result;
  163      template<typename Node, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath, std::size_t n>
  164      struct accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,n,n>
  175      template<typename Node, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath>
  181        static const result_type child_result = accumulate_over_children<Node,Functor,Reduction,ParentChildReduction,current_value,TreePath,0,StaticDegree<Node>::value>::result;
  184          accumulate_node_helper<Node,Functor,ParentChildReduction,child_result,TreePath,Functor::template doVisit<Node,TreePath>::value>::result;
  190      template<typename PowerNode, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath>
  191      struct accumulate_value<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,PowerNodeTag>
  192        : public accumulate_value_generic_composite_node<PowerNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>
  196      template<typename CompositeNode, typename Functor, typename Reduction, typename ParentChildReduction, typename Functor::result_type current_value, typename TreePath>
  197      struct accumulate_value<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath,CompositeNodeTag>
  198        : public accumulate_value_generic_composite_node<CompositeNode,Functor,Reduction,ParentChildReduction,current_value,TreePath>
  260    template<typename Tree, typename Functor, typename Reduction, typename Functor::result_type startValue, typename ParentChildReduction = Reduction>
  268      static const result_type result = accumulate_value<Tree,Functor,Reduction,ParentChildReduction,startValue,HybridTreePath<>,NodeTag<Tree>>::result;
  286      template<typename Node, typename Functor, typename Reduction, typename current_type, typename TreePath, bool doVisit>
  295      template<typename Node, typename Functor, typename Reduction, typename current_type, typename TreePath>
  310      template<typename Tree, typename Policy, typename current_type, typename TreePath, typename Tag>
  334      template<typename current_type, typename tree_path, typename start_type, typename reduction_strategy>
  367      template<typename Node, typename Policy, typename current_type, typename TreePath, std::size_t i, std::size_t n>
  401      template<typename Node, typename Policy, typename current_type, typename TreePath, std::size_t n>
  603          using preferDynamicTraversal = std::bool_constant<Visitor::treePathType == TreePathType::dynamic>;
A hybrid multi-index class that supports both compile time and run time indices.
Definition: hybridmultiindex.hh:81
Traits for type conversions and type information.
constexpr index_constant< 0 > _0
Compile time index with value 0.
Definition: indices.hh:52
decltype(auto) constexpr unpackIntegerSequence(F &&f, std::integer_sequence< I, i... > sequence)
Unpack an std::integer_sequence<I,i...> to std::integral_constant<I,i>...
Definition: indices.hh:124
typename detected_or< nonesuch, Op, Args... >::value_t is_detected
Detects whether Op<Args...> is valid.
Definition: type_traits.hh:145
constexpr auto equal_to
Function object for performing equality comparison.
Definition: hybridutilities.hh:573
decltype(auto) ifElse(const Condition &condition, IfFunc &&ifFunc, ElseFunc &&elseFunc)
A conditional expression.
Definition: hybridutilities.hh:345
std::size_t degree(const Node &node)
Returns the degree of node as run time information.
Definition: nodeinterface.hh:79
typename std::decay_t< Node >::NodeTag NodeTag
Returns the node tag of the given Node.
Definition: nodeinterface.hh:70
constexpr auto hybridTreePath(const T &... t)
Constructs a new HybridTreePath from the given indices.
Definition: treepath.hh:184
constexpr auto treePath(const T &... t)
Constructs a new HybridTreePath from the given indices.
Definition: treepath.hh:199
typename impl::_Child< Node, indices... >::type Child
Template alias for the type of a child node given by a list of child indices.
Definition: childextraction.hh:224
ImplementationDefined child(Node &&node, Indices... indices)
Extracts the child of a node given by a sequence of compile-time and run-time indices.
Definition: childextraction.hh:127
constexpr std::integer_sequence< T, II..., T(IN)> push_back(std::integer_sequence< T, II... >, std::integral_constant< T, IN >={})
Append an index IN to the back of the sequence.
Definition: integersequence.hh:69
STL namespace.
Statically accumulate a type over the nodes of a TypeTree.
Definition: accumulate_static.hh:556
accumulate_type< Tree, Policy, typenamePolicy::start_type, HybridTreePath<>, NodeTag< Tree > >::type type
The accumulated result of the computation.
Definition: accumulate_static.hh:565
Statically accumulate a value over the nodes of a TypeTree.
Definition: accumulate_static.hh:262
Functor::result_type result_type
The result type of the computation.
Definition: accumulate_static.hh:265
static const result_type result
The accumulated result of the computation.
Definition: accumulate_static.hh:268
Definition: accumulate_static.hh:469
ParentChildReduction parent_child_reduction
Definition: accumulate_static.hh:527
StartType start_type
Definition: accumulate_static.hh:535
ReductionAlgorithm reduction_strategy
Definition: accumulate_static.hh:541
Reduction sibling_reduction
Definition: accumulate_static.hh:519
Statically combine two values of type result_type using &&.
Definition: accumulate_static.hh:38
Statically combine two values of type result_type by returning their maximum.
Definition: accumulate_static.hh:93
Statically combine two values of type result_type by returning their minimum.
Definition: accumulate_static.hh:82
Statically combine two values of type result_type using -.
Definition: accumulate_static.hh:60
Statically combine two values of type result_type using *.
Definition: accumulate_static.hh:71
Statically combine two values of type result_type using ||.
Definition: accumulate_static.hh:27
Statically combine two values of type result_type using +.
Definition: accumulate_static.hh:49
   | 
                                Legal Statements / Impressum  | 
                                Hosted by  TU Dresden & Uni Heidelberg  | 
				  generated with Hugo v0.111.3
								(Nov 3, 23:36, 2025)