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 AI>
00057 typename Element<A, AI>::series_set_elt_t
00058 aut_to_exp(const Element<A, AI>& a);
00059
00077 template<typename A, typename AI, typename Chooser>
00078 typename Element<A, AI>::series_set_elt_t
00079 aut_to_exp(const Element<A, AI>& 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
00103 struct RandomChooser
00104 {
00108 template <class Auto_>
00109 typename Auto_::hstate_t
00110 operator()(const Auto_& a) const;
00111 };
00112
00113
00114 struct HChooser
00115 {
00116 template <class Auto_>
00117 typename Auto_::hstate_t
00118 operator()(const Auto_& a) const;
00119 };
00120
00127 struct DMChooser
00128 {
00132 template <class Auto_>
00133 typename Auto_::hstate_t
00134 operator()(const Auto_& a) const;
00135 };
00136
00145 class ListChooser
00146 {
00147 typedef std::list<unsigned int> list_t;
00148 public :
00149 ListChooser(const list_t& l);
00150
00151 template <class Auto_>
00152 typename Auto_::hstate_t operator() (const Auto_& a);
00153
00154 private :
00155 list_t list_;
00156 list_t::const_iterator pos_;
00157 };
00158
00159 }
00160
00161
00162
00163
00164
00165
00166 # if !defined VCSN_USE_INTERFACE_ONLY
00167 # include <vaucanson/algorithms/aut_to_exp.hxx>
00168 # endif // VCSN_USE_INTERFACE_ONLY
00169
00170 #endif // ! VCSN_ALGORITHMS_AUT_TO_EXP_HH