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