32 using StateMachine = boost::sml::sm<sml_example::StateMachineLogic>;
38 const std::string output_filename_dot =
"/tmp/sml_transition_diagram.dot";
39 const std::string output_filename_png =
"/tmp/sml_transition_diagram.png";
40 std::ofstream dot_file(output_filename_dot);
41 std::cout <<
"Saving sml tranistion diagram to: `" << output_filename_dot
44 std::cout <<
"You can visualize it by running `dot -Tpng " 45 << output_filename_dot <<
" > " << output_filename_png
46 <<
" && xdg-open " << output_filename_png <<
"`\n";
48 std::cout <<
"----------------------------------------\n";
51 std::cout <<
"----------------------------------------\n";
54 std::cout <<
"----------------------------------------\n";
58 std::cout <<
"----------------------------------------\n";
61 std::reverse(path_1.begin(), path_1.end());
62 for (
size_t i = 0; i < path_1.size() - 1; i++)
66 std::cout <<
"----------------------------------------\n";
69 if (path_2.size() == 1)
70 std::cout <<
"There's no path from 'executing' to 'idle'\n";
void write_path_between_two_states(const vertex_descriptor &start_vertex, const vertex_descriptor &goal_vertex, std::ostream &out=std::cout)
boost::sml::sm< sml_example::StateMachineLogic > StateMachine
void write_graphiz(std::ostream &out=std::cout) const
vertex_descriptor get_vertex_index(const std::string &vertex_name) const
std::string get_vertex_name(const vertex_descriptor &vertex_index) const
std::vector< vertex_descriptor > find_path(const vertex_descriptor &start_vertex, const vertex_descriptor &goal_vertex)
void write_all_reachable_states(const vertex_descriptor &start_vertex, std::ostream &out=std::cout)