4 #ifndef DUNE_TYPETREE_TRAVERSALUTILITIES_HH
5 #define DUNE_TYPETREE_TRAVERSALUTILITIES_HH
25 template<
typename F,
typename R,
typename ResultType>
26 struct LeafReductionVisitor
27 :
public TypeTree::TreeVisitor
32 template<
typename Node,
typename TreePath>
33 void leaf(
const Node& node, TreePath treePath)
38 LeafReductionVisitor(F functor, R reduction, ResultType startValue)
80 template<
typename ResultType,
typename Tree,
typename F,
typename R>
81 ResultType
reduceOverLeafs(
const Tree& tree, F functor, R reduction, ResultType startValue)
83 LeafReductionVisitor<F,R,ResultType> visitor(functor,reduction,startValue);
85 return visitor.result();
93 #endif // DUNE_TYPETREE_TRAVERSALUTILITIES_HH
R _reduction
Definition: traversalutilities.hh:47
Definition: accumulate_static.hh:12
Definition: treepath.hh:26
static const result_type result
Definition: accumulate_static.hh:109
F _functor
Definition: traversalutilities.hh:46
Type
Definition: treepath.hh:26
ResultType reduceOverLeafs(const Tree &tree, F functor, R reduction, ResultType startValue)
Calculate a quantity as a reduction over the leaf nodes of a TypeTree.
Definition: traversalutilities.hh:81
static const TreePathType::Type treePathType
Definition: traversalutilities.hh:30
ResultType _value
Definition: traversalutilities.hh:48
void applyToTree(Tree &&tree, Visitor &&visitor)
Apply visitor to TypeTree.
Definition: traversal.hh:186