8 #if defined __cpp_concepts
9 template <
typename Aut>
12 return requires (Aut a)
14 typename state_t_of<Aut>;
15 { a->null_state() } -> state_t_of<Aut>;
16 { a->pre() } -> state_t_of<Aut>;
17 { a->post() } -> state_t_of<Aut>;
19 typename transition_t_of<Aut>;
20 { a->null_transition() } -> transition_t_of<Aut>;
24 # define Automaton typename
36 template <Automaton Aut>
39 return aut->all_out(s);
46 template <Automaton Aut,
typename Pred>
55 template <Automaton Aut>
61 return aut->dst_of(t) != aut->post();
68 template <Automaton Aut>
74 return aut->labelset()->equal(aut->label_of(t), l);
85 template <Automaton Aut>
88 return aut->all_in(s);
95 template <Automaton Aut,
typename Pred>
104 template <Automaton Aut>
110 return aut->src_of(t) != aut->pre();
117 template <Automaton Aut>
123 return aut->labelset()->equal(aut->label_of(t), l);
136 template <Automaton Aut>
138 -> decltype(aut->all_out(aut->pre()))
140 return aut->all_out(aut->pre());
147 template <Automaton Aut>
149 -> decltype(aut->all_in(aut->post()))
151 return aut->all_in(aut->post());
158 template <Automaton Aut>
164 return aut->dst_of(t) == d;
169 template <Automaton Aut>
175 aut->del_transition(t);
183 template <Automaton Aut>
186 return aut->all_transitions();
191 template <Automaton Aut,
typename Pred>
198 template <Automaton Aut>
201 return aut->src_of(t) != aut->pre() && aut->dst_of(t) != aut->post();
206 template <Automaton Aut>
217 template <Automaton Aut>
auto all_out(const Aut &aut, state_t_of< Aut > s)
Indexes of transitions leaving state s.
container_filter_range< Cont, Pred > make_container_filter_range(const Cont &cont, Pred pred)
bool operator()(transition_t_of< Aut > t)
Needed for GCC 5 and 6 that refuse deduced return type for transitions() when using a lambda...
auto all_in(const Aut &aut, state_t_of< Aut > s)
Indexes of transitions entering state s.
void del_transition(const Aut &aut, state_t_of< Aut > s, state_t_of< Aut > d)
Remove all the transitions between s and d.
typename detail::state_t_of_impl< base_t< ValueSet >>::type state_t_of
auto out(const Aut &aut, state_t_of< Aut > s)
Indexes of visible transitions leaving state s.
auto initial_transitions(const Aut &aut) -> decltype(aut->all_out(aut->pre()))
Indexes of transitions to (visible) initial states.
std::vector< typename Cont::value_type > make_vector(const Cont &cont)
The content of cont as a vector.
typename detail::transition_t_of_impl< base_t< ValueSet >>::type transition_t_of
auto transitions(const Aut &aut) -> decltype(all_transitions(aut, is_special_t< Aut >
All the transition indexes between visible states.
bool is_special(const Aut &aut, transition_t_of< Aut > t)
Whether this transition is from pre or to post.
typename detail::label_t_of_impl< base_t< ValueSet >>::type label_t_of
auto outin(const Aut &aut, state_t_of< Aut > s, state_t_of< Aut > d)
Indexes of visible transitions from state s to state d.
auto final_transitions(const Aut &aut) -> decltype(aut->all_in(aut->post()))
Indexes of transitions from (visible) final states.
auto all_transitions(const Aut &aut)
All the transition indexes between all states (including pre and post).
auto in(const Aut &aut, state_t_of< Aut > s)
Indexes of visible transitions arriving to state s.