17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_MONOID_FREE_MONOID_HH
18 # define VCSN_ALGEBRA_IMPLEMENTATION_MONOID_FREE_MONOID_HH
22 # include <vaucanson/algebra/concept/freemonoid_base.hh>
23 # include <vaucanson/algebra/implementation/monoid/monoid_rep.hh>
25 # include <vaucanson/misc/usual_macros.hh>
44 typedef A alphabets_elt_t;
45 typedef MonoidRep<FreeMonoid<A> > monoid_rep_t;
46 typedef boost::shared_ptr<monoid_rep_t> shared_monoid_rep_t;
76 shared_monoid_rep_t rep_;
97 struct dynamic_traits<algebra::FreeMonoid<A> >
98 : dynamic_traits<algebra::FreeMonoidBase<algebra::FreeMonoid<A> > >
101 static const bool ret = A::dynamic;
109 template<
typename A,
typename T>
111 :
MetaElement<algebra::FreeMonoidBase<algebra::FreeMonoid<A> >, T>
118 struct virtual_types<algebra::FreeMonoid<A> >
119 : virtual_types<algebra::FreeMonoidBase<algebra::FreeMonoid<A> > >
121 typedef A alphabet_t;
134 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
135 # include <vaucanson/algebra/implementation/monoid/free_monoid.hxx>
136 # endif // VCSN_USE_INTERFACE_ONLY
138 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_MONOID_FREE_MONOID_HH