dune-typetree 2.11
Loading...
Searching...
No Matches
Dune::TypeTree Namespace Reference

Namespaces

namespace  Experimental
namespace  Detail
namespace  TreePathType
namespace  impl

Classes

struct  or_
 Statically combine two values of type result_type using ||. More...
struct  and_
 Statically combine two values of type result_type using &&. More...
struct  plus
 Statically combine two values of type result_type using +. More...
struct  minus
 Statically combine two values of type result_type using -. More...
struct  multiply
 Statically combine two values of type result_type using *. More...
struct  min
 Statically combine two values of type result_type by returning their minimum. More...
struct  max
 Statically combine two values of type result_type by returning their maximum. More...
struct  AccumulateValue
 Statically accumulate a value over the nodes of a TypeTree. More...
struct  TypeAccumulationPolicy
struct  AccumulateType
 Statically accumulate a type over the nodes of a TypeTree. More...
class  CompositeNode
 Base class for composite nodes based on variadic templates. More...
class  DynamicPowerNode
 Collect multiple instances of type T within a dune-typetree. More...
class  Exception
 Base class for all TypeTree exceptions. More...
class  FilteredCompositeNode
 Base class for composite nodes representing a filtered view on an underlying composite node. More...
struct  FilterEntry
 A filter entry describing the mapping of one child in the filtered node. More...
struct  FilterResult
 The result of a filter. More...
struct  SimpleFilterTag
 Tag describing a simple filter that can only decide whether or not to include a single given child. More...
struct  AdvancedFilterTag
 Tag describing an advanced filter that has full control over the construction of the list of FilterEntries. More...
struct  AdvancedFilter
 Base class for advanced filters. More...
struct  SimpleFilter
 Default simple filter that accepts any node and leaves its child structure unchanged. More...
struct  IndexFilter
 Filter class for FilteredCompositeNode that selects the children with the given indices. More...
struct  filter
 Adapter class that takes a SimpleFilter, validated it and turns it into an AdvancedFilter. More...
class  FixedCapacityStackView
class  FixedCapacityStack
struct  GenericLeafNodeTransformation
struct  TemplatizedGenericPowerNodeTransformation
struct  GenericPowerNodeTransformation
struct  TemplatizedGenericDynamicPowerNodeTransformation
struct  GenericDynamicPowerNodeTransformation
struct  TemplatizedGenericCompositeNodeTransformation
struct  GenericCompositeNodeTransformation
class  LeafNode
 Base class for leaf nodes in a dune-typetree. More...
struct  NodeInterface
 Interface for nodes in a dune-typetree. More...
struct  LeafNodeTag
 Tag designating a leaf node. More...
struct  PowerNodeTag
 Tag designating a power node. More...
struct  DynamicPowerNodeTag
 Tag designating a power node with runtime degree. More...
struct  CompositeNodeTag
 Tag designating a composite node. More...
struct  GenericPowerNodeTransformationTemplate
struct  GenericDynamicPowerNodeTransformationTemplate
struct  GenericCompositeNodeTransformationTemplate
class  PowerNode
 Collect k instances of type T within a dune-typetree. More...
class  ProxyNode
 Base class for nodes acting as a proxy for an existing node. More...
class  StaticChildAccessors
 Mixin class providing methods for child access with compile-time parameter. More...
class  DynamicChildAccessors
 Mixin class providing methods for child access with run-time parameter. More...
struct  ProxyNodeBase
 Tag-based dispatch to appropriate base class that provides necessary functionality. More...
struct  ProxyNodeBase< Node, LeafNodeTag >
 ProxyNode base class for LeafNode. More...
struct  ProxyNodeBase< Node, CompositeNodeTag >
 ProxyNode base class for CompositeNode. More...
struct  ProxyNodeBase< Node, PowerNodeTag >
 ProxyNode base class for PowerNode. More...
struct  ProxyNodeBase< Node, DynamicPowerNodeTag >
 ProxyNode base class for DynamicPowerNode. More...
struct  SimpleLeafNodeTransformation
struct  SimplePowerNodeTransformation
struct  SimpleDynamicPowerNodeTransformation
struct  SimpleCompositeNodeTransformation
struct  TransformTree
 Transform a TypeTree. More...
struct  TreePathSize
struct  TreePathPushBack
struct  TreePathPushFront
struct  TreePathBack
struct  TreePathFront
struct  TreePathPopBack
struct  TreePathPopFront
struct  TreePathConcat
struct  TreePathSize< HybridTreePath< index_constant< i >... > >
struct  TreePathPushBack< HybridTreePath< index_constant< i >... >, k >
struct  TreePathPushFront< HybridTreePath< index_constant< i >... >, k >
struct  TreePathBack< HybridTreePath< index_constant< k > > >
struct  TreePathBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... > >
struct  TreePathFront< HybridTreePath< index_constant< k >, index_constant< i >... > >
struct  TreePathPopBack< HybridTreePath< index_constant< k > >, i... >
struct  TreePathPopBack< HybridTreePath< index_constant< j >, index_constant< k >, index_constant< l >... >, i... >
struct  TreePathPopFront< HybridTreePath< index_constant< k >, index_constant< i >... > >
struct  TreePathConcat< HybridTreePath< index_constant< i >... >, HybridTreePath< index_constant< k >... > >
struct  has_node_tag
struct  has_node_tag_value
struct  has_implementation_tag
struct  has_implementation_tag_value
struct  AlwaysVoid
struct  meta_function
 Marker tag declaring a meta function. More...
struct  lazy_evaluate
 Helper meta function to delay evaluation of F. More...
struct  lazy_identity
 Identity function. More...
struct  evaluate_if_meta_function
 Meta function that evaluates its argument iff it inherits from meta_function. More...
struct  IsTreePath
 Check if type represents a tree path. More...
struct  TreeInfo
 Struct for obtaining some basic structural information about a TypeTree. More...
struct  DefaultVisitor
 Visitor interface and base class for TypeTree visitors. More...
struct  DefaultPairVisitor
 Visitor interface and base class for visitors of pairs of TypeTrees. More...
struct  VisitDirectChildren
 Mixin base class for visitors that only want to visit the direct children of a node. More...
struct  VisitTree
 Mixin base class for visitors that want to visit the complete tree. More...
struct  StaticTraversal
 Mixin base class for visitors that require a static TreePath during traversal. More...
struct  DynamicTraversal
 Mixin base class for visitors that only need a dynamic TreePath during traversal. More...
struct  TreeVisitor
 Convenience base class for visiting the entire tree. More...
struct  DirectChildrenVisitor
 Convenience base class for visiting the direct children of a node. More...
struct  TreePairVisitor
 Convenience base class for visiting an entire tree pair. More...
struct  DirectChildrenPairVisitor
 Convenience base class for visiting the direct children of a node pair. More...

Typedefs

template<typename T>
using is_flat_index = typename impl::_is_flat_index<std::decay_t<T>>::type
 Type trait that determines whether T is a flat index in the context of child extraction.
template<typename Node>
using NodeTag = typename std::decay_t<Node>::NodeTag
 Returns the node tag of the given Node.
template<typename T>
using ImplementationTag = typename std::decay_t<T>::ImplementationTag
 Returns the implementation tag of the given Node.
template<typename Node>
using StaticDegree = decltype(Node::degree())
 Returns the statically known degree of the given Node type as a std::integral_constant.
template<typename... T>
using HybridTreePath = Dune::HybridMultiIndex<T...>
 A type for representing tree paths that supports both compile time and run time indices.
template<std::size_t... i>
using StaticTreePath = HybridTreePath<Dune::index_constant<i>...>

Functions

template<typename Node, typename... Indices>
auto childStorage (Node &&node, Indices... indices)
template<typename Node, typename... Indices>
auto childStorage (Node &&node, HybridTreePath< Indices... > treePath)
template<typename Node>
std::size_t degree (const Node &node)
 Returns the degree of node as run time information.
template<typename Tree1, typename Tree2, typename Visitor>
void applyToTreePair (Tree1 &&tree1, Tree2 &&tree2, Visitor &&visitor)
 Apply visitor to a pair of TypeTrees.
template<typename SourceNode, typename Transformation, typename Tag>
void registerNodeTransformation (SourceNode *, Transformation *, Tag *)
 Register transformation descriptor to transform SourceNode with Transformation.
template<class Tree, TreePathType::Type pathType = TreePathType::dynamic>
constexpr auto leafTreePathTuple ()
 Create tuple of tree paths to leafs.
template<Concept::TreeNode Tree, typename Visitor>
void applyToTree (Tree &&tree, Visitor &&visitor)
 Apply visitor to TypeTree.
template<typename ResultType, typename Tree, typename F, typename R>
ResultType reduceOverLeafs (const Tree &tree, F functor, R reduction, ResultType startValue)
 Calculate a quantity as a reduction over the leaf nodes of a TypeTree.
template<typename... T>
requires (((std::is_integral_v<T> or Dune::IsIntegralConstant<T>::value) && ...))
constexpr auto hybridTreePath (const T &... t)
 Constructs a new HybridTreePath from the given indices.
template<std::size_t... i>
void print_tree_path (std::ostream &os)
template<std::size_t k, std::size_t... i>
void print_tree_path (std::ostream &os)
template<typename... T>
requires (((std::is_integral_v<T> or Dune::IsIntegralConstant<T>::value) && ...))
constexpr auto makeTreePath (const T... t)
 helper function to construct a new HybridTreePath from the given indices.
template<typename... T>
constexpr std::size_t treePathSize (const HybridTreePath< T... > &)
 Returns the size (number of components) of the given HybridTreePath.
template<std::size_t i, typename... T>
constexpr auto treePathEntry (const HybridTreePath< T... > &tp, index_constant< i >={})
 Returns a copy of the i-th element of the HybridTreePath.
template<std::size_t i, typename... T>
constexpr std::size_t treePathIndex (const HybridTreePath< T... > &tp, index_constant< i >={})
 Returns the index value of the i-th element of the HybridTreePath.
template<typename T>
T * declptr ()
 Helper function for generating a pointer to a value of type T in an unevaluated operand setting.
template<class T>
constexpr auto isTreePath (const T &) -> IsTreePath< T >
 Check if given object represents a tree path.

Typedef Documentation

◆ is_flat_index

template<typename T>
using Dune::TypeTree::is_flat_index = typename impl::_is_flat_index<std::decay_t<T>>::type

Type trait that determines whether T is a flat index in the context of child extraction.

Function Documentation

◆ childStorage() [1/2]

template<typename Node, typename... Indices>
auto Dune::TypeTree::childStorage ( Node && node,
HybridTreePath< Indices... > treePath )

◆ childStorage() [2/2]

template<typename Node, typename... Indices>
auto Dune::TypeTree::childStorage ( Node && node,
Indices... indices )

◆ declptr()

template<typename T>
T * Dune::TypeTree::declptr ( )

Helper function for generating a pointer to a value of type T in an unevaluated operand setting.

◆ isTreePath()

template<class T>
auto Dune::TypeTree::isTreePath ( const T & ) ->IsTreePath< T >
constexpr

Check if given object represents a tree path.

Template Parameters
TCheck if this type represents a tree path
Returns
std::true_type if argument is a tree path and std::false_type if not