Vcsn  2.2a
Be Rational
join-automata.hh
Go to the documentation of this file.
1 #pragma once
2 
4 
5 namespace vcsn
6 {
7  namespace detail
8  {
9 
11  template <Automaton... Auts>
12  auto
13  join_automata(Auts&&... auts)
14  -> decltype(make_mutable_automaton(join(auts->context()...)))
15  {
16  return make_mutable_automaton(join(auts->context()...));
17  }
18 
20  template <Automaton... Auts>
21  using join_automata_t = decltype(join_automata<std::declval<Auts>()...>);
22 
23 
25  template <Automaton... Auts>
26  auto
27  nullable_join_context(Auts&&... auts)
28  -> decltype(make_nullableset_context(join(auts->context()...)))
29  {
30  return make_nullableset_context(join(auts->context()...));
31  }
32 
34  template <Automaton... Auts>
35  auto
36  nullable_join_automata(Auts&&... auts)
37  -> decltype(make_mutable_automaton(nullable_join_context(auts...)))
38  {
40  }
41 
43  template <Automaton... Auts>
44  auto
45  meet_automata(Auts&&... auts)
46  -> decltype(make_mutable_automaton(meet(auts->context()...)))
47  {
48  return make_mutable_automaton(meet(auts->context()...));
49  }
50 
51  }
52 }
auto join_automata(Auts &&...auts) -> decltype(make_mutable_automaton(join(auts->context()...)))
An automaton whose type is the join between those of auts.
mutable_automaton< Context > make_mutable_automaton(const Context &ctx)
auto nullable_join_context(Auts &&...auts) -> decltype(make_nullableset_context(join(auts->context()...)))
The nullable context of the join between parameters' context.
decltype(join_automata< std::declval< Auts >()... >) join_automata_t
The type of the join between automata of type Auts.
#define Automaton
Definition: automaton.hh:24
auto join(const ValueSet &vs) -> ValueSet
The join of a single valueset.
Definition: join.hh:44
auto meet_automata(Auts &&...auts) -> decltype(make_mutable_automaton(meet(auts->context()...)))
An automaton whose type is the meet between those of auts.
nullableset_context_t< context< LabelSet, WeightSet > > make_nullableset_context(const context< LabelSet, WeightSet > &ctx)
The nullableset context of a context.
Definition: labelset.hh:174
auto nullable_join_automata(Auts &&...auts) -> decltype(make_mutable_automaton(nullable_join_context(auts...)))
An automaton whose type is the nullable join between those of auts.
auto meet(const expressionset< Ctx1 > &a, const expressionset< Ctx2 > &b) -> expressionset< meet_t< Ctx1, Ctx2 >>
The meet of two expressionsets.
Definition: a-star.hh:8