6#ifndef DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH
7#define DUNE_TYPETREE_GENERICTRANSFORMATIONDESCRIPTORS_HH
16#include <dune/common/exceptions.hh>
27 template<
typename SourceNode,
typename Transformation,
typename TransformedNode>
48 return std::make_shared<transformed_type>(s,t);
54 template<
typename SourceNode,
typename Transformation,
template<
typename Child>
class TransformedNodeTemplate>
63 typedef typename TransformedNodeTemplate<TC>::type
type;
83 return std::make_shared<typename result<TC>::type>(s,t,children);
89 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename,std::
size_t>
class TransformedNode>
93 GenericPowerNodeTransformationTemplate<SourceNode,
95 TransformedNode>::template result
100 template<
typename SourceNode,
typename Transformation,
template<
typename Child>
class TransformedNodeTemplate>
106 template<
typename TC>
109 typedef typename TransformedNodeTemplate<TC>::type
type;
113 template<
typename TC>
114 static typename result<TC>::type transform(
const SourceNode& s,
const Transformation& t,
const std::vector<std::shared_ptr<TC>>& children)
119 template<
typename TC>
120 static typename result<TC>::type transform(std::shared_ptr<const SourceNode> s,
const Transformation& t,
const std::vector<std::shared_ptr<TC>>& children)
125 template<
typename TC>
128 return std::make_shared<typename result<TC>::type>(s,t,children);
134 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename>
class TransformedNode>
138 GenericDynamicPowerNodeTransformationTemplate<SourceNode,
140 TransformedNode>::template result
145 template<
typename SourceNode,
typename Transformation,
template<
typename...>
class TransformedNodeTemplate>
151 template<
typename... TC>
158 template<
typename... TC>
159 static typename result<TC...>::type
transform(
const SourceNode& s,
const Transformation& t, std::shared_ptr<TC>... children)
164 template<
typename... TC>
165 static typename result<TC...>::type
transform(std::shared_ptr<const SourceNode> s,
const Transformation& t, std::shared_ptr<TC>... children)
170 template<
typename... TC>
171 static typename result<TC...>::storage_type
transform_storage(std::shared_ptr<const SourceNode> s,
const Transformation& t, std::shared_ptr<TC>... children)
173 return std::make_shared<
typename result<TC...>::type>(s,t,children...);
179 template<
typename SourceNode,
typename Transformation,
template<
typename,
typename...>
class TransformedNode>
183 GenericCompositeNodeTransformationTemplate<SourceNode,
185 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:107
Definition accumulate_static.hh:17
Definition accumulate_static.hh:18
Definition generictransformationdescriptors.hh:29
TransformedNode transformed_type
Definition generictransformationdescriptors.hh:33
std::shared_ptr< transformed_type > transformed_storage_type
Definition generictransformationdescriptors.hh:34
static transformed_type transform(std::shared_ptr< const SourceNode > s, const Transformation &t)
Definition generictransformationdescriptors.hh:41
static const bool recursive
Definition generictransformationdescriptors.hh:31
static transformed_storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t)
Definition generictransformationdescriptors.hh:46
static transformed_type transform(const SourceNode &s, const Transformation &t)
Definition generictransformationdescriptors.hh:36
Definition generictransformationdescriptors.hh:56
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:81
static const bool recursive
Definition generictransformationdescriptors.hh:58
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:75
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:69
Definition generictransformationdescriptors.hh:62
TransformedNodeTemplate< TC >::type type
Definition generictransformationdescriptors.hh:63
static const std::size_t degree
Definition generictransformationdescriptors.hh:65
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:64
Definition generictransformationdescriptors.hh:97
Definition generictransformationdescriptors.hh:102
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:120
static const bool recursive
Definition generictransformationdescriptors.hh:104
static result< TC >::type transform(const SourceNode &s, const Transformation &t, const std::vector< std::shared_ptr< TC > > &children)
Definition generictransformationdescriptors.hh:114
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:126
Definition generictransformationdescriptors.hh:108
TransformedNodeTemplate< TC >::type type
Definition generictransformationdescriptors.hh:109
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:110
Definition generictransformationdescriptors.hh:142
Definition generictransformationdescriptors.hh:147
static result< TC... >::type transform(const SourceNode &s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:159
static result< TC... >::storage_type transform_storage(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:171
static result< TC... >::type transform(std::shared_ptr< const SourceNode > s, const Transformation &t, std::shared_ptr< TC >... children)
Definition generictransformationdescriptors.hh:165
static const bool recursive
Definition generictransformationdescriptors.hh:149
Definition generictransformationdescriptors.hh:153
TransformedNodeTemplate< TC... >::type type
Definition generictransformationdescriptors.hh:154
std::shared_ptr< type > storage_type
Definition generictransformationdescriptors.hh:155
Definition generictransformationdescriptors.hh:187