17 #ifndef VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HXX
18 # define VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HXX
20 # include <vaucanson/algebra/concept/freemonoid_product_base.hh>
31 typename FreeMonoidProductBase<Self>::first_monoid_t&
34 return this->
self().first_monoid();
41 return this->
self().first_monoid();
48 return this->
self().second_monoid();
55 return this->
self().second_monoid();
73 template <
class Self,
typename T>
78 template <
class Self,
typename T>
84 template <
class Self,
typename T>
89 return op_first(this->structure(), this->value());
92 template <
class Self,
typename T>
98 return op_first(this->structure(), this->value());
101 template <
class Self,
typename T>
106 return op_second(this->structure(), this->value());
109 template <
class Self,
typename T>
115 return op_second(this->structure(), this->value());
118 template <
class Self,
typename T>
122 op_in_mirror(this->structure(), this->value());
125 template <
class Self,
typename T>
126 template <
class Ftor>
127 typename Ftor::result_type
130 return op_length(this->structure(), this->value(), f);
135 template <
typename Self,
typename St,
typename T>
137 op_rout(
const FreeMonoidProductBase<Self>& s,
141 return op_rout(s.self(), st, v);
148 #endif // ! VCSN_ALGEBRA_CONCEPT_FREEMONOID_PRODUCT_BASE_HXX