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 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               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                htransition_t e);
00039 
00040   template <class S, class T>
00041   htransition_t
00042   op_add_io_transition(const TransducerBase<S>& s,
00043                        T& v,
00044                        hstate_t from,
00045                        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   htransition_t
00052   op_add_io_transition(const TransducerBase<S>& s,
00053                        T& v,
00054                        hstate_t from,
00055                        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   htransition_t
00062   op_add_i_transition(const TransducerBase<S>& s,
00063                       T& v,
00064                       hstate_t from,
00065                       hstate_t to,
00066                       AutoType(input_letter_t) i,
00067                       AutoType(output_semiring_elt_t) w);
00068 
00069   template <class S, class T>
00070   htransition_t
00071   op_add_o_transition(const TransducerBase<S>& s,
00072                       T& v,
00073                       hstate_t from,
00074                       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                  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                    hstate_t initial,
00095                    AutoType(output_monoid_elt_value_t) o);
00096 } // vcsn
00097 
00098 
00099 #ifndef VCSN_USE_INTERFACE_ONLY
00100 # include <vaucanson/automata/concept/transducer_ops.hxx>
00101 #endif // VCSN_USE_INTERFACE_ONLY
00102 
00103 
00104 #endif // ! VCSN_AUTOMATA_CONCEPT_TRANSDUCER_OPS_HH

Generated on Sat Jul 29 17:13:12 2006 for Vaucanson by  doxygen 1.4.6