Vcsn  2.2
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 (sum, e)
 
 VCSN_RAT_VISIT (prod, e)
 
expression_t prod_ (typename prod_t::iterator begin, typename prod_t::iterator end) const
 Build a product for these expressions. More...
 
 VCSN_RAT_VISIT (ldiv, e)
 
 VCSN_RAT_VISIT (conjunction, e)
 
 VCSN_RAT_VISIT (shuffle, e)
 
 VCSN_RAT_VISIT (infiltration, e)
 
 VCSN_RAT_VISIT (complement, e)
 
 VCSN_RAT_VISIT (transposition, e)
 
 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
 

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 es_ = {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 40 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 48 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 61 of file to-expansion.hh.

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

Definition at line 53 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 50 of file to-expansion.hh.

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

Definition at line 44 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 49 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 56 of file to-expansion.hh.

Definition at line 55 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 60 of file to-expansion.hh.

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

Definition at line 46 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 45 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 354 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 52 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 51 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 63 of file to-expansion.hh.

Member Function Documentation

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

Definition at line 58 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 68 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 122 of file to-expansion.hh.

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

template<typename ExpSet>
expression_t vcsn::rat::to_expansion_visitor< ExpSet >::prod_ ( typename prod_t::iterator  begin,
typename prod_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 204 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 84 of file to-expansion.hh.

Referenced by 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 131 of file to-expansion.hh.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Definition at line 344 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 387 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 395 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 399 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 397 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: