17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_RAT_STAR_HEIGHT_VISITOR_HXX
18 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_RAT_STAR_HEIGHT_VISITOR_HXX
22 # include <vaucanson/algebra/implementation/series/rat/star_height_visitor.hh>
28 template<
typename M_,
typename W_>
30 StarHeightVisitor<M_,W_>::sum_or_product(
const Node<M_, W_>* left_,
31 const Node<M_, W_>* right_)
35 size_t left_height = h_;
37 right_->accept(*
this);
38 h_ = std::max(h_, left_height);
41 template<
typename M_,
typename W_>
43 StarHeightVisitor<M_, W_>::weight_or_star(
const Node<M_, W_>* node)
48 template<
typename M_,
typename W_>
50 StarHeightVisitor<M_, W_>::product(
const Node<M_, W_>* left_,
51 const Node<M_, W_>* right_)
53 sum_or_product(left_, right_);
56 template<
typename M_,
typename W_>
58 StarHeightVisitor<M_, W_>::sum(
const Node<M_, W_>* left_,
59 const Node<M_, W_>* right_)
61 sum_or_product(left_, right_);
64 template<
typename M_,
typename W_>
72 template<
typename M_,
typename W_>
74 StarHeightVisitor<M_, W_>::left_weight(
const W_&,
const Node<M_, W_>* node)
79 template<
typename M_,
typename W_>
81 StarHeightVisitor<M_, W_>::right_weight(
const W_&,
const Node<M_, W_>* node)
86 template<
typename M_,
typename W_>
88 StarHeightVisitor<M_, W_>::constant(
const M_&)
92 template<
typename M_,
typename W_>
93 void StarHeightVisitor<M_, W_>::zero()
97 template<
typename M_,
typename W_>
98 void StarHeightVisitor<M_, W_>::one()
102 template<
typename M_,
typename W_>
113 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SERIES_RAT_STAR_HEIGHT_VISITOR_HXX