Vcsn  2.2
Be Rational
vcsn::detail::focus_automaton_impl< Tape, Aut > Class Template Reference

Read-write on an automaton, that hides all tapes but one. More...

#include <focus.hh>

Inheritance diagram for vcsn::detail::focus_automaton_impl< Tape, Aut >:
Collaboration diagram for vcsn::detail::focus_automaton_impl< Tape, Aut >:

Public Types

using automaton_t = Aut
 The type of the wrapped automaton. More...
 
using state_t = state_t_of< automaton_t >
 This automaton's state and transition types are those of the wrapped automaton. More...
 
using transition_t = transition_t_of< automaton_t >
 
using full_context_t = context_t_of< automaton_t >
 Underlying automaton context. More...
 
using full_labelset_t = typename full_context_t::labelset_t
 Underlying automaton labelset. More...
 
using full_label_t = typename full_labelset_t::value_t
 Underlying automaton label. More...
 
using context_t = project_context< Tape, full_context_t >
 Exposed context. More...
 
using labelset_t = typename context_t::labelset_t
 Exposed labelset. More...
 
using labelset_ptr = typename context_t::labelset_ptr
 
using label_t = typename labelset_t::value_t
 
using weightset_t = typename context_t::weightset_t
 Exposed weightset. More...
 
using weightset_ptr = typename context_t::weightset_ptr
 
using weight_t = typename weightset_t::value_t
 
template<typename = void>
using fresh_automaton_t = focus_automaton< Tape, fresh_automaton_t_of< automaton_t, full_context_t >>
 The type of automata to produce this kind of automata. More...
 
using hidden_indices_t = concat_sequence< make_index_range_t< 0, Tape >, make_index_range_t< Tape+1, std::tuple_size< full_label_t >::value-Tape-1 >>
 Indices of the remaining tapes. More...
 
using res_labelset_t = typename hidden_label_type< Aut, hidden_indices_t >::type
 
using res_label_t = typename res_labelset_t::value_t
 
using super_t = automaton_decorator< automaton_t, context_t >
 
- Public Types inherited from vcsn::detail::automaton_decorator< Aut, project_context< Tape, context_t_of< Aut > > >
using automaton_t = Aut
 The type of automaton to wrap. More...
 
using context_t = project_context< Tape, context_t_of< Aut > >
 
using element_type = typename automaton_t::element_type
 The automaton type, without shared_ptr. More...
 
using fresh_automaton_t = typename element_type::template fresh_automaton_t< Ctx >
 The (shared pointer) type to use it we have to create an automaton of the same (underlying) type. More...
 
using kind_t = typename context_t::kind_t
 
using labelset_t = typename context_t::labelset_t
 
using labelset_ptr = typename context_t::labelset_ptr
 
using label_t = typename labelset_t::value_t
 
using weightset_t = typename context_t::weightset_t
 
using weightset_ptr = typename context_t::weightset_ptr
 
using weight_t = typename weightset_t::value_t
 
using state_t = state_t_of< automaton_t >
 
using transition_t = transition_t_of< automaton_t >
 

Public Member Functions

 focus_automaton_impl (const full_context_t &ctx)
 
 focus_automaton_impl (const automaton_t &aut)
 
std::ostream & print_set (std::ostream &o, format fmt={}) const
 
full_context_t full_context () const
 
context_t context () const
 
res_label_t hidden_label_of (transition_t t) const
 
res_label_t hidden_one () const
 
res_labelset_t res_labelset () const
 
labelset_ptr labelset () const
 Apparent labelset. More...
 
auto label_of (transition_t t) const -> label_t
 Apparent label of a transition. More...
 
auto out (state_t s) const -> decltype(out(aut_, s))
 
transition_t get_transition (state_t src, state_t dst, label_t l) const
 
bool has_transition (state_t src, state_t dst, label_t l) const
 Apparent label of a transition. More...
 
void del_transition (state_t src, state_t dst, label_t l)
 Apparent label of a transition. More...
 
template<typename A >
transition_t new_transition_copy (state_t src, state_t dst, const A &aut, typename A::element_type::transition_t t, bool transpose=false)
 Copy the full wrapped transition. More...
 
template<typename A >
transition_t add_transition_copy (state_t src, state_t dst, const A &aut, typename A::element_type::transition_t t, bool transpose=false)
 Copy the full wrapped transition. More...
 
auto add_transition (state_t, state_t, label_t, weight_t) -> transition_t
 
auto add_transition (state_t, state_t, label_t) -> transition_t
 
auto new_transition (state_t, state_t, label_t, weight_t) -> transition_t
 
auto new_transition (state_t, state_t, label_t) -> transition_t
 
auto set_transition (state_t, state_t, label_t, weight_t) -> transition_t
 
- Public Member Functions inherited from vcsn::detail::automaton_decorator< Aut, project_context< Tape, context_t_of< Aut > > >
 automaton_decorator (automaton_t aut)
 
 automaton_decorator (const automaton_decorator &aut)
 
 automaton_decorator (const context_t &ctx)
 
 automaton_decorator (automaton_decorator &&aut)
 
automaton_decoratoroperator= (automaton_decorator &&that)
 
automaton_t strip ()
 The automaton we decorate. More...
 
auto all_in (Args &&...args) const -> decltype(aut_-> all_in(std::forward< Args >(args)...))
 
auto all_out (Args &&...args) const -> decltype(aut_-> all_out(std::forward< Args >(args)...))
 
auto all_states (Args &&...args) const -> decltype(aut_-> all_states(std::forward< Args >(args)...))
 
auto all_transitions (Args &&...args) const -> decltype(aut_-> all_transitions(std::forward< Args >(args)...))
 
auto context (Args &&...args) const -> decltype(aut_-> context(std::forward< Args >(args)...))
 
auto dst_of (Args &&...args) const -> decltype(aut_-> dst_of(std::forward< Args >(args)...))
 
auto get_final_weight (Args &&...args) const -> decltype(aut_-> get_ final _weight(std
 
auto get_initial_weight (Args &&...args) const -> decltype(aut_-> get_initial_weight(std::forward< Args >(args)...))
 
auto get_transition (Args &&...args) const -> decltype(aut_-> get_transition(std::forward< Args >(args)...))
 
auto has_state (Args &&...args) const -> decltype(aut_-> has_state(std::forward< Args >(args)...))
 
auto has_transition (Args &&...args) const -> decltype(aut_-> has_transition(std::forward< Args >(args)...))
 
auto is_final (Args &&...args) const -> decltype(aut_-> is_ final(std
 
auto is_initial (Args &&...args) const -> decltype(aut_-> is_initial(std::forward< Args >(args)...))
 
auto label_of (Args &&...args) const -> decltype(aut_-> label_of(std::forward< Args >(args)...))
 
auto labelset (Args &&...args) const -> decltype(aut_-> labelset(std::forward< Args >(args)...))
 
auto num_all_states (Args &&...args) const -> decltype(aut_-> num_all_states(std::forward< Args >(args)...))
 
auto num_finals (Args &&...args) const -> decltype(aut_-> num_ final s(std
 
auto num_initials (Args &&...args) const -> decltype(aut_-> num_initials(std::forward< Args >(args)...))
 
auto num_states (Args &&...args) const -> decltype(aut_-> num_states(std::forward< Args >(args)...))
 
auto num_transitions (Args &&...args) const -> decltype(aut_-> num_transitions(std::forward< Args >(args)...))
 
auto prepost_label (Args &&...args) const -> decltype(aut_-> prepost_label(std::forward< Args >(args)...))
 
auto print (Args &&...args) const -> decltype(aut_-> print(std::forward< Args >(args)...))
 
auto print_set (Args &&...args) const -> decltype(aut_-> print_set(std::forward< Args >(args)...))
 
auto print_state (Args &&...args) const -> decltype(aut_-> print_state(std::forward< Args >(args)...))
 
auto print_state_name (Args &&...args) const -> decltype(aut_-> print_state_name(std::forward< Args >(args)...))
 
auto src_of (Args &&...args) const -> decltype(aut_-> src_of(std::forward< Args >(args)...))
 
auto state_has_name (Args &&...args) const -> decltype(aut_-> state_has_name(std::forward< Args >(args)...))
 
auto is_lazy (Args &&...args) const -> decltype(aut_-> is_lazy(std::forward< Args >(args)...))
 
auto is_lazy_in (Args &&...args) const -> decltype(aut_-> is_lazy_in(std::forward< Args >(args)...))
 
auto states (Args &&...args) const -> decltype(aut_-> states(std::forward< Args >(args)...))
 
auto weight_of (Args &&...args) const -> decltype(aut_-> weight_of(std::forward< Args >(args)...))
 
auto weightset (Args &&...args) const -> decltype(aut_-> weightset(std::forward< Args >(args)...))
 
auto add_final (Args &&...args) -> decltype(aut_-> add_ final(std
 
auto add_initial (Args &&...args) -> decltype(aut_-> add_initial(std::forward< Args >(args)...))
 
auto add_transition (Args &&...args) -> decltype(aut_-> add_transition(std::forward< Args >(args)...))
 
auto add_transition_copy (Args &&...args) -> decltype(aut_-> add_transition_copy(std::forward< Args >(args)...))
 
auto add_weight (Args &&...args) -> decltype(aut_-> add_weight(std::forward< Args >(args)...))
 
auto del_state (Args &&...args) -> decltype(aut_-> del_state(std::forward< Args >(args)...))
 
auto del_transition (Args &&...args) -> decltype(aut_-> del_transition(std::forward< Args >(args)...))
 
auto lmul_weight (Args &&...args) -> decltype(aut_-> lmul_weight(std::forward< Args >(args)...))
 
auto new_state (Args &&...args) -> decltype(aut_-> new_state(std::forward< Args >(args)...))
 
auto new_transition (Args &&...args) -> decltype(aut_-> new_transition(std::forward< Args >(args)...))
 
auto new_transition_copy (Args &&...args) -> decltype(aut_-> new_transition_copy(std::forward< Args >(args)...))
 
auto rmul_weight (Args &&...args) -> decltype(aut_-> rmul_weight(std::forward< Args >(args)...))
 
auto set_final (Args &&...args) -> decltype(aut_-> set_ final(std
 
auto set_lazy (Args &&...args) -> decltype(aut_-> set_lazy(std::forward< Args >(args)...))
 
auto set_lazy_in (Args &&...args) -> decltype(aut_-> set_lazy_in(std::forward< Args >(args)...))
 
auto set_initial (Args &&...args) -> decltype(aut_-> set_initial(std::forward< Args >(args)...))
 
auto set_transition (Args &&...args) -> decltype(aut_-> set_transition(std::forward< Args >(args)...))
 
auto set_weight (Args &&...args) -> decltype(aut_-> set_weight(std::forward< Args >(args)...))
 
auto unset_final (Args &&...args) -> decltype(aut_-> unset_ final(std
 
auto unset_initial (Args &&...args) -> decltype(aut_-> unset_initial(std::forward< Args >(args)...))
 

Static Public Member Functions

static symbol sname ()
 
- Static Public Member Functions inherited from vcsn::detail::automaton_decorator< Aut, project_context< Tape, context_t_of< Aut > > >
static constexpr auto lazy_transition (Args &&...args) -> decltype(element_type::lazy_transition(std::forward< Args >(args)...))
 
static constexpr auto null_state (Args &&...args) -> decltype(element_type::null_state(std::forward< Args >(args)...))
 
static constexpr auto null_transition (Args &&...args) -> decltype(element_type::null_transition(std::forward< Args >(args)...))
 
static constexpr auto post (Args &&...args) -> decltype(element_type::post(std::forward< Args >(args)...))
 
static constexpr auto pre (Args &&...args) -> decltype(element_type::pre(std::forward< Args >(args)...))
 
static constexpr auto sname (Args &&...args) -> decltype(element_type::sname(std::forward< Args >(args)...))
 

Private Member Functions

template<std::size_t... I>
res_label_t hidden_label_of_ (transition_t t, index_sequence< I... >) const
 
template<typename L , std::size_t... I>
std::enable_if_t< L::has_one(), res_label_thidden_one_ (index_sequence< I... >) const
 
template<typename L , std::size_t... I>
std::enable_if_t<!L::has_one(), res_label_thidden_one_ (index_sequence< I... >) const
 
template<std::size_t... I>
res_labelset_t res_labelset_ (index_sequence< I... >) const
 

Static Private Member Functions

static label_t hide_ (full_label_t l)
 

Private Attributes

hidden_indices_t hidden_indices {}
 
context_t context_ = project<Tape>(full_context())
 Our apparent context. More...
 
labelset_ptr ls_ = std::make_shared<labelset_t>(aut_->labelset()->template set<Tape>())
 The apparent labelset. More...
 

Additional Inherited Members

- Protected Attributes inherited from vcsn::detail::automaton_decorator< Aut, project_context< Tape, context_t_of< Aut > > >
automaton_t aut_
 The wrapped automaton, possibly const. More...
 

Detailed Description

template<std::size_t Tape, Automaton Aut>
class vcsn::detail::focus_automaton_impl< Tape, Aut >

Read-write on an automaton, that hides all tapes but one.

Definition at line 37 of file focus.hh.

Member Typedef Documentation

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::automaton_t = Aut

The type of the wrapped automaton.

Definition at line 43 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::context_t = project_context<Tape, full_context_t>

Exposed context.

Definition at line 63 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<typename = void>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::fresh_automaton_t = focus_automaton<Tape, fresh_automaton_t_of<automaton_t, full_context_t>>

The type of automata to produce this kind of automata.

For instance, insplitting on a focus_automaton<const mutable_automaton<Ctx>> should yield a focus_automaton<mutable_automaton<Ctx>>, without the "inner" const.

Note that we discard the demanded Context. This will probably raise some problems at some point, but the reason is that when we "make_fresh_automaton" from a focus_automaton, we must build a focus_automaton, which requires the full context! Typical example is focusing on tape 0 for a "LAL x LAL" is a "LAL" automaton, but making this is focus_automaton<0, LAL> is obviously wrong.

Unfortunately the compilers tend to issue error messages that make this hard to understand, even though we have some static assertions.

Definition at line 95 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::full_context_t = context_t_of<automaton_t>

Underlying automaton context.

Definition at line 56 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::full_label_t = typename full_labelset_t::value_t

Underlying automaton label.

Definition at line 60 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::full_labelset_t = typename full_context_t::labelset_t

Underlying automaton labelset.

Definition at line 58 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_indices_t = concat_sequence <make_index_range_t<0, Tape>, make_index_range_t<Tape + 1, std::tuple_size<full_label_t>::value - Tape - 1>>

Indices of the remaining tapes.

Definition at line 102 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::label_t = typename labelset_t::value_t

Definition at line 68 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::labelset_ptr = typename context_t::labelset_ptr

Definition at line 67 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::labelset_t = typename context_t::labelset_t

Exposed labelset.

Definition at line 66 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::res_label_t = typename res_labelset_t::value_t

Definition at line 107 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::res_labelset_t = typename hidden_label_type<Aut, hidden_indices_t>::type

Definition at line 106 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::state_t = state_t_of<automaton_t>

This automaton's state and transition types are those of the wrapped automaton.

Definition at line 52 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::super_t = automaton_decorator<automaton_t, context_t>

Definition at line 109 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::transition_t = transition_t_of<automaton_t>

Definition at line 53 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::weight_t = typename weightset_t::value_t

Definition at line 73 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::weightset_ptr = typename context_t::weightset_ptr

Definition at line 72 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
using vcsn::detail::focus_automaton_impl< Tape, Aut >::weightset_t = typename context_t::weightset_t

Exposed weightset.

Definition at line 71 of file focus.hh.

Constructor & Destructor Documentation

template<std::size_t Tape, Automaton Aut>
vcsn::detail::focus_automaton_impl< Tape, Aut >::focus_automaton_impl ( const full_context_t ctx)
inline

Definition at line 113 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
vcsn::detail::focus_automaton_impl< Tape, Aut >::focus_automaton_impl ( const automaton_t aut)
inline

Definition at line 117 of file focus.hh.

Member Function Documentation

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::add_transition ( state_t  ,
state_t  ,
label_t  ,
weight_t   
) -> transition_t
inline

Definition at line 290 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::add_transition ( state_t  ,
state_t  ,
label_t   
) -> transition_t
inline

Definition at line 292 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<typename A >
transition_t vcsn::detail::focus_automaton_impl< Tape, Aut >::add_transition_copy ( state_t  src,
state_t  dst,
const A &  aut,
typename A::element_type::transition_t  t,
bool  transpose = false 
)
inline

Copy the full wrapped transition.

Definition at line 274 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
context_t vcsn::detail::focus_automaton_impl< Tape, Aut >::context ( ) const
inline

Definition at line 141 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
void vcsn::detail::focus_automaton_impl< Tape, Aut >::del_transition ( state_t  src,
state_t  dst,
label_t  l 
)
inline

Apparent label of a transition.

Definition at line 252 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
full_context_t vcsn::detail::focus_automaton_impl< Tape, Aut >::full_context ( ) const
inline

Definition at line 136 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
transition_t vcsn::detail::focus_automaton_impl< Tape, Aut >::get_transition ( state_t  src,
state_t  dst,
label_t  l 
) const
inline

Definition at line 234 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
bool vcsn::detail::focus_automaton_impl< Tape, Aut >::has_transition ( state_t  src,
state_t  dst,
label_t  l 
) const
inline

Apparent label of a transition.

Definition at line 244 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
res_label_t vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_label_of ( transition_t  t) const
inline

Definition at line 147 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<std::size_t... I>
res_label_t vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_label_of_ ( transition_t  t,
index_sequence< I... >   
) const
inlineprivate

Definition at line 182 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
res_label_t vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_one ( ) const
inline

Definition at line 153 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<typename L , std::size_t... I>
std::enable_if_t<L::has_one(), res_label_t> vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_one_ ( index_sequence< I... >  ) const
inlineprivate

Definition at line 190 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<typename L , std::size_t... I>
std::enable_if_t<!L::has_one(), res_label_t> vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_one_ ( index_sequence< I... >  ) const
inlineprivate

Definition at line 198 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
static label_t vcsn::detail::focus_automaton_impl< Tape, Aut >::hide_ ( full_label_t  l)
inlinestaticprivate

Definition at line 176 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::label_of ( transition_t  t) const -> label_t
inline

Apparent label of a transition.

Definition at line 216 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
labelset_ptr vcsn::detail::focus_automaton_impl< Tape, Aut >::labelset ( ) const
inline

Apparent labelset.

Definition at line 166 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::new_transition ( state_t  ,
state_t  ,
label_t  ,
weight_t   
) -> transition_t
inline

Definition at line 294 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::new_transition ( state_t  ,
state_t  ,
label_t   
) -> transition_t
inline

Definition at line 296 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<typename A >
transition_t vcsn::detail::focus_automaton_impl< Tape, Aut >::new_transition_copy ( state_t  src,
state_t  dst,
const A &  aut,
typename A::element_type::transition_t  t,
bool  transpose = false 
)
inline

Copy the full wrapped transition.

Definition at line 262 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::out ( state_t  s) const -> decltype(out(aut_, s))
inline

Definition at line 225 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
std::ostream& vcsn::detail::focus_automaton_impl< Tape, Aut >::print_set ( std::ostream &  o,
format  fmt = {} 
) const
inline

Definition at line 129 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
res_labelset_t vcsn::detail::focus_automaton_impl< Tape, Aut >::res_labelset ( ) const
inline

Definition at line 159 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
template<std::size_t... I>
res_labelset_t vcsn::detail::focus_automaton_impl< Tape, Aut >::res_labelset_ ( index_sequence< I... >  ) const
inlineprivate

Definition at line 204 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
auto vcsn::detail::focus_automaton_impl< Tape, Aut >::set_transition ( state_t  ,
state_t  ,
label_t  ,
weight_t   
) -> transition_t
inline

Definition at line 298 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
static symbol vcsn::detail::focus_automaton_impl< Tape, Aut >::sname ( )
inlinestatic

Definition at line 121 of file focus.hh.

References vcsn::sname(), and vcsn::rat::to_string().

Here is the call graph for this function:

Member Data Documentation

template<std::size_t Tape, Automaton Aut>
context_t vcsn::detail::focus_automaton_impl< Tape, Aut >::context_ = project<Tape>(full_context())
private

Our apparent context.

This is not a luxury to cache it: benches show that in some cases, intensive (and admittedly wrong: they should have been cached on the caller side) calls to context() ruins the performances.

Definition at line 306 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
hidden_indices_t vcsn::detail::focus_automaton_impl< Tape, Aut >::hidden_indices {}
private

Definition at line 174 of file focus.hh.

template<std::size_t Tape, Automaton Aut>
labelset_ptr vcsn::detail::focus_automaton_impl< Tape, Aut >::ls_ = std::make_shared<labelset_t>(aut_->labelset()->template set<Tape>())
private

The apparent labelset.

Caching it avoids difference in behavior with other automata. This example would not be working otherwise (with focus a focus automaton): const auto& ls = *focus->labelset();

Definition at line 312 of file focus.hh.


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