Vaucanson 1.4
|
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