00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH
00018 # define VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH
00019
00020 # include <vaucanson/algebra/concept/semiring_base.hh>
00021
00022 namespace vcsn {
00023
00024 namespace algebra {
00025
00029
00030
00031
00033 struct NumericalSemiring
00034 : SemiringBase<NumericalSemiring>
00035 {
00036 bool operator == (const NumericalSemiring&) const;
00037 };
00038
00042 }
00043
00047
00048
00049
00051 template<>
00052 struct dynamic_traits<algebra::NumericalSemiring>
00053 : dynamic_traits<algebra::SemiringBase<algebra::NumericalSemiring> >
00054 {
00055 };
00056
00057 template<>
00058 struct virtual_types<algebra::NumericalSemiring>
00059 : virtual_types<algebra::SemiringBase<algebra::NumericalSemiring> >
00060 {
00066 typedef algebra::add_kind semigroup_kind;
00067 };
00068
00070 template<typename T>
00071 struct MetaElement<algebra::NumericalSemiring, T>
00072 : MetaElement<algebra::SemiringBase<algebra::NumericalSemiring>, T>
00073 {};
00074
00079 }
00080
00081
00082 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
00083 # include <vaucanson/algebra/concept/numerical_semiring.hxx>
00084 # endif // VCSN_USE_INTERFACE_ONLY
00085
00086
00087 #endif // ! VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH