- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

# transducer_ops.hh

    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