Vcsn  2.1
Be Rational
vcsn::detail::epsilon_remover_distance< Aut, has_one > Class Template Reference

This class contains the core of the proper algorithm. More...

#include <epsilon-remover-distance.hh>

Collaboration diagram for vcsn::detail::epsilon_remover_distance< Aut, has_one >:

Public Member Functions

 epsilon_remover_distance (const automaton_t &aut, bool prune=true)
 
aut_proper_t operator() ()
 

Private Types

using automaton_t = typename std::remove_cv< Aut >::type
 
using state_t = state_t_of< automaton_t >
 
using weightset_t = weightset_t_of< automaton_t >
 
using weight_t = typename weightset_t::value_t
 
using labelset_t = labelset_t_of< automaton_t >
 
using transition_t = transition_t_of< automaton_t >
 
using transitions_t = std::vector< transition_t >
 
using proper_ctx_t = detail::proper_context< context_t_of< Aut >>
 
using dirty_ctx_t = context< vcsn::oneset, weightset_t >
 
using aut_dirty_t = mutable_automaton< dirty_ctx_t >
 
using aut_proper_t = fresh_automaton_t_of< Aut, proper_ctx_t >
 
using label_proper_t = label_t_of< aut_proper_t >
 

Private Attributes

aut_proper_t aut_proper_
 The automata we work on. More...
 
aut_dirty_t aut_dirty_
 
const weightset_tws_
 Shorthand to the weightset. More...
 
bool prune_
 Whether to prune states that become inaccessible. More...
 
std::vector< state_td2p_
 
std::vector< state_tp2d_
 
std::vector< std::vector< weight_t > > de_
 

Detailed Description

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
class vcsn::detail::epsilon_remover_distance< Aut, has_one >

This class contains the core of the proper algorithm.

This class is specialized for labels_are_letter automata since all these methods become trivial.

Definition at line 21 of file epsilon-remover-distance.hh.

Member Typedef Documentation

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_dirty_t = mutable_automaton<dirty_ctx_t>
private

Definition at line 34 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_proper_t = fresh_automaton_t_of<Aut, proper_ctx_t>
private

Definition at line 35 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::automaton_t = typename std::remove_cv<Aut>::type
private

Definition at line 23 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::dirty_ctx_t = context<vcsn::oneset, weightset_t>
private

Definition at line 32 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::label_proper_t = label_t_of<aut_proper_t>
private

Definition at line 37 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::labelset_t = labelset_t_of<automaton_t>
private

Definition at line 27 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::proper_ctx_t = detail::proper_context<context_t_of<Aut>>
private

Definition at line 31 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::state_t = state_t_of<automaton_t>
private

Definition at line 24 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::transition_t = transition_t_of<automaton_t>
private

Definition at line 28 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::transitions_t = std::vector<transition_t>
private

Definition at line 29 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::weight_t = typename weightset_t::value_t
private

Definition at line 26 of file epsilon-remover-distance.hh.

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
using vcsn::detail::epsilon_remover_distance< Aut, has_one >::weightset_t = weightset_t_of<automaton_t>
private

Definition at line 25 of file epsilon-remover-distance.hh.

Constructor & Destructor Documentation

Member Function Documentation

Member Data Documentation

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
aut_dirty_t vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_dirty_
private
template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
aut_proper_t vcsn::detail::epsilon_remover_distance< Aut, has_one >::aut_proper_
private
template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<state_t> vcsn::detail::epsilon_remover_distance< Aut, has_one >::d2p_
private
template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<std::vector<weight_t> > vcsn::detail::epsilon_remover_distance< Aut, has_one >::de_
private
template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
std::vector<state_t> vcsn::detail::epsilon_remover_distance< Aut, has_one >::p2d_
private
template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
bool vcsn::detail::epsilon_remover_distance< Aut, has_one >::prune_
private

Whether to prune states that become inaccessible.

Definition at line 118 of file epsilon-remover-distance.hh.

Referenced by vcsn::detail::epsilon_remover_distance< Aut, has_one >::operator()().

template<typename Aut, bool has_one = labelset_t_of<Aut>::has_one()>
const weightset_t& vcsn::detail::epsilon_remover_distance< Aut, has_one >::ws_
private

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