27     template <
typename ExpSet>
 
   29       : 
public ExpSet::const_visitor
 
   36       static_assert(std::is_same<weightset_t, b>::value,
 
   37                     "star_normal_form: requires Boolean weights");
 
   39       using weight_t = 
typename weightset_t::value_t;
 
   41       using super_t = 
typename ExpSet::const_visitor;
 
   44       constexpr 
static const char* 
me() { 
return "star_normal_form"; }
 
   58         return std::move(
res_);
 
   79         v.head()->accept(*
this);
 
   81         for (
auto c: 
v.tail())
 
   86         res_ = std::move(res);
 
   99       void visit(const tuple_t&, 
std::true_type)
 override 
  101         raise(
me(), 
": tuple is not supported");
 
  130             v.head()->accept(*
this);
 
  132             for (
auto c: v.tail())
 
  137             res_ = std::move(res);
 
  144         v.head()->accept(*
this);
 
  146         for (
auto c: v.tail())
 
  151         res_ = std::move(res);
 
  159             v.sub()->accept(*
this);
 
  166             v.sub()->accept(*
this);
 
  183   template <
typename ExpSet>
 
  184   typename ExpSet::value_t
 
  196       template <
typename ExpSet>
 
  200         const auto& e = exp->as<ExpSet>();
 
context_t_of< expressionset_t > context_t
expression_t operator()(const expression_t &v)
void dot_of(const mul_t &v)
Handling of a product by the dot operator. 
weightset_t_of< context_t > weightset_t
typename detail::context_t_of_impl< base_t< ValueSet >>::type context_t_of
typename super_t::tuple_t tuple_t
An inner node implementing a weight. 
ExpSet::value_t star_normal_form(const ExpSet &rs, const typename ExpSet::value_t &e)
Star-normal form of an expression. 
typename ExpSet::const_visitor super_t
static constexpr const char * me()
Name of this algorithm, for error messages. 
star_normal_form_visitor(const expressionset_t &rs)
void visit(const tuple_t &, std::true_type) override
operation_t operation_
The current operation. 
expression star_normal_form(const expression &exp)
Bridge. 
void box_of(const mul_t &v)
Handling of a product by the box operator. 
typename weightset_t::value_t weight_t
expression_t res_
The result. 
weightset_t ws_
Shorthand to the weightset. 
bool any_of(const Range &r, Predicate p)
typename detail::weightset_t_of_impl< base_t< ValueSet >>::type weightset_t_of
An inner node with multiple children. 
#define VCSN_RAT_UNSUPPORTED(Type)                                        
weight_t_of< ExpSet > constant_term(const ExpSet &rs, const typename ExpSet::value_t &e)
The constant term of e. 
operation_t
The type of the operator. 
value_impl< detail::expression_tag > expression
typename expressionset_t::value_t expression_t