Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
product.cc
Go to the documentation of this file.
2 #include <vcsn/algos/product.hh>
3 #include <vcsn/dyn/algos.hh>
4 
5 namespace vcsn
6 {
7 
8  namespace dyn
9  {
10  /*----------.
11  | product. |
12  `----------*/
13 
14  REGISTER_DEFINE(product);
15  automaton
16  product(const automaton& lhs, const automaton& rhs)
17  {
18  return detail::product_registry().call(lhs, rhs);
19  }
20 
21  REGISTER_DEFINE(product_vector);
22  automaton
23  product(const std::vector<automaton>& auts)
24  {
25  return detail::product_vector_registry().call_variadic(auts);
26  }
27 
28  /*----------.
29  | shuffle. |
30  `----------*/
31 
32  REGISTER_DEFINE(shuffle);
33  automaton
34  shuffle(const automaton& lhs, const automaton& rhs)
35  {
36  return detail::shuffle_registry().call(lhs, rhs);
37  }
38 
39  REGISTER_DEFINE(shuffle_vector);
40  automaton
41  shuffle(const std::vector<automaton>& auts)
42  {
43  return detail::shuffle_vector_registry().call_variadic(auts);
44  }
45 
46  REGISTER_DEFINE(shuffle_ratexp);
47  ratexp
48  shuffle(const ratexp& lhs, const ratexp& rhs)
49  {
50  return detail::shuffle_ratexp_registry().call(lhs, rhs);
51  }
52 
53  /*---------------.
54  | infiltration. |
55  `---------------*/
56 
57  REGISTER_DEFINE(infiltration);
58  automaton
59  infiltration(const automaton& lhs, const automaton& rhs)
60  {
61  return detail::infiltration_registry().call(lhs, rhs);
62  }
63 
64  REGISTER_DEFINE(infiltration_vector);
65  automaton
66  infiltration(const std::vector<automaton>& auts)
67  {
68  return detail::infiltration_vector_registry().call_variadic(auts);
69  }
70 
71  /*--------.
72  | power. |
73  `--------*/
74 
75  REGISTER_DEFINE(power);
76  automaton
77  power(const automaton& aut, unsigned n)
78  {
79  return detail::power_registry().call(aut, n);
80  }
81 
82  REGISTER_DEFINE(conjunction_ratexp);
83  ratexp
84  conjunction(const ratexp& lhs, const ratexp& rhs)
85  {
86  return detail::conjunction_ratexp_registry().call(lhs, rhs);
87  }
88  }
89 }
automaton product_vector(const std::vector< automaton > &as)
Variadic bridge.
Definition: product.hh:500
std::shared_ptr< detail::automaton_base > automaton
Definition: automaton.hh:71
automaton product(const automaton &lhs, const automaton &rhs)
The product of automata lhs and rhs.
Definition: product.cc:16
automaton shuffle_vector(const std::vector< automaton > &as)
Variadic bridge.
Definition: product.hh:559
automaton shuffle(const automaton &lhs, const automaton &rhs)
The shuffle product of automata lhs and rhs.
Definition: product.cc:34
std::shared_ptr< detail::ratexp_base > ratexp
Definition: fwd.hh:64
automaton infiltration_vector(const std::vector< automaton > &as)
Variadic bridge.
Definition: product.hh:657
ratexp shuffle_ratexp(const ratexp &lhs, const ratexp &rhs)
Bridge.
Definition: product.hh:593
automaton power(const automaton &aut, unsigned n)
Repeated product of aut with itself.
Definition: product.cc:77
automaton infiltration(const automaton &lhs, const automaton &rhs)
The infiltration of automata lhs and rhs.
Definition: product.cc:59
ratexp conjunction_ratexp(const ratexp &lhs, const ratexp &rhs)
Bridge.
Definition: product.hh:755
ratexp conjunction(const ratexp &lhs, const ratexp &rhs)
The Hadamard product of ratexps lhs and rhs.
Definition: product.cc:84