18 template <
typename ExpSet>
20 :
public ExpSet::const_visitor
25 using super_t =
typename expressionset_t::const_visitor;
28 constexpr
static const char*
me() {
return "transpose"; }
39 return std::move(
res_);
65 res_ =
rs_.atom(
rs_.labelset()->transpose(e.value()));
71 for (
const auto&
v: e)
78 for (
const auto&
v: e.tail())
86 for (
const auto&
v: e.tail())
94 for (
const auto&
v: e.tail())
101 for (
const auto&
v: e)
136 res_ =
rs_.transposition(e.shared_from_this());
143 res_ =
rs_.transposition(e.shared_from_this());
149 rs_.weightset()->transpose(e.weight()));
154 res_ =
rs_.lmul(
rs_.weightset()->transpose(e.weight()),
161 raise(
me(),
": tuple is not supported");
175 template <
typename ExpSet>
176 typename ExpSet::value_t
179 return rs.transpose(v);
VCSN_RAT_VISIT(complement, e)
static constexpr const char * me()
Name of this algorithm, for error messages.
expression_t transpose(const expression_t &e)
VCSN_RAT_VISIT(transposition, e)
VCSN_RAT_VISIT(rweight, e)
Aut transpose(const transpose_automaton< Aut > &aut)
typename expressionset_t::value_t expression_t
VCSN_RAT_VISIT(shuffle, e)
A visitor to create a transposed expression,.
VCSN_RAT_VISIT(lweight, e)
virtual void visit(const tuple_t &, std::true_type) override
transposer(const expressionset_t &rs)
VCSN_RAT_VISIT(infiltration, e)
typename super_t::tuple_t tuple_t
typename expressionset_t::const_visitor super_t
VCSN_RAT_VISIT(conjunction, e)
expression_t operator()(const expression_t &e)