17 #ifndef VCSN_AUTOMATA_CONCEPT_KINDS_HH
18 # define VCSN_AUTOMATA_CONCEPT_KINDS_HH
25 # include <vaucanson/algebra/concept/series_base.hh>
26 # include <vaucanson/design_pattern/design_pattern.hh>
27 # include <vaucanson/automata/concept/handlers.hh>
40 namespace delta_kind {
51 struct labels_are_series
60 struct ls_delta_letter_query
62 ls_delta_letter_query(
const Series& s,
const L& l);
64 template<
typename Label>
65 bool operator()(
const Label& label)
const;
69 typename MonoidElt::value_t l_;
88 class AutoKind<labels_are_series, Self, Series, SeriesT, LabelT>
91 typedef typename Self::hstate_t hstate_t;
92 typedef typename Self::htransition_t htransition_t;
94 typedef typename Series::monoid_t monoid_t;
95 typedef typename series_set_elt_t::monoid_elt_t monoid_elt_t;
96 typedef typename Series::semiring_t semiring_t;
97 typedef typename series_set_elt_t::semiring_elt_t semiring_elt_t;
103 const SeriesT& series_value_of(htransition_t e)
const;
105 bool is_spontaneous(htransition_t e)
const;
108 L letter_of(
SELECTOR(L), htransition_t e)
const;
110 monoid_elt_t word_of(htransition_t e)
const;
112 const typename monoid_elt_t::value_t& word_value_of(htransition_t e)
const;
115 htransition_t add_series_transition(hstate_t from, hstate_t to,
118 htransition_t add_spontaneous(hstate_t from, hstate_t to);
121 htransition_t add_letter_transition(hstate_t from, hstate_t to,
126 const Self& auto_self()
const;
131 # if !defined VCSN_USE_INTERFACE_ONLY || defined VCSN_USE_LIB
132 # include <vaucanson/automata/concept/kinds.hxx>
133 #endif // VCSN_USE_INTERFACE_ONLY
136 #endif // ! VCSN_AUTOMATA_CONCEPT_KINDS_HH