17 #ifndef VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH
18 # define VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH
20 # include <vaucanson/design_pattern/design_pattern.hh>
21 # include <vaucanson/automata/concept/transducer_base.hh>
25 #define AutoType(Type) \
26 typename Element<S, T>::Type
28 template <
class S,
class T>
29 typename Element<S, T>::input_monoid_elt_t
30 op_input_of(
const TransducerBase<S>& s,
32 typename automaton_traits<T>::htransition_t e);
34 template <
class S,
class T>
35 typename Element<S, T>::output_series_set_elt_t
36 op_output_of(
const TransducerBase<S>& s,
38 typename automaton_traits<T>::htransition_t e);
40 template <
class S,
class T>
41 typename automaton_traits<T>::htransition_t
42 op_add_io_transition(
const TransducerBase<S>& s,
44 typename automaton_traits<T>::hstate_t from,
45 typename automaton_traits<T>::hstate_t to,
46 AutoType(input_letter_t) i,
47 AutoType(output_letter_t) o,
48 AutoType(output_semiring_elt_t) w);
50 template <
class S,
class T>
51 typename automaton_traits<T>::htransition_t
52 op_add_io_transition(
const TransducerBase<S>& s,
54 typename automaton_traits<T>::hstate_t from,
55 typename automaton_traits<T>::hstate_t to,
56 AutoType(input_monoid_elt_t) input_w,
57 AutoType(output_monoid_elt_t) output_w,
58 AutoType(output_semiring_elt_t) w);
60 template <
class S,
class T>
61 typename automaton_traits<T>::htransition_t
62 op_add_i_transition(
const TransducerBase<S>& s,
64 typename automaton_traits<T>::hstate_t from,
65 typename automaton_traits<T>::hstate_t to,
66 AutoType(input_letter_t) i,
67 AutoType(output_semiring_elt_t) w);
69 template <
class S,
class T>
70 typename automaton_traits<T>::htransition_t
71 op_add_o_transition(
const TransducerBase<S>& s,
73 typename automaton_traits<T>::hstate_t from,
74 typename automaton_traits<T>::hstate_t to,
75 AutoType(input_letter_t) o,
76 AutoType(output_semiring_elt_t) w);
78 template <
class S,
class T>
79 static AutoType(series_set_elt_t)
80 make_series(const TransducerBase<S>& s,
81 AutoType(output_monoid_elt_value_t) o);
83 template <class S, class T>
85 op_set_o_final(const TransducerBase<S>& s,
87 typename automaton_traits<T>::hstate_t final,
88 AutoType(output_monoid_elt_value_t) o);
90 template <class S, class T>
92 op_set_o_initial(const TransducerBase<S>& s,
94 typename automaton_traits<T>::hstate_t initial,
95 AutoType(output_monoid_elt_value_t) o);
99 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
100 # include <vaucanson/automata/concept/transducer_ops.hxx>
101 #endif // VCSN_USE_INTERFACE_ONLY
104 #endif // ! VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH