Vcsn  2.0
Be Rational
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
fwd.hh
Go to the documentation of this file.
1 #ifndef VCSN_DYN_FWD_HH
2 # define VCSN_DYN_FWD_HH
3 
4 # include <vcsn/misc/export.hh> // LIBVCSN_API
5 # include <vcsn/misc/fwd.hh>
6 # include <vcsn/misc/memory.hh> // make_shared_ptr
7 
8 namespace vcsn
9 {
10  namespace dyn
11  {
12  // vcsn/dyn/automaton.hh.
13  namespace detail
14  {
15  class automaton_base;
16  template <typename Aut>
17  class automaton_wrapper;
18  }
19  using automaton = std::shared_ptr<detail::automaton_base>;
20 
21  // vcsn/dyn/context.hh.
22  namespace detail
23  {
24  class context_base;
25  template <typename Context>
26  class context_wrapper;
27  }
28  using context = std::shared_ptr<const detail::context_base>;
29 
30  // vcsn/dyn/expansion.hh.
31  namespace detail
32  {
33  class expansion_base;
34  template <typename Aut>
35  class expansion_wrapper;
36  }
37  using expansion = std::shared_ptr<const detail::expansion_base>;
38 
39  // vcsn/dyn/label.hh.
40  namespace detail
41  {
42  class label_base;
43  template <typename T>
45  }
46  using label = std::shared_ptr<const detail::label_base>;
47 
48  // vcsn/dyn/polynomial.hh.
49  namespace detail
50  {
51  class polynomial_base;
52  template <typename PolynomialSet>
54  }
55  using polynomial = std::shared_ptr<const detail::polynomial_base>;
56 
57  // vcsn/dyn/ratexp.hh.
58  namespace detail
59  {
60  class ratexp_base;
61  template <typename RatExpSet>
63  }
64  using ratexp = std::shared_ptr<detail::ratexp_base>;
65 
66  // vcsn/dyn/ratexpset.hh
67  namespace detail
68  {
69  class ratexpset_base;
70  template <typename RatExpSet>
72  }
73  using ratexpset = std::shared_ptr<const detail::ratexpset_base>;
74 
75  // vcsn/dyn/weight.hh.
76  namespace detail
77  {
78  class weight_base;
79  template <typename T>
81  }
82  using weight = std::shared_ptr<const detail::weight_base>;
83  }
84 
85  namespace ast
86  {
87  class ast_node;
88  class automaton;
89  class context;
90  class genset;
91  class letterset;
92  class nullableset;
93  class oneset;
94  class other;
95  class polynomialset;
96  class ratexpset;
97  class tupleset;
98  class weightset;
99  class wordset;
100  }
101 } // namespace vcsn
102 
103 // FIXME: Not the best place for this.
104 # define REGISTER_DECLARE(Name, Signature) \
105  using Name ## _t = auto Signature; \
106  LIBVCSN_API \
107  bool Name ## _register(const signature& sig, Name ## _t fn)
108 
109 #endif // !VCSN_DYN_FWD_HH
Linear combination of labels: map labels to weights.
Definition: fwd.hh:32
Aggregate a polynomial and its polynomialset.
Definition: fwd.hh:53
std::shared_ptr< detail::automaton_base > automaton
Definition: automaton.hh:71
A ValueSet which is a Cartesian product of ValueSets.
Definition: fwd.hh:20
Wrapper around a ratexpset.
Definition: fwd.hh:71
Implementation of labels are nullables (letter or empty).
Definition: fwd.hh:13
std::shared_ptr< const detail::weight_base > weight
Definition: fwd.hh:82
Aggregate a ratexp and its ratexpset.
Definition: fwd.hh:62
std::shared_ptr< detail::ratexp_base > ratexp
Definition: fwd.hh:64
Implementation of labels are ones: there is a single instance of label.
Definition: oneset.hh:18
std::shared_ptr< const detail::expansion_base > expansion
Definition: expansion.hh:74
std::shared_ptr< const detail::ratexpset_base > ratexpset
Definition: fwd.hh:73
std::shared_ptr< const detail::label_base > label
Definition: fwd.hh:46
Provide a variadic mul on top of a binary mul(), and one().
Definition: fwd.hh:36
std::shared_ptr< const detail::context_base > context
Definition: context.hh:71
Aggregate a weight and its weightset.
Definition: fwd.hh:80
Implementation of labels are letters.
Definition: fwd.hh:9
Implementation of labels are words.
Definition: fwd.hh:24
Aggregate a label and its labelset.
Definition: fwd.hh:44
std::shared_ptr< const detail::polynomial_base > polynomial
Definition: fwd.hh:55