Vaucanson  1.4.1
concept/numerical_semiring.hh
1 // numerical_semiring.hh: this file is part of the Vaucanson project.
2 //
3 // Vaucanson, a generic library for finite state machines.
4 //
5 // Copyright (C) 2001, 2002, 2003, 2004, 2005 The Vaucanson Group.
6 //
7 // This program is free software; you can redistribute it and/or
8 // modify it under the terms of the GNU General Public License
9 // as published by the Free Software Foundation; either version 2
10 // of the License, or (at your option) any later version.
11 //
12 // The complete GNU General Public Licence Notice can be found as the
13 // `COPYING' file in the root directory.
14 //
15 // The Vaucanson Group consists of people listed in the `AUTHORS' file.
16 //
17 #ifndef VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH
18 # define VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH
19 
20 # include <vaucanson/algebra/concept/semiring_base.hh>
21 
22 namespace vcsn {
23 
24  namespace algebra {
25 
29  /*------------------.
30  | NumericalSemiring |
31  `------------------*/
34  : SemiringBase<NumericalSemiring>
35  {
36  bool operator == (const NumericalSemiring&) const;
37  };
38 
42  } // algebra
43 
47  /*----------------------------------.
48  | dynamic_traits<NumericalSemiring> |
49  `----------------------------------*/
51  template<>
52  struct dynamic_traits<algebra::NumericalSemiring>
53  : dynamic_traits<algebra::SemiringBase<algebra::NumericalSemiring> >
54  {
55  };
56 
57  template<>
58  struct virtual_types<algebra::NumericalSemiring>
59  : virtual_types<algebra::SemiringBase<algebra::NumericalSemiring> >
60  {
61  };
62 
64  template<typename T>
65  struct MetaElement<algebra::NumericalSemiring, T>
66  : MetaElement<algebra::SemiringBase<algebra::NumericalSemiring>, T>
67  {};
68 
73 } // vcsn
74 
75 
76 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
77 # include <vaucanson/algebra/concept/numerical_semiring.hxx>
78 # endif // VCSN_USE_INTERFACE_ONLY
79 
80 
81 #endif // ! VCSN_ALGEBRA_CONCEPT_NUMERICAL_SEMIRING_HH