00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGORITHMS_EVALUATION_RW_HXX
00018 # define VCSN_ALGORITHMS_EVALUATION_RW_HXX
00019
00020 # include <vaucanson/algorithms/evaluation_rw.hh>
00021
00022 # include <vaucanson/algorithms/extension.hh>
00023 # include <vaucanson/algorithms/product.hh>
00024 # include <vaucanson/algorithms/trim.hh>
00025 # include <vaucanson/algorithms/image.hh>
00026
00027 namespace vcsn
00028 {
00029 template <typename SA, typename ST, typename SRET,
00030 typename Auto_t, typename Trans_t, typename Ret_t>
00031 void
00032 do_evaluation_rw(const AutomataBase<SA>&,
00033 const TransducerBase<ST>&,
00034 const AutomataBase<SRET>&,
00035 const Auto_t& a,
00036 const Trans_t& t,
00037 Ret_t& ret)
00038 {
00039 image(trim(product(t, extension(a, t))), ret);
00040 }
00041
00042 template<typename SA, typename TA, typename ST,
00043 typename TT, typename SRET, typename TRET>
00044 void
00045 evaluation_rw(const Element<SA, TA>& a, const Element<ST, TT>& t,
00046 Element<SRET, TRET>& ret)
00047 {
00048 do_evaluation_rw(a.structure(), t.structure(), ret.structure(), a, t, ret);
00049 }
00050
00051 }
00052
00053 #endif // ! VCSN_ALGORITHMS_EVALUATION_RW_HXX