4#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH
5#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH
13#include <dune/common/exceptions.hh>
24 template<
typename SourceNode,
typename Transformation,
typename TransformedNode>
45 return std::make_shared<transformed_type>(s,t);
51 template<
typename SourceNode,
typename Transformation,
template<
typename Child>
class TransformedNodeTemplate>
60 typedef typename TransformedNodeTemplate<TC>::type
type;
80 return std::make_shared<typename result<TC>::type>(s,t,children);
86 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename,std::
size_t>
class TransformedNode>
90 GenericPowerNodeTransformationTemplate<SourceNode,
92 TransformedNode>::template result
97 template<
typename SourceNode,
typename Transformation,
template<
typename Child>
class TransformedNodeTemplate>
103 template<
typename TC>
106 typedef typename TransformedNodeTemplate<TC>::type
type;
110 template<
typename TC>
111 static typename result<TC>::type transform(
const SourceNode& s,
const Transformation& t,
const std::vector<std::shared_ptr<TC>>& children)
116 template<
typename TC>
117 static typename result<TC>::type transform(std::shared_ptr<const SourceNode> s,
const Transformation& t,
const std::vector<std::shared_ptr<TC>>& children)
122 template<
typename TC>
125 return std::make_shared<typename result<TC>::type>(s,t,children);
131 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename>
class TransformedNode>
135 GenericDynamicPowerNodeTransformationTemplate<SourceNode,
137 TransformedNode>::template result
142 template<
typename SourceNode,
typename Transformation,
template<
typename...>
class TransformedNodeTemplate>
148 template<
typename... TC>
155 template<
typename... TC>
156 static typename result<TC...>::type
transform(
const SourceNode& s,
const Transformation& t, std::shared_ptr<TC>... children)
161 template<
typename... TC>
162 static typename result<TC...>::type
transform(std::shared_ptr<const SourceNode> s,
const Transformation& t, std::shared_ptr<TC>... children)
167 template<
typename... TC>
168 static typename result<TC...>::storage_type
transform_storage(std::shared_ptr<const SourceNode> s,
const Transformation& t, std::shared_ptr<TC>... children)
170 return std::make_shared<
typename result<TC...>::type>(s,t,children...);
176 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename...>
class TransformedNode>
180 GenericCompositeNodeTransformationTemplate<SourceNode,
182 TransformedNode>::template result
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
Definition generictransformationdescriptors.hh:26
TransformedNode transformed_type
Definition generictransformationdescriptors.hh:30
std::shared_ptr< transformed_type > transformed_storage_type
Definition generictransformationdescriptors.hh:31
static transformed_type transform(std::shared_ptr< const SourceNode > s, const Transformation &t)
Definition generictransformationdescriptors.hh:38
static const bool recursive
Definition generictransformationdescriptors.hh:28
static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)
Definition generictransformationdescriptors.hh:43
static transformed_type transform(const SourceNode &s, const Transformation &t)
Definition generictransformationdescriptors.hh:33
Definition generictransformationdescriptors.hh:53
static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)
Definition generictransformationdescriptors.hh:78
static const bool recursive
Definition generictransformationdescriptors.hh:55
static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)
Definition generictransformationdescriptors.hh:72
static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::array< std::shared_ptr< TC >, result< TC >::degree > &children)
Definition generictransformationdescriptors.hh:66
Definition generictransformationdescriptors.hh:59
TransformedNodeTemplate< TC >::type type
Definition generictransformationdescriptors.hh:60
static const std::size_t degree
Definition generictransformationdescriptors.hh:62
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:61
Definition generictransformationdescriptors.hh:94
Definition generictransformationdescriptors.hh:99
static result< TC >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)
Definition generictransformationdescriptors.hh:117
static const bool recursive
Definition generictransformationdescriptors.hh:101
static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)
Definition generictransformationdescriptors.hh:111
static result< TC >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)
Definition generictransformationdescriptors.hh:123
Definition generictransformationdescriptors.hh:105
TransformedNodeTemplate< TC >::type type
Definition generictransformationdescriptors.hh:106
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:107
Definition generictransformationdescriptors.hh:139
Definition generictransformationdescriptors.hh:144
static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:156
static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:168
static result< TC... >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:162
static const bool recursive
Definition generictransformationdescriptors.hh:146
Definition generictransformationdescriptors.hh:150
TransformedNodeTemplate< TC... >::type type
Definition generictransformationdescriptors.hh:151
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:152
Definition generictransformationdescriptors.hh:184