Go to the documentation of this file.
5 #ifndef STATE_MACHINE_CPP_MERGE_H
6 #define STATE_MACHINE_CPP_MERGE_H
15 template<
class ...>
class AttributeTree;
17 template<
class ...>
class Layer;
27 template<
class ...X,
class ...Y>
40 template<
class ...A,
class HX,
class ...QX>
49 template<
class ...A,
class HY,
class ...QY>
58 template<
class ...A,
class HX,
class ...QX,
class HY,
class ...QY>
69 template<
class ...X>
struct merge;
73 template<
class HY,
class ...QY>
81 merge<std::tuple<HY, QY...>,
Layer<HY, QY...>>::to(t_layer, t_destination);
93 template<
class HX,
class ...QX,
class ...X>
97 if constexpr (!std::is_same_v<HX,
Layer<>>) {
101 merge<std::tuple<QX...>,
AttributeTree<X...>>::to(t_source, t_destination, t_layer + 1);
113 template<
class HX,
class ...QX,
class ...X>
117 dynamic_cast<std::shared_ptr<HX>&
>(t_destination).swap(
dynamic_cast<std::shared_ptr<HX>&
>(*t_source));
118 merge<std::tuple<QX...>,
Layer<X...>>::to(t_source, t_destination);
132 #endif //STATE_MACHINE_CPP_MERGE_H
static void to(Layer< X... > *t_source, AbstractLayer &t_destination)
static void to(AttributeTree< X... > *t_source, AbstractAttributeTree &t_destination, unsigned int t_layer=0)
static void on(Layer< HY, QY... > *t_layer, AbstractLayer &t_destination)
typename merge_t< AttributeTree< A..., HY >, AttributeTree<>, AttributeTree< QY... > >::type type
static void to(Layer< X... > *t_source, AbstractLayer &t_destination)
static void to(AttributeTree< X... > *t_source, AbstractAttributeTree &t_destination, unsigned int t_layer=0)
typename merge_t< AttributeTree< A..., HX >, AttributeTree< QX... >, AttributeTree<> >::type type
typename Impl::merge_t< AttributeTree<>, T... >::type merge_t
typename merge_t< AttributeTree< A..., typename merge_layers< HX, HY >::type >, AttributeTree< QX... >, AttributeTree< QY... > >::type type
static void on(Layer<> *, AbstractLayer &)
virtual AbstractLayer & layer(unsigned int t_i)=0