17 #ifndef VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_CYCLIC_SEMIRING_HH
18 # define VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_CYCLIC_SEMIRING_HH
20 # include <vaucanson/algebra/concept/cyclic_semiring.hh>
32 template<
unsigned int n,
typename T>
33 T identity_value(
SELECTOR(algebra::CyclicSemiring<n>),
36 template<
unsigned int n,
typename T>
37 bool show_identity_value(
SELECTOR(algebra::CyclicSemiring<n>),
40 template<
unsigned int n,
typename T>
44 template<
unsigned int n,
typename T>
45 T zero_value(
SELECTOR(algebra::CyclicSemiring<n>),
48 template<
unsigned int n,
typename T>
49 T zero_value(
SELECTOR(algebra::CyclicSemiring<n>),
55 template<
unsigned int n,
typename T>
56 bool op_contains(
const algebra::CyclicSemiring<n>& s, T c);
61 template<
unsigned int n,
typename T,
typename U>
62 void op_in_mul(
const algebra::CyclicSemiring<n>& s1,
65 template<
unsigned int n,
typename T,
typename U>
66 T op_mul(
const algebra::CyclicSemiring<n>& s, T a, U b);
73 void op_in_mul<2, bool, bool>(
const algebra::CyclicSemiring<2>&,
77 bool op_mul<2, bool, bool>(
const algebra::CyclicSemiring<2>&,
bool a,
bool b);
82 template<
unsigned int n,
typename T,
typename U>
83 void op_in_add(
const algebra::CyclicSemiring<n>& s1,
86 template<
unsigned int n,
typename T,
typename U>
87 T op_add(
const algebra::CyclicSemiring<n>& s,
95 void op_in_add<2, bool, bool>(
const algebra::CyclicSemiring<2>&,
99 bool op_add<2, bool, bool>(
const algebra::CyclicSemiring<2>&,
bool a,
bool b);
105 template<
unsigned int n,
typename T,
typename U>
106 void op_in_div(
const algebra::CyclicSemiring<n>& s1,
109 template<
unsigned int n,
typename T,
typename U>
110 T op_div(
const algebra::CyclicSemiring<n>& s, T a, U b);
117 void op_in_div<2, bool, bool> (
const algebra::CyclicSemiring<2>& s1,
118 bool& dst,
bool arg);
121 bool op_div<2, bool, bool> (
const algebra::CyclicSemiring<2>& s,
bool a,
bool b);
127 template<
unsigned int n,
typename T,
typename U>
128 void op_in_sub(
const algebra::CyclicSemiring<n>& s1,
131 template<
unsigned int n,
typename T,
typename U>
132 T op_sub(
const algebra::CyclicSemiring<n>& s,
140 void op_in_sub<2, bool, bool> (
const algebra::CyclicSemiring<2>& s1,
141 bool& dst,
bool arg);
144 bool op_sub(
const algebra::CyclicSemiring<2>& s,
150 template <
unsigned int n,
typename T>
152 op_starable(
const algebra::CyclicSemiring<n>&, T b);
154 template <
unsigned int n,
class T>
156 op_in_star(
const algebra::CyclicSemiring<n>& s, T& b);
158 template <
unsigned int n,
class T>
159 Element<algebra::CyclicSemiring<n>, T>
160 op_choose(
const algebra::CyclicSemiring<n>&
set,
SELECTOR(T));
162 template <
unsigned int n,
typename T>
167 template <
unsigned int n,
typename T>
168 Element<algebra::CyclicSemiring<n>, T>
172 template <
unsigned int n,
typename T>
173 Element<algebra::CyclicSemiring<n>, T>
180 template<
unsigned int n,
typename St,
typename T>
181 St&
op_rout(
const algebra::CyclicSemiring<n>& s,
189 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
190 # include <vaucanson/algebra/implementation/semiring/cyclic_semiring.hxx>
191 # endif // VCSN_USE_INTERFACE_ONLY
194 #endif // ! VCSN_ALGEBRA_IMPLEMENTATION_SEMIRING_CYCLIC_SEMIRING_HH