Loading...
Searching...
No Matches
Child Extraction
TypeTree
Collaboration diagram for Child Extraction:

## Typedefs

template<typename Node, std::size_t... indices>
using | Dune::TypeTree::Child = typename Impl::ChildTraits<Node, indices...>::type
| Template alias for the type of a child node given by a list of child indices.
template<typename Node, typename TreePath>
using | Dune::TypeTree::ChildForTreePath = std::decay_t<decltype(child(std::declval<Node>(), std::declval<TreePath>()))>
| Template alias for the type of a child node given by a TreePath type.

## Functions

template<typename Node, typename... Indices>
decltype(auto) | Dune::TypeTree::child (Node &&node, TreePath< Indices... > treePath)
| Extracts the child of a node given by a TreePath object.
template<typename Node, typename... Indices>
decltype(auto) | Dune::TypeTree::child (Node &&node, Indices... indices)
| Extracts the child of a node given by a sequence of compile-time and run-time indices.

## Detailed Description

Utility functions and metafunctions for extracting children from a TypeTree.

## Typedef Documentation

## Child

template<typename Node, std::size_t... indices>

using Dune::TypeTree::Child = typename Impl::ChildTraits<Node, indices...>::type

Template alias for the type of a child node given by a list of child indices.

This template alias is implemented in terms of the free-standing child() functions and uses those in combination with decltype() to extract the child type.

Template Parameters

  Node | The type of the parent node.
  indices | A list of index values the describes the path to the wanted child.

## ChildForTreePath

template<typename Node, typename TreePath>

using Dune::TypeTree::ChildForTreePath = std::decay_t<decltype(child(std::declval<Node>(), std::declval<TreePath>()))>

Template alias for the type of a child node given by a TreePath type.

This template alias is implemented in terms of the free-standing child() functions and uses those in combination with decltype() to extract the child type.

Template Parameters

  Node | The type of the parent node.
  TreePath | The type of a TreePath that describes the path to the wanted child.

## Function Documentation

## child() [1/2]

template<typename Node, typename... Indices>

decltype(auto) Dune::TypeTree::child | ( | Node && | node,
|  | Indices... | indices )

Extracts the child of a node given by a sequence of compile-time and run-time indices.

Use this function to extract a (possibly indirect) child of a TypeTree node.

Example:

using namespace Dune::Indices; // for compile-time indices
auto&& c = child(node,_4,2,_0,1);
Dune::Indices::_0
constexpr index_constant< 0 > _0
Compile time index with value 0.
Definition indices.hh:52
Dune::Indices::_4
constexpr index_constant< 4 > _4
Compile time index with value 4.
Definition indices.hh:64
Dune::TypeTree::child
decltype(auto) child(Node &&node, TreePath< Indices... > treePath)
Extracts the child of a node given by a TreePath object.
Definition childaccess.hh:55
Dune::Indices
Namespace with predefined compile time indices for the range [0,19].
Definition indices.hh:50

returns the second child of the first child of the third child of the fifth child of node, where some child lookups were done using a compile-time index and some using a run-time index.

Parameters

  node | The node from which to extract the child.
  indices | A list of indices that describes the path into the tree to the wanted child. These parameters can be a combination of run time indices (for tree nodes that allow accessing their children using run time information, like PowerNode) and instances of index_constant, which work for all types of inner nodes.

Returns
  A reference to the child, its cv-qualification depends on the passed-in node.

## child() [2/2]

template<typename Node, typename... Indices>

decltype(auto) Dune::TypeTree::child | ( | Node && | node,
|  | TreePath< Indices... > | treePath )

Extracts the child of a node given by a TreePath object.

Use this function to extract a (possibly indirect) child of a TypeTree node.

Example:

using namespace Dune::Indices; // for compile-time indices
auto tp = Dune::TypeTree::TreePath(_4,2,_0,1);
auto&& c = child(node,tp);
Dune::TypeTree::TreePath
Dune::HybridMultiIndex< T... > TreePath
A type for representing tree paths that supports both compile time and run time indices.
Definition treepath.hh:43

returns the second child of the first child of the third child of the fifth child of node, where some child lookups were done using a compile-time index and some using a run-time index.

Parameters

  node | The node from which to extract the child.
  treePath | A TreePath that describes the path into the tree to the wanted child. This tree path object can be a combination of run time indices (for tree nodes that allow accessing their children using run time information, like PowerNode) and instances of index_constant, which work for all types of inner nodes.

Returns
  A reference to the child, its cv-qualification depends on the passed-in node.