Vaucanson 1.4
dump_visitor.hh
00001 // dump_visitor.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_ALGEBRA_IMPLEMENTATION_SERIES_RAT_DUMP_VISITOR_HH
00018 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_RAT_DUMP_VISITOR_HH
00019 
00020 # include <iostream>
00021 # include <string>
00022 # include <set>
00023 # include <boost/shared_ptr.hpp>
00024 
00025 # include <vaucanson/algebra/implementation/series/rat/exp.hh>
00026 # include <vaucanson/algebra/implementation/monoid/monoid_rep.hh>
00027 # include <vaucanson/algebra/implementation/series/series_rep.hh>
00028 # include <vaucanson/misc/iomanip.hh>
00029 # include <vaucanson/misc/usual_macros.hh>
00030 
00031 namespace vcsn
00032 {
00033 
00034   namespace rat
00035   {
00036 
00038     enum print_mode_t
00039       {
00040         MODE_NONE       = 0x0,  
00041         MODE_ADD        = 0x1,  
00042         MODE_MUL        = 0x2,  
00043         MODE_STAR       = 0x4,  
00044         MODE_RWEIGHT    = 0x8,  
00045         MODE_LWEIGHT    = 0x10, 
00046         MODE_WEIGHT     = 0x18, 
00047         MODE_ALL        = 0x1F  
00048       };
00049 
00051 //    template <class Word, class Weight>
00052 //    std::ostream&
00053 //    operator << (std::ostream& ostr, const exp<Word, Weight>& e);
00054 
00056     struct setpm : public misc::iomanip<setpm>
00057     {
00058       setpm (print_mode_t mode);
00059       std::ostream& operator () (std::ostream& ostr) const;
00060     protected:
00061       print_mode_t mode_;
00062     };
00063 
00065     print_mode_t getpm(const std::ostream& ostr);
00066 
00068     struct setzero : public misc::iomanip<setzero>
00069     {
00070       setzero(const std::string& zero);
00071       std::ostream& operator () (std::ostream& ostr) const;
00072     protected:
00073       const std::string& z_;
00074     };
00075 
00077     struct setid : public misc::iomanip<setid>
00078     {
00079       setid(const std::string& id);
00080       std::ostream& operator () (std::ostream& ostr) const;
00081     protected:
00082       const std::string& i_;
00083     };
00084 
00085   } // End of namespace rat.
00086 
00087 } // End of namespace vcsn.
00088 
00089 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00090 #  include <vaucanson/algebra/implementation/series/rat/dump_visitor.hxx>
00091 # endif // VCSN_USE_INTERFACE_ONLY
00092 
00093 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SERIES_RAT_DUMP_VISITOR_HH