Vcsn  2.3a
Be Rational
vcsn::rat::to_expansion_visitor< ExpSet > Class Template Reference

Functor to compute the expansion of an expression. More...

#include <to-expansion.hh>

Inheritance diagram for vcsn::rat::to_expansion_visitor< ExpSet >:
Collaboration diagram for vcsn::rat::to_expansion_visitor< ExpSet >:

Classes

struct  visit_tuple
 
struct  visit_tuple< false, Dummy >
 

Public Types

using expressionset_t = ExpSet
 
using super_t = typename expressionset_t::const_visitor
 
using self_t = to_expansion_visitor
 
using context_t = context_t_of< expressionset_t >
 
using labelset_t = labelset_t_of< context_t >
 
using expression_t = typename expressionset_t::value_t
 
using weightset_t = weightset_t_of< expressionset_t >
 
using weight_t = typename weightset_t::value_t
 
using expansionset_t = expansionset< expressionset_t >
 
using polynomialset_t = expression_polynomialset_t< expressionset_t >
 
using polynomial_t = typename polynomialset_t::value_t
 
using polys_t = typename expansionset_t::polys_t
 
using expansion_t = typename expansionset_t::value_t
 

Public Member Functions

 to_expansion_visitor (const expressionset_t &rs)
 
expansion_t operator() (const expression_t &v)
 From an expression, build its expansion. More...
 

Static Public Member Functions

static constexpr const charme ()
 

Private Types

using tuple_t = typename super_t::tuple_t
 

Private Member Functions

expansion_t to_expansion (const expression_t &e)
 Facilitate recursion. More...
 
std::ostream & print_ (const expansion_t &v, std::ostream &o) const
 Print an expansion. More...
 
 VCSN_RAT_VISIT (zero,)
 
 VCSN_RAT_VISIT (one,)
 
 VCSN_RAT_VISIT (atom, e)
 
 VCSN_RAT_VISIT (add, e)
 
 VCSN_RAT_VISIT (mul, e)
 
expression_t prod_ (typename mul_t::iterator begin, typename mul_t::iterator end) const
 Build a product for these expressions. More...
 
 VCSN_RAT_VISIT (ldivide, e)
 
 VCSN_RAT_VISIT (conjunction, e)
 d(E&F) = d(E) & d(F). More...
 
 VCSN_RAT_VISIT (shuffle, e)
 d(E:F) = d(E):F + E:d(F) dᵗ(E:F) = dᵗ(E):Fᵗ + Eᵗ:dᵗ(F) More...
 
 VCSN_RAT_VISIT (infiltrate, e)
 d(E&:F) = d(E)&:F + d(E)&:d(F) + E&:d(F) dᵗ(E&:F) = dᵗ(E)&:Fᵗ + dᵗ(E)&:dᵗ(F) + Eᵗ&:dᵗ(F) More...
 
 VCSN_RAT_VISIT (complement, e)
 
 VCSN_RAT_VISIT (transposition, e)
 d(Eᵗ) = dᵗ(E) More...
 
 VCSN_RAT_VISIT (star, e)
 
 VCSN_RAT_VISIT (lweight, e)
 
 VCSN_RAT_VISIT (rweight, e)
 
void visit (const tuple_t &v, std::true_type) override
 
 VCSN_RAT_VISIT (compose, e)
 
template<typename Exp = expansion_t>
auto compose (const compose_t &e, int) -> decltype(std::declval< expansionset_t >() .compose(std::declval< Exp >(), std::declval< Exp >()), void())
 
auto compose (const compose_t &, long) -> void
 

Private Attributes

expressionset_t rs_
 Manipulate the expressions. More...
 
labelset_t ls_ = *rs_.labelset()
 Manipulate the labels. More...
 
weightset_t ws_ = *rs_.weightset()
 Manipulate the weights. More...
 
polynomialset_t ps_ = make_expression_polynomialset(rs_)
 Manipulate the polynomials of expressions. More...
 
expansionset_t xs_ = {rs_}
 Manipulate the expansions. More...
 
bool transposed_ = false
 Whether to work transposed. More...
 
expansion_t res_
 The result. More...
 

Detailed Description

template<typename ExpSet>
class vcsn::rat::to_expansion_visitor< ExpSet >

Functor to compute the expansion of an expression.

Template Parameters
ExpSetthe expressionset type.

Definition at line 39 of file to-expansion.hh.

Member Typedef Documentation

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::context_t = context_t_of<expressionset_t>

Definition at line 47 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::expansion_t = typename expansionset_t::value_t

Definition at line 60 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::expansionset_t = expansionset<expressionset_t>

Definition at line 52 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::expression_t = typename expressionset_t::value_t

Definition at line 49 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::expressionset_t = ExpSet

Definition at line 43 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::labelset_t = labelset_t_of<context_t>

Definition at line 48 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::polynomial_t = typename polynomialset_t::value_t

Definition at line 55 of file to-expansion.hh.

Definition at line 54 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::polys_t = typename expansionset_t::polys_t

Definition at line 59 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::self_t = to_expansion_visitor

Definition at line 45 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::super_t = typename expressionset_t::const_visitor

Definition at line 44 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::tuple_t = typename super_t::tuple_t
private

Definition at line 331 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::weight_t = typename weightset_t::value_t

Definition at line 51 of file to-expansion.hh.

template<typename ExpSet>
using vcsn::rat::to_expansion_visitor< ExpSet >::weightset_t = weightset_t_of<expressionset_t>

Definition at line 50 of file to-expansion.hh.

Constructor & Destructor Documentation

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::to_expansion_visitor ( const expressionset_t rs)
inline

Definition at line 62 of file to-expansion.hh.

Member Function Documentation

template<typename ExpSet>
template<typename Exp = expansion_t>
auto vcsn::rat::to_expansion_visitor< ExpSet >::compose ( const compose_t &  e,
int   
) -> decltype(std::declval<expansionset_t>() .compose(std::declval<Exp>(), std::declval<Exp>()), void())
inlineprivate
template<typename ExpSet>
auto vcsn::rat::to_expansion_visitor< ExpSet >::compose ( const compose_t &  ,
long   
) -> void
inlineprivate

Definition at line 386 of file to-expansion.hh.

template<typename ExpSet>
static constexpr const char* vcsn::rat::to_expansion_visitor< ExpSet >::me ( )
inlinestatic

Definition at line 57 of file to-expansion.hh.

template<typename ExpSet>
expansion_t vcsn::rat::to_expansion_visitor< ExpSet >::operator() ( const expression_t v)
inline

From an expression, build its expansion.

Definition at line 67 of file to-expansion.hh.

template<typename ExpSet>
std::ostream& vcsn::rat::to_expansion_visitor< ExpSet >::print_ ( const expansion_t v,
std::ostream &  o 
) const
inlineprivate

Print an expansion.

Definition at line 128 of file to-expansion.hh.

template<typename ExpSet>
expression_t vcsn::rat::to_expansion_visitor< ExpSet >::prod_ ( typename mul_t::iterator  begin,
typename mul_t::iterator  end 
) const
inlineprivate

Build a product for these expressions.

Pay attention to not building products with 0 or 1 expression.

FIXME: Code duplication with derivation.

Definition at line 210 of file to-expansion.hh.

Referenced by vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT().

template<typename ExpSet>
expansion_t vcsn::rat::to_expansion_visitor< ExpSet >::to_expansion ( const expression_t e)
inlineprivate

Facilitate recursion.

Saves and restore res_.

Definition at line 90 of file to-expansion.hh.

Referenced by vcsn::rat::to_expansion_visitor< expressionset_t >::compose(), and vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT().

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( zero  )
inlineprivate

Definition at line 137 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( one  )
inlineprivate

Definition at line 142 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( atom  ,
 
)
inlineprivate

Definition at line 147 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( add  ,
 
)
inlineprivate

Definition at line 154 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( mul  ,
 
)
inlineprivate

Definition at line 161 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( ldivide  ,
 
)
inlineprivate

Definition at line 222 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( conjunction  ,
 
)
inlineprivate

d(E&F) = d(E) & d(F).

Definition at line 236 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( shuffle  ,
 
)
inlineprivate

d(E:F) = d(E):F + E:d(F) dᵗ(E:F) = dᵗ(E):Fᵗ + Eᵗ:dᵗ(F)

Definition at line 245 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( infiltrate  ,
 
)
inlineprivate

d(E&:F) = d(E)&:F + d(E)&:d(F) + E&:d(F) dᵗ(E&:F) = dᵗ(E)&:Fᵗ + dᵗ(E)&:dᵗ(F) + Eᵗ&:dᵗ(F)

Definition at line 263 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( complement  ,
 
)
inlineprivate

Definition at line 281 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( transposition  ,
 
)
inlineprivate

d(Eᵗ) = dᵗ(E)

Definition at line 287 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( star  ,
 
)
inlineprivate

Definition at line 294 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( lweight  ,
 
)
inlineprivate

Definition at line 311 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( rweight  ,
 
)
inlineprivate

Definition at line 321 of file to-expansion.hh.

template<typename ExpSet>
vcsn::rat::to_expansion_visitor< ExpSet >::VCSN_RAT_VISIT ( compose  ,
 
)
inlineprivate

Definition at line 370 of file to-expansion.hh.

template<typename ExpSet>
void vcsn::rat::to_expansion_visitor< ExpSet >::visit ( const tuple_t v,
std::true_type   
)
inlineoverrideprivate

Definition at line 364 of file to-expansion.hh.

Member Data Documentation

template<typename ExpSet>
labelset_t vcsn::rat::to_expansion_visitor< ExpSet >::ls_ = *rs_.labelset()
private

Manipulate the labels.

Definition at line 396 of file to-expansion.hh.

Referenced by vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT().

template<typename ExpSet>
polynomialset_t vcsn::rat::to_expansion_visitor< ExpSet >::ps_ = make_expression_polynomialset(rs_)
private

Manipulate the polynomials of expressions.

Definition at line 400 of file to-expansion.hh.

Referenced by vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT().

template<typename ExpSet>
bool vcsn::rat::to_expansion_visitor< ExpSet >::transposed_ = false
private
template<typename ExpSet>
weightset_t vcsn::rat::to_expansion_visitor< ExpSet >::ws_ = *rs_.weightset()
private

Manipulate the weights.

Definition at line 398 of file to-expansion.hh.

Referenced by vcsn::rat::to_expansion_visitor< expressionset_t >::VCSN_RAT_VISIT().


The documentation for this class was generated from the following file: