Vcsn  2.1
Be Rational
vcsn::detail::properer< Aut > Class Template Reference

#include <proper.hh>

Collaboration diagram for vcsn::detail::properer< Aut >:

Public Member Functions

 properer (const automaton_t &aut, bool prune=true, const std::string &algo="auto")
 Remove the epsilon-transitions of the input. More...
 
aut_proper_t operator() ()
 

Private Types

using automaton_t = typename std::remove_cv< Aut >::type
 
using weightset_t = weightset_t_of< automaton_t >
 
using labelset_t = labelset_t_of< automaton_t >
 
using aut_proper_t = fresh_automaton_t_of< automaton_t, detail::proper_context< context_t_of< automaton_t >>>
 

Private Member Functions

aut_proper_t remover_ ()
 
template<star_status_t Status>
vcsn::enable_if_t< Status==star_status_t::TOPS, aut_proper_tproper_star ()
 
template<star_status_t Status>
vcsn::enable_if_t< Status==star_status_t::ABSVAL, aut_proper_tproper_star ()
 
template<star_status_t Status>
vcsn::enable_if_t< Status==star_status_t::STARRABLE, aut_proper_tproper_star ()
 
template<star_status_t Status>
vcsn::enable_if_t< Status==star_status_t::NON_STARRABLE, aut_proper_tproper_star ()
 

Private Attributes

automaton_t aut_
 
bool prune_
 
const std::string & algo_
 

Detailed Description

template<typename Aut>
class vcsn::detail::properer< Aut >

Definition at line 36 of file proper.hh.

Member Typedef Documentation

Definition at line 42 of file proper.hh.

template<typename Aut>
using vcsn::detail::properer< Aut >::automaton_t = typename std::remove_cv<Aut>::type
private

Definition at line 38 of file proper.hh.

template<typename Aut>
using vcsn::detail::properer< Aut >::labelset_t = labelset_t_of<automaton_t>
private

Definition at line 40 of file proper.hh.

template<typename Aut>
using vcsn::detail::properer< Aut >::weightset_t = weightset_t_of<automaton_t>
private

Definition at line 39 of file proper.hh.

Constructor & Destructor Documentation

template<typename Aut>
vcsn::detail::properer< Aut >::properer ( const automaton_t aut,
bool  prune = true,
const std::string &  algo = "auto" 
)
inline

Remove the epsilon-transitions of the input.

The behaviour of this method depends on the star_status of the weight_set:

– starrable : always valid, does not throw any exception – tops : the proper algo is directly launched on the input; if it returns false, an exception is launched – non_starrable / absval: is_valid is called before launching the algorithm.

Parameters
autThe automaton in which epsilon-transitions will be removed
pruneWhether to remove states that become inaccessible.
Exceptions
runtime_errorif the input is not valid

Definition at line 59 of file proper.hh.

Member Function Documentation

template<typename Aut>
aut_proper_t vcsn::detail::properer< Aut >::operator() ( )
inline

Definition at line 67 of file proper.hh.

template<typename Aut>
template<star_status_t Status>
vcsn::enable_if_t<Status == star_status_t::TOPS, aut_proper_t> vcsn::detail::properer< Aut >::proper_star ( )
inlineprivate

Definition at line 97 of file proper.hh.

References vcsn::detail::properer< Aut >::remover_().

Here is the call graph for this function:

template<typename Aut>
template<star_status_t Status>
vcsn::enable_if_t<Status == star_status_t::ABSVAL, aut_proper_t> vcsn::detail::properer< Aut >::proper_star ( )
inlineprivate

Definition at line 111 of file proper.hh.

References vcsn::detail::properer< Aut >::aut_, vcsn::is_valid(), vcsn::detail::properer< Aut >::remover_(), and vcsn::require().

Here is the call graph for this function:

template<typename Aut>
template<star_status_t Status>
vcsn::enable_if_t<Status == star_status_t::STARRABLE, aut_proper_t> vcsn::detail::properer< Aut >::proper_star ( )
inlineprivate

Definition at line 119 of file proper.hh.

References vcsn::detail::properer< Aut >::remover_().

Here is the call graph for this function:

template<typename Aut>
template<star_status_t Status>
vcsn::enable_if_t<Status == star_status_t::NON_STARRABLE, aut_proper_t> vcsn::detail::properer< Aut >::proper_star ( )
inlineprivate

Definition at line 126 of file proper.hh.

References vcsn::detail::properer< Aut >::aut_, vcsn::is_valid(), vcsn::detail::properer< Aut >::remover_(), and vcsn::require().

Here is the call graph for this function:

template<typename Aut>
aut_proper_t vcsn::detail::properer< Aut >::remover_ ( )
inlineprivate

Definition at line 73 of file proper.hh.

References vcsn::detail::properer< Aut >::algo_, vcsn::detail::properer< Aut >::aut_, vcsn::copy(), and vcsn::detail::properer< Aut >::prune_.

Referenced by vcsn::detail::properer< Aut >::proper_star().

Here is the call graph for this function:

Member Data Documentation

template<typename Aut>
const std::string& vcsn::detail::properer< Aut >::algo_
private

Definition at line 134 of file proper.hh.

Referenced by vcsn::detail::properer< Aut >::remover_().

template<typename Aut>
automaton_t vcsn::detail::properer< Aut >::aut_
private
template<typename Aut>
bool vcsn::detail::properer< Aut >::prune_
private

Definition at line 133 of file proper.hh.

Referenced by vcsn::detail::properer< Aut >::remover_().


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