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 <boost/shared_ptr.hpp>
00021 
00022 # include <vaucanson/algebra/implementation/series/series_rep_base.hh>
00023 
00024 namespace vcsn
00025 {
00026   namespace algebra
00027   {
00028     template <typename S, typename M>
00029     struct SeriesRep : SeriesRepBase<SeriesRep, S, M>
00030     {
00031     };
00032 
00033     template <typename S, typename M>
00034     bool operator==(boost::shared_ptr<SeriesRep<S, M> >,
00035                     boost::shared_ptr<SeriesRep<S, M> >);
00036 
00037     template <typename S, typename M>
00038     struct SeriesRepDefault
00039     {
00040       
00041       typedef SeriesRep<S, M>                   series_rep_t;
00042       typedef boost::shared_ptr<series_rep_t>   pointer_t;
00043 
00044       
00045       static pointer_t get_instance()
00046       {
00047         static pointer_t p(new series_rep_t());
00048         return p;
00049       }
00050     };
00051 
00052   } 
00053 
00054 } 
00055 
00056 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00057 #  include <vaucanson/algebra/implementation/series/series_rep.hxx>
00058 # endif // VCSN_USE_INTERFACE_ONLY
00059 
00060 #endif // !VCSN_ALGEBRA_IMPLEMENTATION_SERIES_SERIES_REP_HH