Vaucanson 1.4
automaton_maker.thh
00001 //                                                             -*- C++ -*-
00002 // automaton_maker.thh: this file is part of the Vaucanson project.
00003 //
00004 // Vaucanson, a generic library for finite state machines.
00005 //
00006 // Copyright (C) 2007, 2008 The Vaucanson Group.
00007 //
00008 // This program is free software; you can redistribute it and/or
00009 // modify it under the terms of the GNU General Public License
00010 // as published by the Free Software Foundation; either version 2
00011 // of the License, or (at your option) any later version.
00012 //
00013 // The complete GNU General Public Licence Notice can be found as the
00014 // `COPYING' file in the root directory.
00015 //
00016 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
00017 //
00018 
00019 /*
00020  * CPP guard should not be inserted here as
00021  * VCSN_CONTEXT_NAMESPACE could be changed.
00022  */
00023 
00024 namespace vcsn
00025 {
00026   namespace VCSN_GRAPH_IMPL
00027   {
00028     VCSN_CONTEXT_NAMESPACE
00029     {
00030       template <class T>
00031       automaton_t make_automaton(const T& alphabet);
00032 
00033       template <class T>
00034       automaton_t make_automaton(const T& alphabet,
00035                                  const monoid_rep_t& mrep,
00036                                  const series_rep_t& srep);
00037 
00038       template <class InputIterator>
00039       automaton_t make_automaton(InputIterator begin,
00040                                  InputIterator end);
00041 
00042       template <class InputIterator>
00043       automaton_t make_automaton(InputIterator begin,
00044                                  InputIterator end,
00045                                  const monoid_rep_t& mrep,
00046                                  const series_rep_t& srep);
00047 
00048       template <class T>
00049       automaton_letter_t make_automaton_letter(const T& alphabet);
00050 
00051       template <class InputIterator>
00052       automaton_letter_t make_automaton_letter(InputIterator begin,
00053                                                InputIterator end);
00054 
00055       template <class T>
00056       gen_automaton_t make_gen_automaton(const T& alphabet);
00057 
00058       template <class InputIterator>
00059       gen_automaton_t make_gen_automaton(InputIterator begin,
00060                                        InputIterator end);
00061 
00062       template <class Iterator>
00063       rat_exp_t
00064       make_rat_exp(const Iterator& begin,
00065                    const Iterator& end,
00066                    const std::string& exp = (vcsn::algebra::
00067                                              SeriesRepDefault<semiring_t, monoid_t>::
00068                                              get_instance()->zero),
00069                    const monoid_rep_t& mrep = *(vcsn::algebra::
00070                                                 MonoidRepDefault<monoid_t>::
00071                                                 get_instance()),
00072                    const series_rep_t& srep = *(vcsn::algebra::
00073                                                 SeriesRepDefault<semiring_t, monoid_t>::
00074                                                 get_instance()));
00075 
00076       template <class T>
00077       rat_exp_t
00078       make_rat_exp(const T& alphabet,
00079                    const std::string& exp = (vcsn::algebra::
00080                                              SeriesRepDefault<semiring_t, monoid_t>::
00081                                              get_instance()->zero),
00082                    const monoid_rep_t& mrep = *(vcsn::algebra::
00083                                                 MonoidRepDefault<monoid_t>::
00084                                                 get_instance()),
00085                    const series_rep_t& srep = *(vcsn::algebra::
00086                                                 SeriesRepDefault<semiring_t, monoid_t>::
00087                                                 get_instance()));
00088 
00089       template <class SeriesSet, class SeriesImpl>
00090       automaton_t
00091       standard_of(const Element<SeriesSet, SeriesImpl>& e);
00092 
00093 
00094       template <class SeriesSet, class SeriesImpl>
00095       automaton_t
00096       thompson_of(const Element<SeriesSet, SeriesImpl>& e);
00097 
00098       rat_exp_t
00099       aut_to_exp(const automaton_t& a);
00100 
00101       template <class Chooser>
00102       rat_exp_t
00103       aut_to_exp(const automaton_t& a, const Chooser& c);
00104     }
00105   }
00106 }
00107 
00108 # include <vaucanson/contexts/automaton_maker.thxx>
00109