17 #ifndef VCSN_AUTOMATA_IMPLEMENTATION_AUTOMATON_VIEW_HH
18 # define VCSN_AUTOMATA_IMPLEMENTATION_AUTOMATON_VIEW_HH
20 # include <vaucanson/automata/concept/automata_base.hh>
30 IdentityView(
const T&);
31 IdentityView(
const IdentityView&);
33 const T& object()
const;
37 operator const T&()
const;
41 const T* const_object_;
45 struct automaton_traits< IdentityView<T> >
51 #define AutoType(Type) \
52 typename Element<S, IdentityView<T> >::Type
54 template <
class S,
class T>
55 const typename automaton_traits<T>::tag_t&
56 op_get_tag(
const AutomataBase<S>&,
const IdentityView<T>&);
58 template <
class S,
class T>
59 typename automaton_traits<T>::tag_t&
60 op_get_tag(
const AutomataBase<S>&, IdentityView<T>&);
62 template <
class S,
class T>
63 const typename automaton_traits<T>::geometry_t&
66 template <
class S,
class T>
67 typename automaton_traits<T>::geometry_t&
70 template <
class S,
class T>
72 op_exists(
const AutomataBase<S>&,
const IdentityView<T>&);
74 template <
class S,
class T>
75 typename automaton_traits<T>::states_t
76 op_states(
const AutomataBase<S>&,
const IdentityView<T>&);
78 template <
class S,
class T>
79 typename automaton_traits<T>::transitions_t
82 template <
class S,
class T>
83 typename automaton_traits<T>::initial_support_t
84 op_initial(
const AutomataBase<S>&,
const IdentityView<T>&);
86 template <
class S,
class T>
87 typename automaton_traits<T>::final_support_t
88 op_final(
const AutomataBase<S>&,
const IdentityView<T>&);
90 template <
class S,
class T>
93 const typename automaton_traits<T>::hstate_t& state,
94 const AutoType(series_set_elt_t)& s);
96 template <
class S,
class T>
97 AutoType(series_set_elt_t)
99 const IdentityView<T>&,
100 const typename automaton_traits<T>::hstate_t& state);
102 template <class S, class T>
105 const typename automaton_traits<T>::hstate_t& state,
106 const typename Element<S, T>::series_set_elt_t& s);
108 template <class S, class T>
109 typename Element<S, T>::series_set_elt_t
111 const IdentityView<T>&,
112 const typename automaton_traits<T>::hstate_t& state);
114 template <class S, class T>
118 template <class S, class T>
122 template <class S, class T>
123 typename automaton_traits<T>::hstate_t
126 template <class S, class T>
127 typename automaton_traits<T>::hstate_t
130 template <class S, class T>
131 typename automaton_traits<T>::htransition_t
133 const typename automaton_traits<T>::hstate_t& from,
134 const typename automaton_traits<T>::hstate_t& to,
135 const typename Element<S, T>::label_t& label);
137 template <class S, class T>
138 typename automaton_traits<T>::htransition_t
140 const typename automaton_traits<T>::hstate_t& from,
141 const typename automaton_traits<T>::hstate_t& to,
142 const typename Element<S, T>::series_set_elt_t&);
144 template <class S, class T>
145 typename automaton_traits<T>::htransition_t
147 const typename automaton_traits<T>::hstate_t& from,
148 const typename automaton_traits<T>::hstate_t& to);
150 template <class S, class T>
151 typename automaton_traits<T>::htransition_t
153 const typename automaton_traits<T>::hstate_t& from,
154 const typename automaton_traits<T>::hstate_t& to,
155 const typename Element<S, T>::letter_t&);
157 template <class S, class T>
159 op_update(const AutomataBase<S>&, IdentityView<T>&,
160 const typename automaton_traits<T>::htransition_t&,
161 const AutoType(label_t)& l);
163 template <class S, class T>
166 const typename automaton_traits<T>::hstate_t&);
168 template <class S, class T>
171 const typename automaton_traits<T>::htransition_t&);
173 template <class S, class T>
175 op_has_state(const AutomataBase<S>&, const IdentityView<T>&,
176 const typename automaton_traits<T>::hstate_t&);
178 template <class S, class T>
181 const typename automaton_traits<T>::htransition_t&);
183 template <class S, class T>
184 typename automaton_traits<T>::hstate_t
185 op_src_of(const AutomataBase<S>&, const IdentityView<T>&,
186 const typename automaton_traits<T>::htransition_t&);
188 template <class S, class T>
189 typename automaton_traits<T>::hstate_t
190 op_dst_of(const AutomataBase<S>&, const IdentityView<T>&,
191 const typename automaton_traits<T>::htransition_t&);
193 template <class S, class T>
194 typename Element<S, T>::label_t
195 op_label_of(const AutomataBase<S>&, const IdentityView<T>&,
196 const typename automaton_traits<T>::htransition_t&);
198 template <class S, class T>
199 const typename Element<S, T>::series_set_elt_t
200 op_series_of(const AutomataBase<S>&, const IdentityView<T>&,
201 const typename automaton_traits<T>::htransition_t&);
203 template <class S, class T>
204 typename Element<S, T>::series_set_elt_value_t
206 const typename automaton_traits<T>::htransition_t&);
209 template <class S, class T>
210 typename Element<S, T>::monoid_elt_t
211 op_word_of(const AutomataBase<S>&, const IdentityView<T>&,
212 const typename automaton_traits<T>::htransition_t&);
214 template <class S, class T>
215 typename Element<S, T>::monoid_elt_value_t
217 const typename automaton_traits<T>::htransition_t&);
219 template <class S, class T>
220 typename Element<S, T>::letter_t
221 op_letter_of(const AutomataBase<S>&, const IdentityView<T>&,
222 const typename automaton_traits<T>::htransition_t&);
224 template <class S, class T>
227 const typename automaton_traits<T>::htransition_t&);
234 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
235 # include <vaucanson/automata/implementation/automaton_view.hxx>
236 #endif // VCSN_USE_INTERFACE_ONLY
239 #endif // ! VCSN_AUTOMATA_IMPLEMENTATION_AUTOMATON_VIEW_HH