dune-typetree 2.10
|
Namespaces | |
namespace | Dune::TypeTree |
namespace | Dune::TypeTree::Experimental |
namespace | Dune::TypeTree::Experimental::Info |
namespace | Dune::TypeTree::Detail |
Classes | |
struct | Dune::TypeTree::or_< result_type > |
Statically combine two values of type result_type using ||. More... | |
struct | Dune::TypeTree::and_< result_type > |
Statically combine two values of type result_type using &&. More... | |
struct | Dune::TypeTree::plus< result_type > |
Statically combine two values of type result_type using +. More... | |
struct | Dune::TypeTree::minus< result_type > |
Statically combine two values of type result_type using -. More... | |
struct | Dune::TypeTree::multiply< result_type > |
Statically combine two values of type result_type using *. More... | |
struct | Dune::TypeTree::min< result_type > |
Statically combine two values of type result_type by returning their minimum. More... | |
struct | Dune::TypeTree::max< result_type > |
Statically combine two values of type result_type by returning their maximum. More... | |
struct | Dune::TypeTree::AccumulateValue< Tree, Functor, Reduction, startValue, ParentChildReduction > |
Statically accumulate a value over the nodes of a TypeTree. More... | |
struct | Dune::TypeTree::TypeAccumulationPolicy< Functor, Reduction, StartType, ParentChildReduction, ReductionAlgorithm > |
struct | Dune::TypeTree::AccumulateType< Tree, Policy > |
Statically accumulate a type over the nodes of a TypeTree. More... | |
struct | Dune::TypeTree::DefaultVisitor |
Visitor interface and base class for TypeTree visitors. More... | |
struct | Dune::TypeTree::DefaultPairVisitor |
Visitor interface and base class for visitors of pairs of TypeTrees. More... | |
struct | Dune::TypeTree::VisitDirectChildren |
Mixin base class for visitors that only want to visit the direct children of a node. More... | |
struct | Dune::TypeTree::VisitTree |
Mixin base class for visitors that want to visit the complete tree. More... | |
struct | Dune::TypeTree::StaticTraversal |
Mixin base class for visitors that require a static TreePath during traversal. More... | |
struct | Dune::TypeTree::DynamicTraversal |
Mixin base class for visitors that only need a dynamic TreePath during traversal. More... | |
struct | Dune::TypeTree::TreeVisitor |
Convenience base class for visiting the entire tree. More... | |
struct | Dune::TypeTree::DirectChildrenVisitor |
Convenience base class for visiting the direct children of a node. More... | |
struct | Dune::TypeTree::TreePairVisitor |
Convenience base class for visiting an entire tree pair. More... | |
struct | Dune::TypeTree::DirectChildrenPairVisitor |
Convenience base class for visiting the direct children of a node pair. More... | |
Functions | |
template<typename Tree1 , typename Tree2 , typename Visitor > | |
void | Dune::TypeTree::applyToTreePair (Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor) |
Apply visitor to a pair of TypeTrees. | |
template<class Tree , TreePathType::Type pathType = TreePathType::dynamic> | |
constexpr auto | Dune::TypeTree::leafTreePathTuple () |
Create tuple of tree paths to leafs. | |
template<typename Tree , typename Visitor > | |
void | Dune::TypeTree::applyToTree (Tree &&tree, Visitor &&visitor) |
Apply visitor to TypeTree. | |
template<class Tree , class NodeFunc > | |
void | Dune::TypeTree::forEachNode (Tree &&tree, NodeFunc &&nodeFunc) |
Traverse tree and visit each node. | |
template<class Tree , class LeafFunc > | |
void | Dune::TypeTree::forEachLeafNode (Tree &&tree, LeafFunc &&leafFunc) |
Traverse tree and visit each leaf node. | |
template<typename ResultType , typename Tree , typename F , typename R > | |
ResultType | Dune::TypeTree::reduceOverLeafs (const Tree &tree, F functor, R reduction, ResultType startValue) |
Calculate a quantity as a reduction over the leaf nodes of a TypeTree. | |
void Dune::TypeTree::applyToTree | ( | Tree && | tree, |
Visitor && | visitor | ||
) |
Apply visitor to TypeTree.
This function applies the given visitor to the given tree. Both visitor and tree may be const or non-const (if the compiler supports rvalue references, they may even be a non-const temporary).
tree | The tree the visitor will be applied to. |
visitor | The visitor to apply to the tree. |
void Dune::TypeTree::applyToTreePair | ( | Tree1 && | tree1, |
Tree2 && | tree2, | ||
Visitor && | visitor | ||
) |
Apply visitor to a pair of TypeTrees.
This function applies the given visitor to the given tree. Both visitor and tree may be const or non-const. If the compiler supports rvalue references, they may even be a non-const temporary; otherwise both trees must be either const or non-const. If they have different constness, both will be promoted to const.
tree1 | The first tree the visitor will be applied to. |
tree2 | The second tree the visitor will be applied to. |
visitor | The visitor to apply to the trees. |
void Dune::TypeTree::forEachLeafNode | ( | Tree && | tree, |
LeafFunc && | leafFunc | ||
) |
Traverse tree and visit each leaf node.
The passed callback function is called with the node and corresponding treepath as arguments.
tree | The tree to traverse |
leafFunc | This function is called for each leaf node |
void Dune::TypeTree::forEachNode | ( | Tree && | tree, |
NodeFunc && | nodeFunc | ||
) |
Traverse tree and visit each node.
The passed callback function is called with the node and corresponding treepath as arguments.
tree | The tree to traverse |
nodeFunc | This function is called for each node |
|
constexpr |
Create tuple of tree paths to leafs.
This creates a tuple of HybridTreePath objects refering to the leaf nodes in the tree. The generated tree paths are always HybridTreePath instances. If pathType is TreePathType::dynamic then path entries for power nodes are of type std::size_t. For all other nodes and if pathType is not TreePathType::dynamic, the entries are instances of Dune::index_constant.
Tree | Type of tree to generate tree paths for |
pathType | Type of paths to generate |
ResultType Dune::TypeTree::reduceOverLeafs | ( | const Tree & | tree, |
F | functor, | ||
R | reduction, | ||
ResultType | startValue | ||
) |
Calculate a quantity as a reduction over the leaf nodes of a TypeTree.
This function can be used to easily calculate a quantity that is a result of applying a functor to the leaf nodes of a TypeTree and combining the functor return values. The functor, reduction and result should all have cheap copy constructors to ensure good performance.
The functor must conform to the pattern
tree | The tree on which to perform the calculation. |
functor | The functor to apply to the leaf nodes. |
reduction | The operation used to combine the individual results. |
startValue | The initial value for the result. |