Vcsn  2.3a
Be Rational
vcsn::detail::tuple_automaton_impl< Aut, Auts > Class Template Reference

An automaton whose states are tuples of states of automata. More...

#include <tuple-automaton.hh>

Inheritance diagram for vcsn::detail::tuple_automaton_impl< Aut, Auts >:
Collaboration diagram for vcsn::detail::tuple_automaton_impl< Aut, Auts >:

Public Types

using automaton_t = Aut
 The type of the resulting automaton. More...
 
using super_t = automaton_decorator< automaton_t >
 
using state_t = typename super_t::state_t
 Result state type. More...
 
using state_name_t = std::tuple< state_t_of< Auts >... >
 State names: Tuple of states of input automata. More...
 
using context_t = context_t_of< Aut >
 The type of context of the result. More...
 
using labelset_t = labelset_t_of< context_t >
 
using weightset_t = weightset_t_of< context_t >
 
using label_t = typename labelset_t::value_t
 
using weight_t = typename weightset_t::value_t
 
using automata_t = std::tuple< Auts... >
 The type of input automata. More...
 
template<size_t I>
using input_automaton_t = base_t< tuple_element_t< I, automata_t >>
 The type of the Ith input automaton, unqualified. More...
 
using bimap_t = boost::bimap< boost::bimaps::unordered_set_of< state_name_t >, boost::bimaps::unordered_set_of< state_t >>
 
using map_t = typename bimap_t::left_map
 
using origins_t = typename bimap_t::right_map
 
template<std::size_t... I>
using seq = vcsn::detail::index_sequence< I... >
 A static list of integers. More...
 
using indices_t = vcsn::detail::make_index_sequence< sizeof...(Auts)>
 The list of automaton indices as a static list. More...
 
- Public Types inherited from vcsn::detail::automaton_decorator< Aut >
using automaton_t = Aut
 The type of automaton to wrap. More...
 
using context_t = 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

std::ostream & print_set (std::ostream &o, format fmt={}) const
 
 tuple_automaton_impl (const automaton_t &aut, const Auts &...auts)
 
bool state_has_name (state_t s) const
 
std::ostream & print_state_name (state_t s, std::ostream &o, format fmt={}, bool delimit=false) const
 Print a state name from its state index. More...
 
std::ostream & print_state_name (const state_name_t &sn, std::ostream &o, format fmt={}, bool delimit=false) const
 Print a state name from its state name. More...
 
const origins_torigins () const
 A map from result state to tuple of original states. More...
 
std::ostream & print_set_ (std::ostream &o, format fmt) const
 The setname of the sub automata. More...
 
template<size_t... I>
std::ostream & print_set_ (std::ostream &o, format fmt, seq< I... >) const
 
state_name_t pre_ () const
 The name of the pre of the output automaton. More...
 
template<size_t... I>
state_name_t pre_ (seq< I... >) const
 
state_name_t post_ () const
 The name of the post of the output automaton. More...
 
template<size_t... I>
state_name_t post_ (seq< I... >) const
 
template<bool Lazy = false>
state_t state (const state_name_t &state)
 The state in the product corresponding to a pair of states of operands. More...
 
template<bool Lazy = false>
state_t state (state_t_of< Auts >...ss)
 
template<size_t... I>
std::ostream & print_state_name_ (state_t s, std::ostream &o, format fmt, bool delimit, seq< I... > indices) const
 
template<size_t... I>
std::ostream & print_state_name_ (const state_name_t &sn, std::ostream &o, format fmt, bool delimit, seq< I... >) const
 
map_tpmap_ ()
 A map from original state and status (spontaneous or proper state) to result state. More...
 
- Public Member Functions inherited from vcsn::detail::automaton_decorator< 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 lweight (Args &&...args) -> decltype(aut_-> lweight(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 rweight (Args &&...args) -> decltype(aut_-> rweight(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 ()
 
template<typename... T>
static std::string sname_ (const T &...t)
 The sname of the sub automata. More...
 
- Static Public Member Functions inherited from vcsn::detail::automaton_decorator< 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)...))
 

Public Attributes

automata_t auts_
 Input automata, supplied at construction time. More...
 
bimap_t bimap_
 Bijective map state_name_t -> state_t. More...
 
std::deque< std::pair< state_name_t, state_t > > todo_
 Worklist of state tuples. More...
 

Static Public Attributes

static constexpr indices_t indices {}
 

Additional Inherited Members

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

Detailed Description

template<Automaton Aut, Automaton... Auts>
class vcsn::detail::tuple_automaton_impl< Aut, Auts >

An automaton whose states are tuples of states of automata.

Corresponds to the Cartesian product of states.

Template Parameters
Autthe output automaton type
Autsthe input automaton types

Definition at line 34 of file tuple-automaton.hh.

Member Typedef Documentation

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::automata_t = std::tuple<Auts...>

The type of input automata.

Definition at line 74 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::automaton_t = Aut

The type of the resulting automaton.

Definition at line 39 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::bimap_t = boost::bimap<boost::bimaps::unordered_set_of<state_name_t>, boost::bimaps::unordered_set_of<state_t>>

Definition at line 114 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::context_t = context_t_of<Aut>

The type of context of the result.

The type is the "join" of the contexts, independently of the algorithm. However, its value differs: in the case of the product, the labelset is the meet of the labelsets, it is its join for shuffle and infiltrate.

Definition at line 53 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::indices_t = vcsn::detail::make_index_sequence<sizeof...(Auts)>

The list of automaton indices as a static list.

Definition at line 132 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
template<size_t I>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::input_automaton_t = base_t<tuple_element_t<I, automata_t>>

The type of the Ith input automaton, unqualified.

Definition at line 78 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::label_t = typename labelset_t::value_t

Definition at line 57 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::labelset_t = labelset_t_of<context_t>

Definition at line 54 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::map_t = typename bimap_t::left_map

Definition at line 115 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::origins_t = typename bimap_t::right_map

Definition at line 116 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
template<std::size_t... I>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::seq = vcsn::detail::index_sequence<I...>

A static list of integers.

Definition at line 129 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::state_name_t = std::tuple<state_t_of<Auts>...>

State names: Tuple of states of input automata.

Definition at line 45 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::state_t = typename super_t::state_t

Result state type.

Definition at line 43 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::super_t = automaton_decorator<automaton_t>

Definition at line 40 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::weight_t = typename weightset_t::value_t

Definition at line 58 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
using vcsn::detail::tuple_automaton_impl< Aut, Auts >::weightset_t = weightset_t_of<context_t>

Definition at line 55 of file tuple-automaton.hh.

Constructor & Destructor Documentation

template<Automaton Aut, Automaton... Auts>
vcsn::detail::tuple_automaton_impl< Aut, Auts >::tuple_automaton_impl ( const automaton_t aut,
const Auts &...  auts 
)
inline

Definition at line 83 of file tuple-automaton.hh.

References vcsn::detail::automaton_decorator< Aut >::aut_, vcsn::detail::tuple_automaton_impl< Aut, Auts >::pmap_(), vcsn::detail::tuple_automaton_impl< Aut, Auts >::post_(), and vcsn::detail::tuple_automaton_impl< Aut, Auts >::pre_().

Here is the call graph for this function:

Member Function Documentation

template<Automaton Aut, Automaton... Auts>
const origins_t& vcsn::detail::tuple_automaton_impl< Aut, Auts >::origins ( ) const
inline

A map from result state to tuple of original states.

Definition at line 121 of file tuple-automaton.hh.

References vcsn::detail::tuple_automaton_impl< Aut, Auts >::bimap_.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::state_has_name().

template<Automaton Aut, Automaton... Auts>
map_t& vcsn::detail::tuple_automaton_impl< Aut, Auts >::pmap_ ( )
inline

A map from original state and status (spontaneous or proper state) to result state.

Definition at line 274 of file tuple-automaton.hh.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::tuple_automaton_impl().

template<Automaton Aut, Automaton... Auts>
state_name_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::post_ ( ) const
inline

The name of the post of the output automaton.

Definition at line 195 of file tuple-automaton.hh.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::tuple_automaton_impl().

template<Automaton Aut, Automaton... Auts>
template<size_t... I>
state_name_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::post_ ( seq< I... >  ) const
inline

Definition at line 201 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
state_name_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::pre_ ( ) const
inline

The name of the pre of the output automaton.

Definition at line 181 of file tuple-automaton.hh.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::tuple_automaton_impl().

template<Automaton Aut, Automaton... Auts>
template<size_t... I>
state_name_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::pre_ ( seq< I... >  ) const
inline

Definition at line 187 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_set ( std::ostream &  o,
format  fmt = {} 
) const
inline
template<Automaton Aut, Automaton... Auts>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_set_ ( std::ostream &  o,
format  fmt 
) const
inline

The setname of the sub automata.

Definition at line 156 of file tuple-automaton.hh.

References vcsn::detail::tuple_automaton_impl< Aut, Auts >::indices.

template<Automaton Aut, Automaton... Auts>
template<size_t... I>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_set_ ( std::ostream &  o,
format  fmt,
seq< I... >   
) const
inline

Definition at line 162 of file tuple-automaton.hh.

References vcsn::detail::automaton_decorator< Aut >::aut_, vcsn::detail::tuple_automaton_impl< Aut, Auts >::auts_, vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_set(), and vcsn::detail::void.

Here is the call graph for this function:

template<Automaton Aut, Automaton... Auts>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_state_name ( state_t  s,
std::ostream &  o,
format  fmt = {},
bool  delimit = false 
) const
inline

Print a state name from its state index.

Definition at line 98 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_state_name ( const state_name_t sn,
std::ostream &  o,
format  fmt = {},
bool  delimit = false 
) const
inline

Print a state name from its state name.

Definition at line 106 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
template<size_t... I>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_state_name_ ( state_t  s,
std::ostream &  o,
format  fmt,
bool  delimit,
seq< I... >  indices 
) const
inline

Definition at line 237 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
template<size_t... I>
std::ostream& vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_state_name_ ( const state_name_t sn,
std::ostream &  o,
format  fmt,
bool  delimit,
seq< I... >   
) const
inline

Definition at line 251 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
static symbol vcsn::detail::tuple_automaton_impl< Aut, Auts >::sname ( )
inlinestatic

Definition at line 60 of file tuple-automaton.hh.

References vcsn::res, and vcsn::detail::tuple_automaton_impl< Aut, Auts >::sname_().

Here is the call graph for this function:

template<Automaton Aut, Automaton... Auts>
template<typename... T>
static std::string vcsn::detail::tuple_automaton_impl< Aut, Auts >::sname_ ( const T &...  t)
inlinestatic

The sname of the sub automata.

Definition at line 137 of file tuple-automaton.hh.

References vcsn::res, vcsn::sname(), and vcsn::detail::void.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::sname(), and vcsn::detail::lazy_tuple_automaton< product_automaton_impl< Lazy, Aut, Auts... >, false, Lazy, Aut, Auts... >::sname_().

Here is the call graph for this function:

template<Automaton Aut, Automaton... Auts>
template<bool Lazy = false>
state_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::state ( const state_name_t state)
inline

The state in the product corresponding to a pair of states of operands.

Add the given two source-automaton states to the worklist for the given result automaton if they aren't already there, updating the map; in any case return.

Definition at line 215 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
template<bool Lazy = false>
state_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::state ( state_t_of< Auts >...  ss)
inline

Definition at line 230 of file tuple-automaton.hh.

template<Automaton Aut, Automaton... Auts>
bool vcsn::detail::tuple_automaton_impl< Aut, Auts >::state_has_name ( state_t  s) const
inline

Definition at line 91 of file tuple-automaton.hh.

References vcsn::has(), and vcsn::detail::tuple_automaton_impl< Aut, Auts >::origins().

Here is the call graph for this function:

Member Data Documentation

template<Automaton Aut, Automaton... Auts>
automata_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::auts_

Input automata, supplied at construction time.

Definition at line 280 of file tuple-automaton.hh.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::print_set_().

template<Automaton Aut, Automaton... Auts>
bimap_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::bimap_
mutable

Bijective map state_name_t -> state_t.

Definition at line 283 of file tuple-automaton.hh.

Referenced by vcsn::detail::tuple_automaton_impl< Aut, Auts >::origins().

template<Automaton Aut, Automaton... Auts>
constexpr indices_t vcsn::detail::tuple_automaton_impl< Aut, Auts >::indices {}
static
template<Automaton Aut, Automaton... Auts>
std::deque<std::pair<state_name_t, state_t> > vcsn::detail::tuple_automaton_impl< Aut, Auts >::todo_

Worklist of state tuples.

Definition at line 286 of file tuple-automaton.hh.


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