00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_REP_HH
00018 # define VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_REP_HH
00019
00020 # include <string>
00021 # include <vector>
00022
00023 # include <boost/shared_ptr.hpp>
00024
00025 namespace vcsn {
00026
00027 namespace algebra {
00028
00029 template <typename Semiring, typename Monoid>
00030 struct series_rep
00031 {
00032 std::string open_par;
00033 std::string close_par;
00034 std::string plus;
00035 std::string times;
00036 std::string star;
00037 std::string zero;
00038 std::string open_weight;
00039 std::string close_weight;
00040 std::vector<std::string> spaces;
00041
00042
00043 series_rep();
00044 };
00045
00046 template <typename S, typename M>
00047 bool operator==(boost::shared_ptr<series_rep<S, M> >,
00048 boost::shared_ptr<series_rep<S, M> >);
00049
00050 template <typename Semiring, typename Monoid>
00051 struct series_rep_default
00052 {
00053 static boost::shared_ptr<series_rep<Semiring, Monoid> > get_instance()
00054 {
00055 static boost::shared_ptr<series_rep<Semiring, Monoid> > p(new series_rep<Semiring, Monoid>);
00056 return p;
00057 }
00058 };
00059
00060 }
00061
00062 }
00063
00064 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00065 # include <vaucanson/algebra/implementation/series/series_rep.hxx>
00066 # endif // VCSN_USE_INTERFACE_ONLY
00067
00068 #endif // !VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_REP_HH