17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_CONVERSION_HH
18 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_CONVERSION_HH
20 # include <vaucanson/algebra/implementation/series/krat.hh>
29 template<
typename Tm,
typename Tw,
typename oTm,
typename oTw,
31 class ExpConvertVisitor :
public rat::ConstNodeVisitor<oTm, oTw>
34 typedef rat::Node<oTm, oTw> node_t;
35 typedef rat::exp<Tm, Tw> exp_t;
38 const Series_& series_;
41 ExpConvertVisitor(
const Series_& s);
45 product(
const node_t* left_,
const node_t* right_);
48 sum(
const node_t* left_,
const node_t* right_);
51 star(
const node_t* node_);
54 left_weight(
const oTw& w,
const node_t* node_);
57 right_weight(
const oTw& w,
const node_t* node_);
60 constant(
const oTm& m_);
73 template<
typename Tm,
typename Tw,
typename W,
typename M,
74 typename oTm,
typename oTw>
77 const Series<W, M>& s,
78 const rat::exp<oTm, oTw>& arg);
80 template<
typename W,
typename M,
typename Tm,
typename Tw,
81 typename oTm,
typename oTw>
82 Element<Series<W, M>, rat::exp<Tm, Tw> >
83 convert_exp(
SELECTOR4(Element<Series<W, M>, rat::exp<Tm, Tw> >),
84 const Element<Series<W, M>, rat::exp<oTm, oTw> >& arg);
91 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
92 # include <vaucanson/algebra/implementation/series/krat_conversion.hxx>
93 #endif // VCSN_USE_INTERFACE_ONLY
96 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SERIES_KRAT_CONVERSION_HH