00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGORITHMS_IS_LETTERIZED_HXX
00018 # define VCSN_ALGORITHMS_IS_LETTERIZED_HXX
00019
00020 # include <vaucanson/algorithms/is_letterized.hh>
00021 # include <vaucanson/automata/concept/automata_base.hh>
00022 # include <vaucanson/tools/usual_macros.hh>
00023
00024 namespace vcsn {
00025
00026 template<typename S, typename A>
00027 bool
00028 do_is_letterized_transducer(const AutomataBase<S>& trans_set,
00029 const A& trans)
00030 {
00031 AUTOMATON_TYPES(A);
00032 bool is_letterized = true;
00033 for_each_transition(e, trans)
00034 {
00035 is_letterized &= is_letter_support(trans.series_of(*e));
00036 for_each_const_(series_set_elt_t::support_t,
00037 i,
00038 trans.series_of(*e).supp())
00039 {
00040 is_letterized &= is_letter_support(trans.series_of(*e).get(*i));
00041 if (!is_letterized)
00042 return false;
00043 }
00044 }
00045 return true;
00046 }
00047
00048 template<typename S, typename A>
00049 bool
00050 is_letterized_transducer(const Element<S, A>& a)
00051 {
00052 return do_is_letterized_transducer(a.structure(), a);
00053 }
00054 }
00055
00056 #endif // ! VCSN_ALGORITHMS_IS_LETTERIZED_HXX