│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │
│ │ │ │ -
6#ifndef DUNE_TYPETREE_VISITOR_HH
│ │ │ │ -
7#define DUNE_TYPETREE_VISITOR_HH
│ │ │ │ +
6#ifndef DUNE_TYPETREE_DYNAMICPOWERNODE_HH
│ │ │ │ +
7#define DUNE_TYPETREE_DYNAMICPOWERNODE_HH
│ │ │ │
│ │ │ │ -
│ │ │ │ -
10#include <dune/common/hybridutilities.hh>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
59 template<
typename T,
typename TreePath>
│ │ │ │ -
60 void pre(T&&, TreePath)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
71 template<
typename T,
typename TreePath>
│ │ │ │ -
72 void in(T&&, TreePath)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
82 template<
typename T,
typename TreePath>
│ │ │ │ -
83 void post(T&&, TreePath)
const {}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
14#include <dune/common/typetraits.hh>
│ │ │ │ +
15#include <dune/common/std/type_traits.hh>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
51 return _children.size();
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
79 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
92 template<
typename T,
typename TreePath>
│ │ │ │ -
93 void leaf(T&&, TreePath)
const {}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
89 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
106 template<
typename T,
typename Child,
typename TreePath,
typename ChildIndex>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
121 template<
typename T,
typename Child,
typename TreePath,
typename ChildIndex>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
99 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
112 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
119 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
120 _children[i] = stackobject_to_shared_ptr(t);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
126 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
127 _children[i] = convert_arg(std::move(t));
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
133 assert(i <
degree() &&
"child index out of range");
│ │ │ │ +
134 _children[i] = std::move(st);
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
175 template<
typename T1,
typename T2,
typename TreePath>
│ │ │ │ -
176 void pre(T1&&, T2&&, TreePath)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
188 template<
typename T1,
typename T2,
typename TreePath>
│ │ │ │ -
189 void in(T1&&, T2&&, TreePath)
const {}
│ │ │ │ -
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
168 : _children(std::move(children))
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
179 template<
typename... Children,
│ │ │ │ +
180 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),
bool> =
true>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
183 _children =
NodeStorage{convert_arg(std::forward<Children>(children))...};
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
186 template<
typename... Children,
│ │ │ │ +
187 std::enable_if_t<(std::is_same_v<ChildType, std::decay_t<Children>> &&...),
bool> =
true>
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
200 template<
typename T1,
typename T2,
typename TreePath>
│ │ │ │ -
201 void post(T1&&, T2&&, TreePath)
const {}
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
│ │ │ │ -
│ │ │ │ -
215 template<
typename T1,
typename T2,
typename TreePath>
│ │ │ │ -
216 void leaf(T1&&, T2&&, TreePath)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
231 template<
typename T1,
typename Child1,
typename T2,
typename Child2,
typename TreePath,
typename ChildIndex>
│ │ │ │ -
232 void beforeChild(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
247 template<
typename T1,
typename Child1,
typename T2,
typename Child2,
typename TreePath,
typename ChildIndex>
│ │ │ │ -
248 void afterChild(T1&&, Child1&&, T2&&, Child2&&, TreePath, ChildIndex)
const {}
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
253 namespace Experimental {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
295 template<
typename T,
typename TreePath,
typename U>
│ │ │ │ -
296 auto pre(T&&, TreePath,
const U& u)
const {
return u;}
│ │ │ │ -
│ │ │ │ -
305 template<
typename T,
typename TreePath,
typename U>
│ │ │ │ -
306 auto in(T&&, TreePath,
const U& u)
const {
return u;}
│ │ │ │ -
│ │ │ │ -
315 template<
typename T,
typename TreePath,
typename U>
│ │ │ │ -
316 auto post(T&&, TreePath,
const U& u)
const {
return u;}
│ │ │ │ -
│ │ │ │ -
325 template<
typename T,
typename TreePath,
typename U>
│ │ │ │ -
326 auto leaf(T&&, TreePath,
const U& u)
const {
return u;}
│ │ │ │ -
│ │ │ │ -
335 template<
typename T,
typename Child,
typename TreePath,
typename ChildIndex,
typename U>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
345 template<
typename T,
typename Child,
typename TreePath,
typename ChildIndex,
typename U>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
364 template<
typename Node1,
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
367 typename Child2 = void,
│ │ │ │ -
368 typename TreePath =
void>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
390 template<
typename Node1,
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
393 typename Child2 = void,
│ │ │ │ -
394 typename TreePath =
void>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
455 namespace Experimental::Info {
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
462 template<
class Tree,
class Child,
class TreePath,
class ChildIndex,
class U>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
468 template<
class Tree,
class Child,
class TreePath,
class U>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
471 return std::size_t{u};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
474 template<
class Tree,
class TreePath,
class U>
│ │ │ │ -
│ │ │ │ -
475 auto leaf(Tree&&, TreePath, U u)
const
│ │ │ │ -
│ │ │ │ -
477 return Hybrid::plus(u,Dune::Indices::_1);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
485 template<
typename Tree,
typename TreePath,
typename U>
│ │ │ │ -
│ │ │ │ -
486 auto pre(Tree&&, TreePath, U u)
const {
│ │ │ │ -
487 return Hybrid::plus(u,Indices::_1);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
496 template<
class Tree,
class TreePath,
class U>
│ │ │ │ -
│ │ │ │ -
497 auto leaf(Tree&&, TreePath, U u)
const
│ │ │ │ -
│ │ │ │ -
499 auto path_size = index_constant<
treePathSize(TreePath{})>{};
│ │ │ │ -
500 auto depth = Hybrid::plus(path_size,Indices::_1);
│ │ │ │ -
501 return Hybrid::max(
depth,u);
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
507 template<
typename Tree>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
515 template<
typename Tree>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
523 template<
typename Tree>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
531 template<
typename Tree>
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
538 template<
typename Tree>
│ │ │ │ -
539 constexpr bool isDynamic = std::is_same<std::size_t, decltype(leafCount(std::declval<Tree>()))>{};
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
│ │ │ │ -
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:225
│ │ │ │ -
constexpr std::size_t treePathSize(const HybridTreePath< T... > &)
Returns the size (number of components) of the given HybridTreePath.
Definition treepath.hh:334
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │ +
│ │ │ │
Definition accumulate_static.hh:16
│ │ │ │ -
auto hybridApplyToTree(Tree &&tree, Visitor &&visitor, Init &&init)
Apply hybrid visitor to TypeTree.
Definition accumulate_static.hh:701
│ │ │ │ -
Type
Definition treepath.hh:106
│ │ │ │ -
@ fullyStatic
Definition treepath.hh:106
│ │ │ │ -
@ dynamic
Definition treepath.hh:106
│ │ │ │ -
constexpr bool isDynamic
true if any of the nodes in the tree only has dynamic degree.
Definition visitor.hh:539
│ │ │ │ -
auto leafCount(const Tree &tree)
The number of leaf nodes in the Tree.
Definition visitor.hh:532
│ │ │ │ -
auto nodeCount(const Tree &tree)
The total number of nodes in the Tree.
Definition visitor.hh:524
│ │ │ │ -
constexpr auto depth()
The depth of the Tree.
Definition visitor.hh:516
│ │ │ │ -
Visitor interface and base class for TypeTree visitors.
Definition visitor.hh:49
│ │ │ │ -
void in(T &&, TreePath) const
Method for infix tree traversal.
Definition visitor.hh:72
│ │ │ │ -
void afterChild(T &&, Child &&, TreePath, ChildIndex) const
Method for child-parent traversal.
Definition visitor.hh:122
│ │ │ │ -
void beforeChild(T &&, Child &&, TreePath, ChildIndex) const
Method for parent-child traversal.
Definition visitor.hh:107
│ │ │ │ -
void post(T &&, TreePath) const
Method for postfix tree traversal.
Definition visitor.hh:83
│ │ │ │ -
void leaf(T &&, TreePath) const
Method for leaf traversal.
Definition visitor.hh:93
│ │ │ │ -
void pre(T &&, TreePath) const
Method for prefix tree traversal.
Definition visitor.hh:60
│ │ │ │ -
Visitor interface and base class for visitors of pairs of TypeTrees.
Definition visitor.hh:164
│ │ │ │ -
void leaf(T1 &&, T2 &&, TreePath) const
Method for leaf traversal.
Definition visitor.hh:216
│ │ │ │ -
void beforeChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const
Method for parent-child traversal.
Definition visitor.hh:232
│ │ │ │ -
void pre(T1 &&, T2 &&, TreePath) const
Method for prefix tree traversal.
Definition visitor.hh:176
│ │ │ │ -
void post(T1 &&, T2 &&, TreePath) const
Method for postfix traversal.
Definition visitor.hh:201
│ │ │ │ -
void in(T1 &&, T2 &&, TreePath) const
Method for infix tree traversal.
Definition visitor.hh:189
│ │ │ │ -
void afterChild(T1 &&, Child1 &&, T2 &&, Child2 &&, TreePath, ChildIndex) const
Method for child-parent traversal.
Definition visitor.hh:248
│ │ │ │ -
Hybrid visitor interface and base class for TypeTree hybrid visitors.
Definition visitor.hh:286
│ │ │ │ -
auto post(T &&, TreePath, const U &u) const
Method for postfix tree traversal.
Definition visitor.hh:316
│ │ │ │ -
auto pre(T &&, TreePath, const U &u) const
Method for prefix tree traversal.
Definition visitor.hh:296
│ │ │ │ -
auto leaf(T &&, TreePath, const U &u) const
Method for leaf traversal.
Definition visitor.hh:326
│ │ │ │ -
auto afterChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const
Method for child-parent traversal.
Definition visitor.hh:346
│ │ │ │ -
auto in(T &&, TreePath, const U &u) const
Method for infix tree traversal.
Definition visitor.hh:306
│ │ │ │ -
auto beforeChild(T &&, Child &&, TreePath, ChildIndex, const U &u) const
Method for parent-child traversal.
Definition visitor.hh:336
│ │ │ │ -
Mixin base class for visitors that only want to visit the direct children of a node.
Definition visitor.hh:358
│ │ │ │ -
Template struct for determining whether or not to visit a given child.
Definition visitor.hh:370
│ │ │ │ -
static const bool value
Do not visit any child.
Definition visitor.hh:372
│ │ │ │ -
Mixin base class for visitors that want to visit the complete tree.
Definition visitor.hh:384
│ │ │ │ -
Template struct for determining whether or not to visit a given child.
Definition visitor.hh:396
│ │ │ │ -
static const bool value
Visit any child.
Definition visitor.hh:398
│ │ │ │ -
Mixin base class for visitors that require a static TreePath during traversal.
Definition visitor.hh:412
│ │ │ │ -
static const TreePathType::Type treePathType
Use the static tree traversal algorithm.
Definition visitor.hh:414
│ │ │ │ -
Mixin base class for visitors that only need a dynamic TreePath during traversal.
Definition visitor.hh:426
│ │ │ │ -
static const TreePathType::Type treePathType
Use the dynamic tree traversal algorithm.
Definition visitor.hh:428
│ │ │ │ -
Convenience base class for visiting the entire tree.
Definition visitor.hh:435
│ │ │ │ -
Convenience base class for visiting the direct children of a node.
Definition visitor.hh:441
│ │ │ │ -
Convenience base class for visiting an entire tree pair.
Definition visitor.hh:447
│ │ │ │ -
Convenience base class for visiting the direct children of a node pair.
Definition visitor.hh:453
│ │ │ │ -
Definition visitor.hh:461
│ │ │ │ -
auto leaf(Tree &&, TreePath, U u) const
Definition visitor.hh:475
│ │ │ │ -
auto beforeChild(Tree &&, Child &&, TreePath, ChildIndex, U u) const
Definition visitor.hh:463
│ │ │ │ -
std::size_t beforeChild(Tree &&, Child &&, TreePath, std::size_t, U u) const
Definition visitor.hh:469
│ │ │ │ -
Definition visitor.hh:484
│ │ │ │ -
auto pre(Tree &&, TreePath, U u) const
Definition visitor.hh:486
│ │ │ │ -
Definition visitor.hh:495
│ │ │ │ -
auto leaf(Tree &&, TreePath, U u) const
Definition visitor.hh:497
│ │ │ │ +
Collect multiple instances of type T within a dune-typetree.
Definition dynamicpowernode.hh:35
│ │ │ │ +
static const bool isPower
Mark this class as a power in the dune-typetree.
Definition dynamicpowernode.hh:43
│ │ │ │ +
std::vector< ChildStorageType > NodeStorage
The type used for storing the children.
Definition dynamicpowernode.hh:67
│ │ │ │ +
const NodeStorage & nodeStorage() const
Definition dynamicpowernode.hh:137
│ │ │ │ +
ChildConstStorageType childStorage(std::size_t i) const
Returns the storage of the i-th child (const version).
Definition dynamicpowernode.hh:110
│ │ │ │ +
const ChildType & child(std::size_t i) const
Returns the i-th child (const version).
Definition dynamicpowernode.hh:87
│ │ │ │ +
std::shared_ptr< T > ChildStorageType
The storage type of each child.
Definition dynamicpowernode.hh:61
│ │ │ │ +
DynamicPowerNode(T &t1, T &t2,...)
Initialize all children with the passed-in objects.
Definition dynamicpowernode.hh:174
│ │ │ │ +
std::shared_ptr< const T > ChildConstStorageType
The const version of the storage type of each child.
Definition dynamicpowernode.hh:64
│ │ │ │ +
DynamicPowerNode(NodeStorage children)
Initialize the DynamicPowerNode with a copy of the passed-in storage type.
Definition dynamicpowernode.hh:167
│ │ │ │ +
DynamicPowerNodeTag NodeTag
The type tag that describes the node.
Definition dynamicpowernode.hh:55
│ │ │ │ +
T ChildType
The type of each child.
Definition dynamicpowernode.hh:58
│ │ │ │ +
void setChild(std::size_t i, ChildType &t)
Sets the i-th child to the passed-in value.
Definition dynamicpowernode.hh:117
│ │ │ │ +
void setChild(std::size_t i, ChildStorageType st)
Sets the stored value representing the i-th child to the passed-in value.
Definition dynamicpowernode.hh:131
│ │ │ │ +
DynamicPowerNode(std::size_t size)
Construct a node with the given number of children.
Definition dynamicpowernode.hh:162
│ │ │ │ +
static const bool isComposite
Mark this class as a non composite in the dune-typetree.
Definition dynamicpowernode.hh:46
│ │ │ │ +
void setChild(std::size_t i, ChildType &&t)
Store the passed value in i-th child.
Definition dynamicpowernode.hh:124
│ │ │ │ +
ChildType & child(std::size_t i)
Returns the i-th child.
Definition dynamicpowernode.hh:77
│ │ │ │ +
std::size_t degree() const
The number of children.
Definition dynamicpowernode.hh:49
│ │ │ │ +
ChildStorageType childStorage(std::size_t i)
Returns the storage of the i-th child.
Definition dynamicpowernode.hh:97
│ │ │ │ +
static const bool isLeaf
Mark this class as non leaf in the dune-typetree.
Definition dynamicpowernode.hh:40
│ │ │ │ +
DynamicPowerNode()=delete
│ │ │ │ +
Tag designating a power node with runtime degree.
Definition nodetags.hh:24
│ │ │ │