Vaucanson 1.4
|
00001 // transducer_ops.hh: this file is part of the Vaucanson project. 00002 // 00003 // Vaucanson, a generic library for finite state machines. 00004 // 00005 // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 The Vaucanson Group. 00006 // 00007 // This program is free software; you can redistribute it and/or 00008 // modify it under the terms of the GNU General Public License 00009 // as published by the Free Software Foundation; either version 2 00010 // of the License, or (at your option) any later version. 00011 // 00012 // The complete GNU General Public Licence Notice can be found as the 00013 // `COPYING' file in the root directory. 00014 // 00015 // The Vaucanson Group consists of people listed in the `AUTHORS' file. 00016 // 00017 #ifndef VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH 00018 # define VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH 00019 00020 # include <vaucanson/design_pattern/design_pattern.hh> 00021 # include <vaucanson/automata/concept/transducer_base.hh> 00022 00023 namespace vcsn { 00024 00025 #define AutoType(Type) \ 00026 typename Element<S, T>::Type 00027 00028 template <class S, class T> 00029 typename Element<S, T>::input_monoid_elt_t 00030 op_input_of(const TransducerBase<S>& s, 00031 const T& v, 00032 typename automaton_traits<T>::htransition_t e); 00033 00034 template <class S, class T> 00035 typename Element<S, T>::output_series_set_elt_t 00036 op_output_of(const TransducerBase<S>& s, 00037 const T& v, 00038 typename automaton_traits<T>::htransition_t e); 00039 00040 template <class S, class T> 00041 typename automaton_traits<T>::htransition_t 00042 op_add_io_transition(const TransducerBase<S>& s, 00043 T& v, 00044 typename automaton_traits<T>::hstate_t from, 00045 typename automaton_traits<T>::hstate_t to, 00046 AutoType(input_letter_t) i, 00047 AutoType(output_letter_t) o, 00048 AutoType(output_semiring_elt_t) w); 00049 00050 template <class S, class T> 00051 typename automaton_traits<T>::htransition_t 00052 op_add_io_transition(const TransducerBase<S>& s, 00053 T& v, 00054 typename automaton_traits<T>::hstate_t from, 00055 typename automaton_traits<T>::hstate_t to, 00056 AutoType(input_monoid_elt_t) input_w, 00057 AutoType(output_monoid_elt_t) output_w, 00058 AutoType(output_semiring_elt_t) w); 00059 00060 template <class S, class T> 00061 typename automaton_traits<T>::htransition_t 00062 op_add_i_transition(const TransducerBase<S>& s, 00063 T& v, 00064 typename automaton_traits<T>::hstate_t from, 00065 typename automaton_traits<T>::hstate_t to, 00066 AutoType(input_letter_t) i, 00067 AutoType(output_semiring_elt_t) w); 00068 00069 template <class S, class T> 00070 typename automaton_traits<T>::htransition_t 00071 op_add_o_transition(const TransducerBase<S>& s, 00072 T& v, 00073 typename automaton_traits<T>::hstate_t from, 00074 typename automaton_traits<T>::hstate_t to, 00075 AutoType(input_letter_t) o, 00076 AutoType(output_semiring_elt_t) w); 00077 00078 template <class S, class T> 00079 static AutoType(series_set_elt_t) 00080 make_series(const TransducerBase<S>& s, 00081 AutoType(output_monoid_elt_value_t) o); 00082 00083 template <class S, class T> 00084 void 00085 op_set_o_final(const TransducerBase<S>& s, 00086 T& v, 00087 typename automaton_traits<T>::hstate_t final, 00088 AutoType(output_monoid_elt_value_t) o); 00089 00090 template <class S, class T> 00091 void 00092 op_set_o_initial(const TransducerBase<S>& s, 00093 T& v, 00094 typename automaton_traits<T>::hstate_t initial, 00095 AutoType(output_monoid_elt_value_t) o); 00096 } // vcsn 00097 00098 00099 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB 00100 # include <vaucanson/automata/concept/transducer_ops.hxx> 00101 #endif // VCSN_USE_INTERFACE_ONLY 00102 00103 00104 #endif // ! VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH