17 #ifndef AWALI_CORE_RAT_VISITOR_HH
18 # define AWALI_CORE_RAT_VISITOR_HH
23 namespace awali {
namespace sttc
28 template <
typename Label,
typename Weight>
37 template <type_t Type>
39 template <type_t Type>
41 template <type_t Type>
46 # define DEFINE(Type) \
47 using Type ## _t = Type<label_t, weight_t>; \
48 virtual void visit(const Type ## _t& v)
69 # define AWALI_RAT_VISIT(Type, Val) \
70 using Type ## _t = typename super_type::Type ## _t; \
71 virtual void visit(const Type ## _t& Val) override
73 # define AWALI_RAT_UNSUPPORTED(Type) \
74 AWALI_RAT_VISIT(Type,) \
76 awali::sttc::raise(me(), ": " #Type " is not supported"); \
Definition: ratexp.hh:280
Definition: visitor.hh:30
Label label_t
Definition: visitor.hh:32
Weight weight_t
Definition: visitor.hh:33
virtual ~const_visitor()=default
Definition: ratexp.hh:262
An inner node.
Definition: ratexp.hh:96
The root from which to derive the final node types.
Definition: ratexp.hh:248
The abstract parameterized, root for all rational expression types.
Definition: ratexp.hh:74
Definition: ratexp.hh:176
An inner node with multiple children.
Definition: ratexp.hh:115
An inner node implementing a weight.
Definition: ratexp.hh:208
Main namespace of Awali.
Definition: ato.hh:22
#define DEFINE(Type)
Definition: visitor.hh:46