state_machine_cpp
abstract_attribute_tree.h
Go to the documentation of this file.
1 //
2 // Created by henri on 10/11/21.
3 //
4 
5 #ifndef STATE_MACHINE_CPP_ABSTRACT_ATTRIBUTE_TREE_H
6 #define STATE_MACHINE_CPP_ABSTRACT_ATTRIBUTE_TREE_H
7 
8 namespace state_machine_cpp {
9  class AbstractLayer;
10  class AbstractAttributeTree;
11 
12  namespace Impl {
13  template<class ...X> struct merge;
14  }
15 }
16 
18 protected:
19  friend class Context;
20  template<class ...X> friend struct Impl::merge;
21 
22  virtual AbstractLayer& layer(unsigned int t_i) = 0;
23 
24  [[nodiscard]] virtual const AbstractLayer& layer(unsigned int t_i) const {
25  return const_cast<AbstractAttributeTree&>(*this).layer(t_i);
26  }
27 
28 public:
29 
30  virtual ~AbstractAttributeTree() = default;
31 
32 };
33 
34 
35 #endif //STATE_MACHINE_CPP_ABSTRACT_ATTRIBUTE_TREE_H
state_machine_cpp::AbstractAttributeTree
Definition: abstract_attribute_tree.h:17
state_machine_cpp::AbstractAttributeTree::layer
virtual const AbstractLayer & layer(unsigned int t_i) const
Definition: abstract_attribute_tree.h:24
state_machine_cpp
Definition: algorithm.h:14
state_machine_cpp::AbstractLayer
Definition: abstract_layer.h:12
state_machine_cpp::Impl::merge
Definition: abstract_attribute_tree.h:13
state_machine_cpp::AbstractAttributeTree::~AbstractAttributeTree
virtual ~AbstractAttributeTree()=default
state_machine_cpp::Context
Definition: context.h:25
state_machine_cpp::AbstractAttributeTree::layer
virtual AbstractLayer & layer(unsigned int t_i)=0