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
00035 # include <vaucanson/design_pattern/design_pattern.hh>
00036 # include <vaucanson/automata/concept/automata_base.hh>
00037
00038 namespace vcsn {
00039
00057 template<typename A, typename AI>
00058 typename Element<A, AI>::series_set_elt_t
00059 aut_to_exp(const Element<A, AI>& a);
00060
00078 template<typename A, typename AI, typename Chooser>
00079 typename Element<A, AI>::series_set_elt_t
00080 aut_to_exp(const Element<A, AI>& a, const Chooser& c);
00081
00092 struct DefaultChooser
00093 {
00094 template <class Auto_>
00095 typename Auto_::hstate_t
00096 operator()(const Auto_& a) const;
00097 };
00098
00104 struct RandomChooser
00105 {
00109 template <class Auto_>
00110 typename Auto_::hstate_t
00111 operator()(const Auto_& a) const;
00112 };
00113
00114
00115 struct HChooser
00116 {
00117 template <class Auto_>
00118 typename Auto_::hstate_t
00119 operator()(const Auto_& a) const;
00120 };
00121
00128 struct DMChooser
00129 {
00133 template <class Auto_>
00134 typename Auto_::hstate_t
00135 operator()(const Auto_& a) const;
00136 };
00137
00146 class ListChooser
00147 {
00148 typedef std::list<unsigned int> list_t;
00149 public :
00150 ListChooser(const list_t& l);
00151
00152 template <class Auto_>
00153 typename Auto_::hstate_t operator() (const Auto_& a);
00154
00155 private :
00156 list_t list_;
00157 list_t::const_iterator pos_;
00158 };
00159
00160 }
00161
00162 # if !defined VCSN_USE_INTERFACE_ONLY && !defined VCSN_USE_LIB
00163 # include <vaucanson/algorithms/aut_to_exp.hxx>
00164 # endif // VCSN_USE_INTERFACE_ONLY
00165
00166 #endif // ! VCSN_ALGORITHMS_AUT_TO_EXP_HH