00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGORITHMS_AUT_TO_EXP_HH
00018 # define VCSN_ALGORITHMS_AUT_TO_EXP_HH
00019
00032
00033
00034 # include <vaucanson/design_pattern/design_pattern.hh>
00035 # include <vaucanson/automata/concept/automata_base.hh>
00036
00037 namespace vcsn {
00038
00056 template<typename A, typename T>
00057 typename Element<A, T>::series_set_elt_t
00058 aut_to_exp(const Element<A, T>& a);
00059
00077 template<typename A, typename T, typename Chooser_>
00078 typename Element<A, T>::series_set_elt_t
00079 aut_to_exp(const Element<A, T>& a, const Chooser_& c);
00080
00091 struct DefaultChooser
00092 {
00093 template <class Auto_>
00094 typename Auto_::hstate_t
00095 operator()(const Auto_& a) const;
00096 };
00097
00104 struct RandomChooser
00105 {
00106 template <class Auto_>
00107 typename Auto_::hstate_t
00108 operator()(const Auto_& a) const;
00109 };
00110
00111
00112 struct HChooser
00113 {
00114 template <class Auto_>
00115 typename Auto_::hstate_t
00116 operator()(const Auto_& a) const;
00117 };
00118
00119 struct DMChooser
00120 {
00121 template <class Auto_>
00122 typename Auto_::hstate_t
00123 operator()(const Auto_& a) const;
00124 };
00125
00134 class ListChooser
00135 {
00136 typedef std::list<unsigned int> list_t;
00137 public :
00138 ListChooser(const list_t& l);
00139
00140 template <class Auto_>
00141 typename Auto_::hstate_t operator() (const Auto_& a);
00142
00143 private :
00144 list_t list_;
00145 list_t::const_iterator pos_;
00146 };
00147
00148 }
00149
00150 # if !defined VCSN_USE_INTERFACE_ONLY && !defined VCSN_USE_LIB
00151 # include <vaucanson/algorithms/aut_to_exp.hxx>
00152 # endif // VCSN_USE_INTERFACE_ONLY
00153
00154 #endif // ! VCSN_ALGORITHMS_AUT_TO_EXP_HH