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