17 #ifndef VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HH
18 # define VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HH
21 # include <vaucanson/algebra/concept/monoid_base.hh>
55 typedef undefined_type alphabet_t;
56 typedef undefined_type letter_t;
91 struct dynamic_traits<algebra::FreeMonoidProductBase<Self> >
92 : dynamic_traits<algebra::MonoidBase<Self> >
100 struct virtual_types<algebra::FreeMonoidProductBase<S> >
101 : virtual_types<algebra::MonoidBase<S> >
103 typedef undefined_type first_monoid_t;
104 typedef undefined_type second_monoid_t;
113 template<
class Self,
typename T>
117 typedef typename virtual_types<Self>::first_monoid_t first_monoid_t;
118 typedef typename virtual_types<Self>::second_monoid_t second_monoid_t;
120 typedef typename T::first_type first_monoid_elt_value_t;
121 typedef typename T::second_type second_monoid_elt_value_t;
144 template <
class Ftor>
145 typename Ftor::result_type length(Ftor f);
161 template<
typename Self,
typename St,
typename T>
163 op_rout(
const FreeMonoidProductBase<Self>& s, St& st,
const T& v);
169 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
170 # include <vaucanson/algebra/concept/freemonoid_product_base.hxx>
171 # endif // VCSN_USE_INTERFACE_ONLY
173 #endif // ! VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HH