17 #ifndef VCSN_ALGORITHMS_KRAT_EXP_FLATTEN_HXX
18 # define VCSN_ALGORITHMS_KRAT_EXP_FLATTEN_HXX
21 # include <vaucanson/algebra/implementation/series/krat_exp_pattern.hh>
27 template <
class Series,
class T,
class Dispatch>
29 KRatExpFlatten<Series, T, Dispatch>,
31 std::list<typename Series::monoid_t::alphabet_t::letter_t>,
37 typedef typename semiring_elt_t::value_t semiring_elt_value_t;
39 typedef typename monoid_elt_t::value_t monoid_elt_value_t;
40 typedef typename monoid_elt_t::set_t monoid_t;
41 typedef typename monoid_t::alphabet_t alphabet_t;
42 typedef typename alphabet_t::letter_t letter_t;
43 typedef std::list<typename Series::monoid_t::alphabet_t::letter_t>
45 INHERIT_CONSTRUCTORS(
self_t, T, return_type, Dispatch);
57 MATCH__(Product, lhs, rhs)
65 MATCH__(Sum, lhs, rhs)
80 MATCH__(LeftWeight, w, e)
88 MATCH__(RightWeight, e, w)
98 for (
size_t i = 0; i < m.length(); ++i)
121 template <
class Series,
class T>
122 std::list<typename Series::monoid_t::alphabet_t::letter_t>
126 return matcher.flatten();
133 #endif // ! VCSN_ALGORITHMS_KRAT_EXP_FLATTEN_HXX