Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
lal_char_b.hh
Go to the documentation of this file.
1 #ifndef VCSN_CTX_LAL_CHAR_B_HH
2 # define VCSN_CTX_LAL_CHAR_B_HH
3 
4 # include <vcsn/ctx/context.hh>
5 # include <vcsn/ctx/lal_char.hh>
6 # include <vcsn/weightset/b.hh>
7 
8 namespace vcsn
9 {
10  namespace ctx
11  {
13  }
14 }
15 
16 # include <vcsn/misc/name.hh>
17 # include <vcsn/ctx/instantiate.hh>
19 # include <vcsn/algos/complement.hh>
20 # include <vcsn/algos/determinize.hh>
21 # include <vcsn/algos/grail.hh>
22 # include <vcsn/algos/universal.hh>
23 
24 namespace vcsn
25 {
27 # if 0
28  MAYBE_EXTERN template
29  auto
30  determinize(const mutable_automaton<ctx::lal_char_b>& aut)
31  -> mutable_automaton<ctx::lal_char_b>;
32 
33  /* fado. */
34  MAYBE_EXTERN template
35  std::ostream& fado<mutable_automaton<ctx::lal_char_b>>
36  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
37 
38  MAYBE_EXTERN template
39  std::ostream&
40  fado<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
41  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
42  std::ostream& out);
43 
44  /* grail. */
45  MAYBE_EXTERN template
46  std::ostream& grail<mutable_automaton<ctx::lal_char_b>>
47  (const mutable_automaton<ctx::lal_char_b>& aut, std::ostream& out);
48 
49  MAYBE_EXTERN template
50  std::ostream&
51  grail<vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>>
52  (const vcsn::detail::transpose_automaton<mutable_automaton<ctx::lal_char_b>>& aut,
53  std::ostream& out);
54 # endif
55 
56 # if VCSN_INSTANTIATION
57  namespace ctx
58  {
59  namespace detail
60  {
61  template <typename Ctx>
62  bool
63  register_b_functions()
64  {
65  using aut_t = mutable_automaton<Ctx>;
66 
67 #define REGISTER(Algo, ...) \
68  Algo ## _register(ssignature<__VA_ARGS__>(), dyn::detail::Algo<__VA_ARGS__>)
69 
70  REGISTER(are_equivalent, aut_t, aut_t);
71  REGISTER(complement, aut_t);
72  REGISTER(determinize, aut_t, const std::string);
73  REGISTER(fado, aut_t, std::ostream);
74  REGISTER(grail, aut_t, std::ostream);
75  REGISTER(universal, aut_t);
76 # undef REGISTER
77 
78  return true;
79  }
80 
81  static bool register_lal_char_b = register_b_functions<ctx::lal_char_b>();
82  }
83  }
84 # endif // ! VCSN_INSTANTIATION
85 }
86 
87 #endif // !VCSN_CTX_LAL_CHAR_B_HH
auto are_equivalent(const Aut1 &a1, const Aut2 &a2) -> typename std::enable_if<(labelset_t_of< Aut1 >::is_free()&&std::is_same< weightset_t_of< Aut1 >, b >::value &&labelset_t_of< Aut2 >::is_free()&&std::is_same< weightset_t_of< Aut2 >, b >::value), bool >::type
Check equivalence between Boolean automata on a free labelset.
Aut universal(const Aut &a)
Definition: universal.hh:127
#define MAYBE_EXTERN
Definition: instantiate.hh:388
context< lal_char, b > lal_char_b
Definition: lal_char_b.hh:12
std::ostream & grail(const Aut &aut, std::ostream &out)
Definition: grail.hh:313
VCSN_CTX_INSTANTIATE(ctx::lal_char_b)
auto determinize(const Aut &a) -> determinized_automaton< Aut >
Definition: determinize.hh:244
#define REGISTER(Algo,...)
Definition: instantiate.hh:139
std::ostream & fado(const Aut &aut, std::ostream &out)
Definition: grail.hh:223