17 #ifndef VCSN_AUTOMATA_CONCEPT_AUTOMATA_OPS_HH
18 # define VCSN_AUTOMATA_CONCEPT_AUTOMATA_OPS_HH
30 # include <vaucanson/automata/concept/automata_base.hh>
34 #define AutoType(Type) \
35 typename Element<S, T>::Type
44 template<
typename S,
typename R,
typename T>
45 R op_convert(
const AutomataBase<S> &se,
48 template<
typename S,
typename T>
49 const T& op_convert(
const AutomataBase<S>&,
53 template<
typename S,
typename T,
typename U>
56 T& dst,
const U& src);
58 template<
typename S,
typename T>
60 op_assign(
const AutomataBase<S>& concept, T& dst,
const T& src);
62 template <
class S,
class T>
63 const typename automaton_traits<T>::tag_t&
66 template <
class S,
class T>
67 typename automaton_traits<T>::tag_t&
70 template <
class S,
class T>
71 const typename automaton_traits<T>::geometry_t&
74 template <
class S,
class T>
75 typename automaton_traits<T>::geometry_t&
78 template <
class S,
class T>
80 op_exists(
const AutomataBase<S>& s,
const T&);
82 template <
class S,
class T>
83 typename automaton_traits<T>::states_t
84 op_states(
const AutomataBase<S>&,
const T&);
86 template <
class S,
class T>
87 typename automaton_traits<T>::hstate_t
88 op_get_state(
const AutomataBase<S>&,
const T&,
int state);
90 template <
class S,
class T>
91 typename automaton_traits<T>::transitions_t
94 template <
class S,
class T>
95 typename automaton_traits<T>::initial_support_t
98 template <
class S,
class T>
99 typename automaton_traits<T>::final_support_t
100 op_final(
const AutomataBase<S>&,
const T&);
102 template <
class S,
class T>
105 const typename automaton_traits<T>::hstate_t& state,
106 const AutoType(series_set_elt_t)& s);
108 template <
class S,
class T>
109 AutoType(series_set_elt_t)
112 const typename automaton_traits<T>::hstate_t& state);
114 template <class S, class T>
118 const typename automaton_traits<T>::hstate_t& state);
120 template <class S, class T>
123 const typename automaton_traits<T>::hstate_t& state,
124 const typename Element<S, T>::series_set_elt_t& s);
126 template <class S, class T>
127 typename Element<S, T>::series_set_elt_t
130 const typename automaton_traits<T>::hstate_t& state);
132 template <class S, class T>
136 const typename automaton_traits<T>::hstate_t& state);
138 template <class S, class T>
142 const AutoType(series_set_elt_t)& s);
144 template <class S, class T>
145 AutoType(series_set_elt_t)
150 template <class S, class T>
156 template <class S, class T>
160 const typename Element<S, T>::series_set_elt_t& s);
162 template <class S, class T>
163 typename Element<S, T>::series_set_elt_t
168 template <class S, class T>
174 template <class S, class T>
178 template <class S, class T>
182 template <class S, class T>
183 typename automaton_traits<T>::hstate_t
186 template <class S, class T>
187 typename automaton_traits<T>::hstate_t
190 template <class S, class T>
191 typename automaton_traits<T>::htransition_t
193 const typename automaton_traits<T>::hstate_t& from,
194 const typename automaton_traits<T>::hstate_t& to,
195 const typename Element<S, T>::label_t& label);
197 template<class S, class T>
198 typename automaton_traits<T>::htransition_t
200 const typename automaton_traits<T>::hstate_t& from,
201 const typename automaton_traits<T>::hstate_t& to,
202 const typename Element<S, T>::semiring_elt_t& w,
203 const typename Element<S, T>::monoid_elt_value_t& m);
205 template <class S, class T>
206 typename automaton_traits<T>::htransition_t
208 const typename automaton_traits<T>::hstate_t& from,
209 const typename automaton_traits<T>::hstate_t& to,
210 const typename Element<S, T>::series_set_elt_t&);
212 template <class S, class T>
213 typename automaton_traits<T>::htransition_t
215 const typename automaton_traits<T>::hstate_t& from,
216 const typename automaton_traits<T>::hstate_t& to,
217 const typename Element<S, T>::semiring_elt_t&);
219 template <class S, class T>
220 typename automaton_traits<T>::htransition_t
222 const typename automaton_traits<T>::hstate_t& from,
223 const typename automaton_traits<T>::hstate_t& to,
224 const typename Element<S, T>::letter_t&);
226 template <class S, class T>
227 typename automaton_traits<T>::htransition_t
231 const typename Element<S, T>::label_t& label);
233 template<class S, class T>
234 typename automaton_traits<T>::htransition_t
238 const typename Element<S, T>::semiring_elt_t& w,
239 const typename Element<S, T>::monoid_elt_value_t& m);
241 template <class S, class T>
242 typename automaton_traits<T>::htransition_t
246 const typename Element<S, T>::series_set_elt_t&);
248 template <class S, class T>
249 typename automaton_traits<T>::htransition_t
253 const typename Element<S, T>::semiring_elt_t&);
255 template <class S, class T>
256 typename automaton_traits<T>::htransition_t
260 const typename Element<S, T>::letter_t&);
262 template <class S, class T>
265 const typename automaton_traits<T>::htransition_t&,
266 const AutoType(label_t)& l);
268 template <class S, class T>
271 const typename automaton_traits<T>::hstate_t&);
273 template <class S, class T>
278 template <class S, class T>
281 const typename automaton_traits<T>::htransition_t&);
283 template <class S, class T>
286 const typename automaton_traits<T>::hstate_t&);
288 template <class S, class T>
293 template <class S, class T>
296 const typename automaton_traits<T>::htransition_t&);
298 template <class S, class T>
299 typename automaton_traits<T>::hstate_t
300 op_src_of(const AutomataBase<S>&, const T&,
301 const typename automaton_traits<T>::htransition_t&);
303 template <class S, class T>
304 typename automaton_traits<T>::hstate_t
305 op_dst_of(const AutomataBase<S>&, const T&,
306 const typename automaton_traits<T>::htransition_t&);
308 template <class S, class T>
309 typename Element<S, T>::label_t
311 const typename automaton_traits<T>::htransition_t&);
313 template <class S, class T>
314 const typename Element<S, T>::series_set_elt_t
316 const typename automaton_traits<T>::htransition_t&);
318 template <class S, class T>
319 typename Element<S, T>::series_set_elt_value_t
321 const typename automaton_traits<T>::htransition_t&);
324 template <class S, class T>
325 typename Element<S, T>::monoid_elt_t
327 const typename automaton_traits<T>::htransition_t&);
329 template <class S, class T>
330 typename Element<S, T>::semiring_elt_t
332 const typename automaton_traits<T>::htransition_t&);
334 template <class S, class T>
335 typename Element<S, T>::monoid_elt_value_t
337 const typename automaton_traits<T>::htransition_t&);
339 template <class S, class T>
340 typename Element<S, T>::letter_t
342 const typename automaton_traits<T>::htransition_t&);
344 template <class S, class T>
347 const typename automaton_traits<T>::htransition_t&);
357 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
358 # include <vaucanson/automata/concept/automata_ops.hxx>
359 # endif // VCSN_USE_INTERFACE_ONLY
361 #endif // ! VCSN_AUTOMATA_CONCEPT_AUTOMATA_OPS_HH