17 #ifndef VCSN_TOOLS_FSM_DUMP_HXX
18 # define VCSN_TOOLS_FSM_DUMP_HXX
23 # include <vaucanson/automata/concept/handlers.hh>
24 # include <vaucanson/misc/usual_macros.hh>
25 # include <vaucanson/automata/concept/automata_base.hh>
40 template <
typename St,
typename auto_t>
41 void fsm_dump(St& out,
const auto_t& a)
43 AUTOMATON_TYPES(auto_t);
44 if (a.initial().size() > 1)
47 hstate_t i = b.add_state();
48 for_all_initial_states(j, b)
49 b.add_spontaneous(i, *j);
55 if (a.states().size() == 0)
58 typename auto_t::initial_iterator initial = a.initial().begin();
60 for (delta_iterator e(a.value(), *initial); ! e.done(); e.next())
61 out << *initial << "\t" << a.dst_of(*e) << "\t"
62 << a.series_of(*e) << "\t 0"
65 if (!a.is_initial(*s))
67 for (delta_iterator e(a.value(), *s); ! e.done(); e.next())
68 out << *s <<
"\t" << a.dst_of(*e) <<
"\t"
69 << a.series_of(*e) <<
"\t 0"
72 for_all_final_states(f, a)
73 out << *f << "\t 0" << std::endl;
80 #endif // ! VCSN_TOOLS_FSM_DUMP_HXX