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
18
static
AttributeTree<Layer<ForLoop::Attributes, PowerLoop::Attributes>
>*
create_attributes
(
int
max_iteration,
unsigned
int
power) {
19
return
new
AttributeTree<Layer<ForLoop::Attributes, PowerLoop::Attributes>
>(
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
38
transitions.
override
(
ForLoop::BEGIN_OF_ITERATION
,
ForLoop::END_OF_ITERATION
,
print_power_of_iteration
);
39
}
40
};
41
42
const
State::Id
&
PowerLoop::INITIAL_STATE
=
ForLoop::INITIAL_STATE
;
43
const
State::Id
&
PowerLoop::FINAL_STATE
=
ForLoop::FINAL_STATE
;
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
examples
2_PowerLoop
example_PowerLoop_main.cpp
Generated by
1.8.17