DUNE PDELab (2.7)
childextraction.hh
64 // The actual implementation is rather simple, we just use an overload that requires the first index
66 // It only gets ugly due to the enable_if, but without that trick, the error messages for the user
95 static_assert(Dune::models<HasTemplateChildMethod, Node>(), "Node does not have a template method child()");
103 // The actual implemention here overloads on std::size_t. It is a little less ugly because it currently
104 // has a hard requirement on the PowerNode Tag (although only using is_convertible, as tags can be
145 decltype(auto) childStorage(Node&& node, HybridTreePath<Indices...> tp, std::index_sequence<i...>)
194 //static_assert(sizeof...(Indices) > 0, "childStorage() cannot be called with an empty list of child indices");
239 static_assert(sizeof...(Indices) > 0, "childStorage() cannot be called with an empty TreePath");
260 : public filter_void<std::decay_t<decltype(child(std::declval<Node>(),index_constant<indices>{}...))>>
286 using type = typename std::decay<decltype(child(std::declval<Node>(),std::declval<TreePath>()))>::type;
341 // helper function for check in member child() functions that tolerates being passed something that
A hybrid version of TreePath that supports both compile time and run time indices.
Definition: treepath.hh:79
Infrastructure for concepts.
Documentation related stuff.
Traits for type conversions and type information.
std::integral_constant< std::size_t, i > index_constant
An index constant with value i.
Definition: indices.hh:28
constexpr auto models()
Check if concept is modeled by given types.
Definition: concept.hh:182
typename std::decay_t< Node >::NodeTag NodeTag
Returns the node tag of the given Node.
Definition: nodeinterface.hh:62
std::integral_constant< std::size_t, degree(static_cast< std::decay_t< Node > * >(nullptr), NodeTag< std::decay_t< Node > >()) > StaticDegree
Returns the statically known degree of the given Node type as a std::integral_constant.
Definition: nodeinterface.hh:105
constexpr std::size_t treePathSize(const HybridTreePath< T... > &)
Returns the size (number of components) of the given HybridTreePath.
Definition: treepath.hh:196
constexpr HybridTreePath< T... > treePath(const T &... t)
Constructs a new HybridTreePath from the given indices.
Definition: treepath.hh:188
typename impl::_is_flat_index< std::decay_t< T > >::type is_flat_index
Type trait that determines whether T is a flat index in the context of child extraction.
Definition: childextraction.hh:335
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:276
typename impl::_ChildForTreePath< Node, TreePath >::type ChildForTreePath
Template alias for the type of a child node given by a TreePath or a HybridTreePath type.
Definition: childextraction.hh:303
ImplementationDefined child(Node &&node, HybridTreePath< Indices... > treePath)
Extracts the child of a node given by a HybridTreePath object.
Definition: childextraction.hh:224
Namespace with predefined compile time indices for the range [0,19].
Definition: indices.hh:49
Dummy struct used for documentation purposes.
Definition: documentation.hh:40
![Creative Commons License](https://i.creativecommons.org/l/by-sa/4.0/80x15.png)