17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_HXX 
   18 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_HXX 
   20 # include <vaucanson/algebra/implementation/series/series.hh> 
   31     template<
typename Semiring, 
typename Mono
id>
 
   32     Series<Semiring, Monoid>::Series(
const Semiring& w, 
const Monoid& m)
 
   33       : SetSlot<Semiring,semiring_slot_tag>(w),
 
   34         SetSlot<Monoid,monoid_slot_tag>(m),
 
   35       rep_(SeriesRepDefault<Semiring, Monoid>::get_instance())
 
   37       rep_->disambiguate((*this).monoid(), rep_);
 
   40     template<
typename Semiring, 
typename Mono
id>
 
   41     Series<Semiring, Monoid>::Series(
const Semiring& w, 
const Monoid& m,
 
   42                                      const SeriesRep<Semiring, Monoid>& sr)
 
   43       : SetSlot<Semiring,semiring_slot_tag>(w),
 
   44         SetSlot<Monoid,monoid_slot_tag>(m),
 
   45       rep_(boost::shared_ptr<SeriesRep<Semiring, Monoid> >(new SeriesRep<Semiring, Monoid>(sr)))
 
   50     template<
typename Semiring, 
typename Mono
id>
 
   51     Series<Semiring, Monoid>::Series(
const Series& other) :
 
   52       SeriesBase<Series<Semiring,Monoid> >(other),
 
   53       SetSlot<Semiring,semiring_slot_tag>(other),
 
   54       SetSlot<Monoid,monoid_slot_tag>(other),
 
   58     template<
typename Semiring, 
typename Mono
id>
 
   64     template<
typename Semiring, 
typename Mono
id>
 
   70     template<
typename Semiring, 
typename Mono
id>
 
   71     const boost::shared_ptr<SeriesRep<Semiring, Monoid> >
 
   77     template<
typename Semiring, 
typename Mono
id>
 
   78     bool Series<Semiring, Monoid>::operator==(
const Series<Semiring, Monoid>& s2)
 const 
   80       return & monoid() == & s2.
monoid() &&
 
   81         & semiring() == & s2.semiring() &&
 
   85     template <
class W, 
class M, 
class NewW, 
class NewM>
 
   86     typename mute_series_traits<Series<W, M>, NewW, NewM >::ret
 
   87     mute_series(
const Series<W, M>& s, 
const NewW& w, 
const NewM& m)
 
   89       return mute_series_traits<Series<W, M>, NewW, NewM >::ret(w, m);
 
   96 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_HXX