00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_MONOID_MONOID_REP_HH
00018 # define VCSN_ALGEBRA_IMPLEMENTATION_MONOID_MONOID_REP_HH
00019
00020 # include <boost/shared_ptr.hpp>
00021
00022 # include <vaucanson/algebra/implementation/monoid/monoid_rep_base.hh>
00023
00024 namespace vcsn
00025 {
00026 namespace algebra
00027 {
00028 template <typename M>
00029 struct MonoidRep : MonoidRepBase<MonoidRep, M>
00030 {
00031 };
00032
00033 template <typename M>
00034 bool operator==(boost::shared_ptr<MonoidRep<M> >,
00035 boost::shared_ptr<MonoidRep<M> >);
00036
00037 template <typename M>
00038 struct MonoidRepDefault
00039 {
00040
00041 typedef MonoidRep<M> monoid_rep_t;
00042 typedef boost::shared_ptr<monoid_rep_t> pointer_t;
00043
00044
00045 static pointer_t get_instance()
00046 {
00047 static pointer_t p(new monoid_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/monoid/monoid_rep.hxx>
00058 # endif // VCSN_USE_INTERFACE_ONLY
00059
00060 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_MONOID_MONOID_REP_HH