dune-typetree 2.9
Classes | Typedefs | Functions
Dune::TypeTree::Detail Namespace Reference

Classes

class  ContainerFactory
 
struct  LeafToDefaultConstructibleValue
 
class  TreeContainerVectorBackend
 

Typedefs

template<class Tree >
using DynamicTraversalConcept = decltype((std::declval< Tree >().degree(), std::declval< Tree >().child(0u)))
 
template<class Tree >
using StaticTraversalConcept = decltype((std::integral_constant< std::size_t, Tree::degree()>{}))
 

Functions

template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0>
void applyToTreePair (T1 &&tree1, T2 &&tree2, TreePath treePath, V &&visitor)
 
template<class Tree , TreePathType::Type pathType, class Prefix , std::enable_if_t< Tree::isLeaf, int > = 0>
constexpr auto leafTreePathTuple (Prefix prefix)
 
template<class Tree , TreePathType::Type pathType, class Prefix , std::size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and(pathType!=TreePathType::dynamic))), int > = 0>
constexpr auto leafTreePathTuple (Prefix prefix, std::index_sequence< indices... >)
 
template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T >::isLeaf, int > = 0>
void applyToTree (T &&tree, TreePath treePath, V &&visitor)
 
template<class T , class TreePath , class PreFunc , class LeafFunc , class PostFunc >
void forEachNode (T &&tree, TreePath treePath, PreFunc &&preFunc, LeafFunc &&leafFunc, PostFunc &&postFunc)
 
template<class Container >
auto makeTreeContainerVectorBackend (Container &&container)
 

Typedef Documentation

◆ DynamicTraversalConcept

template<class Tree >
using Dune::TypeTree::Detail::DynamicTraversalConcept = typedef decltype(( std::declval<Tree>().degree(), std::declval<Tree>().child(0u) ))

◆ StaticTraversalConcept

template<class Tree >
using Dune::TypeTree::Detail::StaticTraversalConcept = typedef decltype(( std::integral_constant<std::size_t, Tree::degree()>{} ))

Function Documentation

◆ applyToTree()

template<class T , class TreePath , class V , std::enable_if_t< std::decay_t< T >::isLeaf, int > = 0>
void Dune::TypeTree::Detail::applyToTree ( T &&  tree,
TreePath  treePath,
V &&  visitor 
)

◆ applyToTreePair()

template<class T1 , class T2 , class TreePath , class V , std::enable_if_t<(std::decay_t< T1 >::isLeaf or std::decay_t< T2 >::isLeaf), int > = 0>
void Dune::TypeTree::Detail::applyToTreePair ( T1 &&  tree1,
T2 &&  tree2,
TreePath  treePath,
V &&  visitor 
)

◆ forEachNode()

template<class T , class TreePath , class PreFunc , class LeafFunc , class PostFunc >
void Dune::TypeTree::Detail::forEachNode ( T &&  tree,
TreePath  treePath,
PreFunc &&  preFunc,
LeafFunc &&  leafFunc,
PostFunc &&  postFunc 
)

◆ leafTreePathTuple() [1/2]

template<class Tree , TreePathType::Type pathType, class Prefix , std::enable_if_t< Tree::isLeaf, int > = 0>
constexpr auto Dune::TypeTree::Detail::leafTreePathTuple ( Prefix  prefix)
constexpr

◆ leafTreePathTuple() [2/2]

template<class Tree , TreePathType::Type pathType, class Prefix , std::size_t... indices, std::enable_if_t<(Tree::isComposite or(Tree::isPower and(pathType!=TreePathType::dynamic))), int > = 0>
constexpr auto Dune::TypeTree::Detail::leafTreePathTuple ( Prefix  prefix,
std::index_sequence< indices... >   
)
constexpr

◆ makeTreeContainerVectorBackend()

template<class Container >
auto Dune::TypeTree::Detail::makeTreeContainerVectorBackend ( Container &&  container)