17 #ifndef AWALI_CORE_RAT_LESS_THAN_HH
18 # define AWALI_CORE_RAT_LESS_THAN_HH
25 namespace awali {
namespace sttc
31 template <
class RatExpSet>
33 :
public RatExpSet::const_visitor
43 using node_t =
typename super_type::node_t;
44 using inner_t =
typename super_type::inner_t;
45 template <rat::exp::type_t Type>
47 template <rat::exp::type_t Type>
49 template <rat::exp::type_t Type>
57 size_t lhss = sizer(lhs);
58 size_t rhss = sizer(rhs);
64 else if (lhs->type() < rhs->type())
66 else if (lhs->type() > rhs->type())
81 using Type ## _t = typename super_type::Type ## _t; \
83 visit(const Type ## _t& lhs) override \
85 res_ = less_than_(lhs, *down_pointer_cast<const Type ## _t>(rhs_)); \
122 template <rat::exp::type_t Type>
125 auto ls = lhs.size();
126 auto rs = rhs.size();
132 for (
size_t i = 0; i < ls; ++i)
140 template <rat::exp::type_t Type>
146 template <rat::exp::type_t Type>
164 template <
class RatExpSet>
165 typename RatExpSet::ratexp_t
166 less_than(
const RatExpSet& rs,
const typename RatExpSet::ratexp_t& v)
168 return rs.less_than(v);
Definition: ratexp.hh:280
Definition: ratexp.hh:262
Definition: less_than.hh:34
typename super_type::atom_t atom_t
Definition: less_than.hh:88
labelset_t_of< context_t > labelset_t
Definition: less_than.hh:38
typename super_type::template variadic_t< Type > variadic_t
Definition: less_than.hh:48
bool operator()(ratexp_t lhs, ratexp_t rhs)
Whether lhs < rhs.
Definition: less_than.hh:54
typename super_type::template weight_node_t< Type > weight_node_t
Definition: less_than.hh:50
typename super_type::template unary_t< Type > unary_t
Definition: less_than.hh:46
typename ratexpset_t::const_visitor super_type
Definition: less_than.hh:42
weightset_t_of< context_t > weightset_t
Definition: less_than.hh:39
RatExpSet ratexpset_t
Definition: less_than.hh:36
bool less_than_(const zero_t &, const zero_t &)
Definition: less_than.hh:107
typename context_t::ratexp_t ratexp_t
Definition: less_than.hh:41
bool less_than_(const weight_node_t< Type > &lhs, const weight_node_t< Type > &rhs)
Definition: less_than.hh:147
typename super_type::zero_t zero_t
Definition: less_than.hh:100
context_t_of< ratexpset_t > context_t
Definition: less_than.hh:37
typename super_type::one_t one_t
Definition: less_than.hh:93
bool less_than_(const one_t &, const one_t &)
Definition: less_than.hh:112
bool less_than_(const variadic_t< Type > &lhs, const variadic_t< Type > &rhs)
Definition: less_than.hh:123
bool less_than_(const unary_t< Type > &lhs, const unary_t< Type > &rhs)
Definition: less_than.hh:141
bool less_than_(const atom_t &lhs, const atom_t &rhs)
Definition: less_than.hh:117
weight_t_of< context_t > weight_t
Definition: less_than.hh:40
typename super_type::inner_t inner_t
Definition: less_than.hh:44
typename super_type::node_t node_t
Definition: less_than.hh:43
Definition: ratexp.hh:176
An inner node with multiple children.
Definition: ratexp.hh:115
An inner node implementing a weight.
Definition: ratexp.hh:208
#define VISIT(Type)
Definition: less_than.hh:80
RatExpSet::ratexp_t less_than(const RatExpSet &rs, const typename RatExpSet::ratexp_t &v)
Definition: less_than.hh:166
typename internal::weight_t_of_impl< internal::base_t< ValueSet > >::type weight_t_of
Helper to retrieve the type of the weights of a value set.
Definition: traits.hh:81
typename internal::context_t_of_impl< internal::base_t< ValueSet > >::type context_t_of
Helper to retrieve the type of the context of a value set.
Definition: traits.hh:66
typename internal::labelset_t_of_impl< internal::base_t< ValueSet > >::type labelset_t_of
Helper to retrieve the type of the labelset of a value set.
Definition: traits.hh:76
typename internal::weightset_t_of_impl< internal::base_t< ValueSet > >::type weightset_t_of
Helper to retrieve the type of the weightset of a value set.
Definition: traits.hh:86
Main namespace of Awali.
Definition: ato.hh:22