state_machine_cpp
example_PowerLoop_main.cpp
Go to the documentation of this file.
1 //
2 // Created by henri on 10/05/21.
3 //
4 
5 #include <complex>
6 
7 #define STATE_MACHINE_CPP_EXAMPLE_FORLOOP_H
8 #include "../1_ForLoop/example_ForLoop_main.cpp"
9 
10 class PowerLoop final : public Algorithm::Builder {
11 public:
12 
13  struct Attributes {
14  unsigned int power;
15  explicit Attributes(unsigned int power) : power(power) {}
16  };
17 
20  new Layer(new ForLoop::Attributes(max_iteration), new PowerLoop::Attributes(power))
21  );
22  }
23 
24  static const State::Id& INITIAL_STATE;
25  static const State::Id& FINAL_STATE;
26 
27  static void print_power_of_iteration(Context& context) {
28  auto& power_loop_attributes = context.get<PowerLoop::Attributes>();
29  auto& for_loop_attributes = context.get<ForLoop::Attributes>();
30  std::cout << for_loop_attributes.iteration << '^' << power_loop_attributes.power
31  << " = " << std::pow(for_loop_attributes.iteration, power_loop_attributes.power)
32  << std::endl;
33  }
34 
35  void build(States &states, Transitions &transitions, Layers &layers) override {
36  import<ForLoop>(states, transitions, layers);
37 
39  }
40 };
41 
44 
45 int main(int argc, const char** argv) {
46 
47  Algorithm::Instance algorithm;
48  Algorithm::build<PowerLoop>(algorithm);
49  Algorithm::sanity_check(algorithm);
50  Algorithm::plot(algorithm, "my_algorithm");
51 
52  auto context = Context::create<PowerLoop>(3, 2);
53 
54  Algorithm::run(algorithm, context);
55 
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
PowerLoop::Attributes::Attributes
Attributes(unsigned int power)
Definition: example_PowerLoop_main.cpp:15
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
PowerLoop::Attributes::power
unsigned int power
Definition: example_PowerLoop_main.cpp:14
ForLoop::INITIAL_STATE
static const State::Id INITIAL_STATE
Definition: example_ForLoop_main.cpp:23
PowerLoop::create_attributes
static AttributeTree< Layer< ForLoop::Attributes, PowerLoop::Attributes > > * create_attributes(int max_iteration, unsigned int power)
Definition: example_PowerLoop_main.cpp:18
state_machine_cpp::Algorithm::Instance
Definition: algorithm.h:23
ForLoop::Attributes
Definition: example_ForLoop_main.cpp:13
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="")
PowerLoop::print_power_of_iteration
static void print_power_of_iteration(Context &context)
Definition: example_PowerLoop_main.cpp:27
main
int main(int argc, const char **argv)
Definition: example_PowerLoop_main.cpp:45
state_machine_cpp::Algorithm::Builder::States
Definition: builder_states.h:10
PowerLoop::INITIAL_STATE
static const State::Id & INITIAL_STATE
Definition: example_PowerLoop_main.cpp:24
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
PowerLoop::Attributes
Definition: example_PowerLoop_main.cpp:13
PowerLoop
Definition: example_PowerLoop_main.cpp:10
state_machine_cpp::Algorithm::Builder
Definition: builder.h:18
PowerLoop::FINAL_STATE
static const State::Id & FINAL_STATE
Definition: example_PowerLoop_main.cpp:25
PowerLoop::build
void build(States &states, Transitions &transitions, Layers &layers) override
Definition: example_PowerLoop_main.cpp:35
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::Transitions
Definition: builder_transitions.h:11
state_machine_cpp::Context
Definition: context.h:25