00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_CONCEPT_CYCLIC_SEMIRING_HH
00018 # define VCSN_ALGEBRA_CONCEPT_CYCLIC_SEMIRING_HH
00019
00020 # include <vaucanson/algebra/concept/semiring_base.hh>
00021
00022 namespace vcsn {
00023
00024 namespace algebra {
00025
00026 template <unsigned int n>
00027 struct CyclicSemiring;
00028
00029 }
00030
00034
00035
00036
00037
00039 template<unsigned int n>
00040 struct dynamic_traits<algebra::CyclicSemiring<n> >
00041 : dynamic_traits<algebra::SemiringBase<algebra::CyclicSemiring<n> > >
00042 {
00043 };
00044
00045 template<unsigned int n>
00046 struct virtual_types<algebra::CyclicSemiring<n> >
00047 : virtual_types<algebra::SemiringBase<algebra::CyclicSemiring<n> > >
00048 {
00049 };
00050
00051
00055 namespace algebra {
00056
00060
00061
00062
00063
00065 template <unsigned int n>
00066 struct CyclicSemiring
00067 : SemiringBase<CyclicSemiring<n> >
00068 {
00069 bool operator == (const CyclicSemiring&) const;
00070 };
00071
00075 }
00076
00080
00081
00082
00083
00085 template<unsigned int n, typename T>
00086 struct MetaElement<algebra::CyclicSemiring<n> , T>
00087 : MetaElement<algebra::SemiringBase<algebra::CyclicSemiring<n> >, T>
00088 {};
00089
00093 }
00094
00095
00096 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00097 # include <vaucanson/algebra/concept/cyclic_semiring.hxx>
00098 # endif // VCSN_USE_INTERFACE_ONLY
00099
00100
00101 #endif // ! VCSN_ALGEBRA_CONCEPT_CYCLIC_SEMIRING_HH