state_machine_cpp
example_DoubleLoop_main.cpp
Go to the documentation of this file.
1 //
2 // Created by henri on 10/05/21.
3 //
4 
5 #define STATE_MACHINE_CPP_EXAMPLE_FORLOOP_H
6 #include "../1_ForLoop/example_ForLoop_main.cpp"
7 
8 class DoubleLoop final : public Algorithm::Builder {
9 public:
10 
11  static const State::Id& INITIAL_STATE;
12  static const State::Id& FINAL_STATE;
13 
14  static void show_double_counter(Context& context) {
15  const auto& i = context.get_relative<ForLoop::Attributes>(-1);
16  const auto& j = context.get<ForLoop::Attributes>();
17  std::cout << i.iteration << ", " << j.iteration << std::endl;
18  }
19 
20  void build(States &states, Transitions &transitions, Layers &layers) override {
21  import<ForLoop>(states, transitions, layers);
22 
23  auto A = layers.create();
24  import<ForLoop>(states, transitions, layers);
26  layers.close();
27 
30  }
31 
33  create_attributes(int n, int m) {
35  new Layer(new ForLoop::Attributes(n)),
36  new Layer(new ForLoop::Attributes(m))
37  );
38  }
39 };
40 
43 
44 int main(int argc, const char** argv) {
45 
46  Algorithm::Instance algorithm;
47  Algorithm::build<DoubleLoop>(algorithm);
48  Algorithm::sanity_check(algorithm);
49  Algorithm::plot(algorithm, "my_algorithm_merged");
50 
51  auto context = Context::create<DoubleLoop>(3, 5);
52 
53  Algorithm::run(algorithm, context);
54 
55  return 0;
56 }
state_machine_cpp::State::Id
Definition: state_id.h:23
ForLoop::BEGIN_OF_ITERATION
static const State::Id BEGIN_OF_ITERATION
Definition: example_ForLoop_main.cpp:25
main
int main(int argc, const char **argv)
Definition: example_DoubleLoop_main.cpp:44
state_machine_cpp::Algorithm::plot
void plot(const Algorithm::Instance &t_algorithm, const std::string &t_filename, bool t_run_command=true)
ForLoop::END_OF_ITERATION
static const State::Id END_OF_ITERATION
Definition: example_ForLoop_main.cpp:26
state_machine_cpp::Algorithm::run
void run(const Algorithm::Instance &t_instance, Context &t_context)
state_machine_cpp::Algorithm::Builder::Layers
Definition: builder_layers.h:10
DoubleLoop::build
void build(States &states, Transitions &transitions, Layers &layers) override
Definition: example_DoubleLoop_main.cpp:20
ForLoop::INITIAL_STATE
static const State::Id INITIAL_STATE
Definition: example_ForLoop_main.cpp:23
DoubleLoop::create_attributes
static AttributeTree< Layer< ForLoop::Attributes >, Layer< ForLoop::Attributes > > * create_attributes(int n, int m)
Definition: example_DoubleLoop_main.cpp:33
state_machine_cpp::Algorithm::Instance
Definition: algorithm.h:23
ForLoop::Attributes
Definition: example_ForLoop_main.cpp:13
DoubleLoop::FINAL_STATE
static const State::Id & FINAL_STATE
Definition: example_DoubleLoop_main.cpp:12
state_machine_cpp::Algorithm::Builder::Transitions::override
void override(const State::Any &t_initial_state, const State::Any &t_next_state, Transition::TrivialHandler &t_handler, std::string t_description="")
DoubleLoop::INITIAL_STATE
static const State::Id & INITIAL_STATE
Definition: example_DoubleLoop_main.cpp:11
state_machine_cpp::Algorithm::Builder::States
Definition: builder_states.h:10
ForLoop::Attributes::iteration
int iteration
Definition: example_ForLoop_main.cpp:14
state_machine_cpp::Algorithm::sanity_check
bool sanity_check(const Algorithm::Instance &t_algorithm)
ForLoop::FINAL_STATE
static const State::Id FINAL_STATE
Definition: example_ForLoop_main.cpp:27
state_machine_cpp::AttributeTree
Definition: attribute_tree.h:15
state_machine_cpp::Context::get_relative
T & get_relative(int t_offset)
Definition: context.h:66
DoubleLoop::show_double_counter
static void show_double_counter(Context &context)
Definition: example_DoubleLoop_main.cpp:14
state_machine_cpp::Algorithm::Builder
Definition: builder.h:18
state_machine_cpp::Algorithm::Builder::Layers::close
virtual void close()=0
state_machine_cpp::Context::get
T & get(int t_layer=-1)
Definition: context.h:48
state_machine_cpp::Layer
Definition: layer.h:12
state_machine_cpp::Algorithm::Builder::Layers::create
virtual unsigned int create()=0
state_machine_cpp::Algorithm::Builder::Transitions
Definition: builder_transitions.h:11
state_machine_cpp::Context
Definition: context.h:25
DoubleLoop
Definition: example_DoubleLoop_main.cpp:8