4#ifndef DUNE_TYPETREE_NODEINTERFACE_HH
5#define DUNE_TYPETREE_NODEINTERFACE_HH
10#include <dune/common/documentation.hh>
35 static const bool isLeaf = implementationDefined;
38 static const bool isPower = implementationDefined;
49 static const std::size_t
CHILDREN = implementationDefined;
75 template<
typename Node>
76 using NodeTag =
typename std::decay_t<Node>::NodeTag;
84 template<
typename Node>
99 template<
typename Node,
typename NodeTag>
102 return node->degree();
112 template<
typename Node>
std::size_t degree(const Node &node)
Returns the degree of node as run time information.
Definition nodeinterface.hh:85
typename std::decay_t< Node >::NodeTag NodeTag
Returns the node tag of the given Node.
Definition nodeinterface.hh:76
typename std::decay_t< T >::ImplementationTag ImplementationTag
Returns the implementation tag of the given Node.
Definition nodeinterface.hh:80
decltype(Node::degree()) StaticDegree
Returns the statically known degree of the given Node type as a std::integral_constant.
Definition nodeinterface.hh:113
Definition accumulate_static.hh:13
Interface for nodes in a dune-typetree.
Definition nodeinterface.hh:33
static const std::size_t CHILDREN
Number of children of this node in the dune-typetree.
Definition nodeinterface.hh:49
static auto degree()
Number of children of this node in the dune-typetree.
static const bool isPower
Whether this is a power node in the dune-typetree.
Definition nodeinterface.hh:38
static const bool isLeaf
Whether this is a leaf node in a dune-typetree.
Definition nodeinterface.hh:35
ImplementationDefined NodeStorage
container type to pass around a collection of children
Definition nodeinterface.hh:71
static const bool isComposite
Whether this is a composite node in the dune-typetree.
Definition nodeinterface.hh:41
ImplementationDefined NodeTag
The type tag that describes what kind of node this is.
Definition nodeinterface.hh:65