# MetaElement< TransducerBase< Self >, T > Struct Template Reference
[Concept]

Services of every element of the transducer set. More...

Inheritance diagram for MetaElement< TransducerBase< Self >, T >:
[legend]

List of all members.

## Public Types

typedef MetaElement < TransducerBase< Self >, T > | self_t
| Type of the interface of an automaton.
typedef MetaElement < AutomataBase< Self >, T > | super_t
| Type of the super class.
typedef MetaElement < AutomataBase< Self >, T > | automaton_t
| Type of the interface of an automaton.
typedef super_t::semiring_elt_t | output_series_set_elt_t
| Type of the output.
typedef semiring_t::monoid_t | output_monoid_t
| Type of the output monoid.
typedef Element < output_monoid_t, output_monoid_elt_value_t > | output_monoid_elt_t
| Type of the output monoid element.
typedef super_t::monoid_elt_value_t | input_monoid_elt_value_t
| Type of the input monoid element implementation.
typedef super_t::monoid_t | input_monoid_t
| Type of the input monoid.
typedef Element < input_monoid_t, input_monoid_elt_value_t > | input_monoid_elt_t
| Type of the input monoid element.
typedef algebra::series_traits < semiring_elt_value_t > ::semiring_elt_value_t | output_semiring_elt_value_t
| Type of the output weight implementation.
typedef semiring_t::semiring_t | output_semiring_t
| Type of the output semiring.
typedef Element < output_semiring_t, output_semiring_elt_value_t > | output_semiring_elt_t
| Type of the output weight.
typedef AutomataBase< Self > ::series_set_t | series_set_t
| Type the series set from which is the automaton is built.
typedef AutomataBase< Self > ::kind_t | kind_t
| Type the label kind with which is the automaton is built.
typedef automaton_traits< T > ::series_set_elt_value_t | series_set_elt_value_t
| Type of the implementation of series that holds the automaton.
typedef Element< series_set_t, series_set_elt_value_t > | series_set_elt_t
| Type of the element of the set of series that holds the automaton.
typedef series_set_t::monoid_t | monoid_t
| Type of the free monoid.
typedef series_set_elt_t::monoid_elt_t | monoid_elt_t
| Type of the free monoid element.
typedef monoid_elt_t::value_t | monoid_elt_value_t
| Type of the implementation of a word.
typedef monoid_t::letter_t | letter_t
| Type of the letter.
typedef series_set_t::semiring_t | semiring_t
| Type of the semiring set.
typedef series_set_elt_t::semiring_elt_t | semiring_elt_t
| Type of the free monoid element.
typedef series_set_elt_t::semiring_elt_value_t | semiring_elt_value_t
| Type of the implementation of a semiring_elt.
typedef automaton_traits< T > ::tag_t | tag_t
| Type of additional information that is aggregated to the automaton.
typedef automaton_traits< T > ::label_t | label_t
| Type of the label of the automaton implementation.
typedef automaton_traits< T > ::states_t | states_t
| Type of the states container.
typedef automaton_traits< T > ::state_iterator | state_iterator
| Type of the iterator over the states set.
typedef automaton_traits< T > ::transitions_t | transitions_t
| Type of the transitions set.
typedef automaton_traits< T > ::transition_iterator | transition_iterator
| Type of the iterator over the transitions.
typedef automaton_traits< T > ::initial_support_t | initial_support_t
| Type of the initial application support.
typedef automaton_traits< T > ::initial_iterator | initial_iterator
| Type of the iterator of the initial application support.
typedef automaton_traits< T > ::final_support_t | final_support_t
| Type of the final application support.
typedef automaton_traits< T > ::final_iterator | final_iterator
| Type of the iterator of the final application support.
typedef automaton_traits< T > ::geometry_t | geometry_t
| Type of the geometry map containing state coordinates.
typedef automaton_traits< T > ::geometry_t::coords_t | geometry_coords_t
| Type of the coordinates used in the geometry map.
typedef automaton_traits< T > ::hstate_t | hstate_t
| Type of handlers.
typedef automaton_traits< T > ::delta_iterator | delta_iterator
| Type of delta iterators.

## Public Member Functions

| IMPORT_TYPEDEF_ (automaton_t, series_set_t)
| Type the series set from which is build the automaton.
| IMPORT_TYPEDEF_ (automaton_t, series_set_elt_value_t)
| Type of the implementation of series that holds the automaton.
| IMPORT_TYPEDEF_ (automaton_t, series_set_elt_t)
| Type of the element of the set of series that holds the automaton.
| IMPORT_TYPEDEF_ (automaton_t, monoid_t)
| Type of the free monoid.
| IMPORT_TYPEDEF_ (automaton_t, monoid_elt_t)
| Type of the free monoid element.
| IMPORT_TYPEDEF_ (automaton_t, monoid_elt_value_t)
| Type of the implementation of a word.
| IMPORT_TYPEDEF_ (automaton_t, letter_t)
| Type of the letter.
| IMPORT_TYPEDEF_ (automaton_t, semiring_t)
| Type of the semiring set.
| IMPORT_TYPEDEF_ (automaton_t, semiring_elt_t)
| Type of the free monoid element.
| IMPORT_TYPEDEF_ (automaton_t, semiring_elt_value_t)
| Type of the implementation of a semiring_elt.
| IMPORT_TYPEDEF_ (automaton_t, tag_t)
| Type of additional information that is aggregated to the automaton.
| IMPORT_TYPEDEF_ (automaton_t, label_t)
| Type of the label of the automaton implementation.
| IMPORT_TYPEDEF_ (automaton_t, states_t)
| Type of the states container.
| IMPORT_TYPEDEF_ (automaton_t, state_iterator)
| Type of the iterator over the states set.
| IMPORT_TYPEDEF_ (automaton_t, transitions_t)
| Type of the transitions set.
| IMPORT_TYPEDEF_ (automaton_t, transition_iterator)
| Type of the iterator over the transitions.
| IMPORT_TYPEDEF_ (automaton_t, initial_support_t)
| Type of the initial application support.
| IMPORT_TYPEDEF_ (automaton_t, initial_iterator)
| Type of the iterator of the initial application support.
| IMPORT_TYPEDEF_ (automaton_t, final_support_t)
| Type of the final application support.
| IMPORT_TYPEDEF_ (automaton_t, final_iterator)
| Type of the iterator of the final application support.
input_monoid_elt_t | input_of (typename automaton_traits< T >::htransition_t) const
| Return the input of a transition.
output_series_set_elt_t | output_of (typename automaton_traits< T >::htransition_t) const
| Return the output of a transition.
template<typename U , typename V >
automaton_traits< T > ::htransition_t | add_io_transition (typename automaton_traits< T >::hstate_t, typename automaton_traits< T >::hstate_t, const U &, const V &, output_semiring_elt_t=output_semiring_elt_t())
| Add a transition specified as an input word value, an output word value and a weight linked to it.
template<typename U >
automaton_traits< T > ::htransition_t | add_o_transition (typename automaton_traits< T >::hstate_t, typename automaton_traits< T >::hstate_t, const U &, output_semiring_elt_t=output_semiring_elt_t())
| Add an only-output transition (epsilon as input).
template<typename U >
automaton_traits< T > ::htransition_t | add_i_transition (typename automaton_traits< T >::hstate_t, typename automaton_traits< T >::hstate_t, const U &, output_semiring_elt_t=output_semiring_elt_t())
| Add an only-input transition (epsilon as output).
template<typename U >
void | set_o_final (typename automaton_traits< T >::hstate_t, const U &)
| Set a weight on the final transition, specifying an output_monoid value.
template<typename U >
void | set_o_initial (typename automaton_traits< T >::hstate_t, const U &)
| Set a weight on the initial transition, specifying an output_monoid value.
const series_set_t & | series () const
| The set of series from which is build the automaton.
tag_t & | tag ()
| The optional information aggregated to the automaton.
const tag_t & | tag () const
| The optional information aggregated to the automaton.
geometry_t & | geometry ()
| The optional geometry information aggregated to the automaton.
const geometry_t & | geometry () const
| The optional geometry information aggregated to the automaton.
bool | exists () const
| Return true if the automaton is consistent.
states_t | states () const
| FIXME: These next two methods should really be replaced with (single, i.e.
transitions_t | transitions () const
| Accessor to the set of transitions. (treat as const).
initial_support_t | initial () const
| Accessor to the initial application.
final_support_t | final () const
| Accessor to the final application.
bool | is_initial (const hstate_t &state) const
| Return true if the state is initial (i.e. is in the initial support).
bool | is_final (const hstate_t &state) const
| Return true if the state is final (i.e. is in the final support).
void | set_initial (const hstate_t &state)
| Set the state to be initial.
void | set_initial (const hstate_t &state, const series_set_elt_t &m)
| Set an initial multiplicity to the state.
void | set_final (const hstate_t &state)
| Set the state to be final.
void | set_final (const hstate_t &state, const series_set_elt_t &m)
| Set a final multiplicity to the state.
void | unset_initial (const hstate_t &state)
| Set the state not to be initial.
void | unset_final (const hstate_t &state)
| Set the set not to be final.
void | clear_initial ()
| Make the support of the initial application to be empty.
void | clear_final ()
| Make the support of the final application to be empty.
Element< series_set_t, series_set_elt_value_t > | get_initial (const hstate_t &state) const
| Return the initial multiplicity of the state.
Element< series_set_t, series_set_elt_value_t > | get_final (const hstate_t &state) const
| Return the final multiplicity of the state.
hstate_t | add_state ()
| Add a new state to the automaton.
hstate_t | get_state (unsigned state) const
| Return a state descriptor for state number 'state'.
hstate_t | choose_state () const
| Return a randomly chosen state.
htransition_t | add_transition (const hstate_t &src, const hstate_t &dst, const label_t &label)
| Add a new transition between `src` and `dst` labelled by `label`.
htransition_t | add_weighted_transition (const hstate_t &src, const hstate_t &dst, const semiring_elt_t &w, const monoid_elt_value_t &m)
| Add a new weighted transition, specifying a semiring element and a monoid element.
htransition_t | add_series_transition (const hstate_t &src, const hstate_t &dst, const series_set_elt_t &e)
| Add a transition using a series.
htransition_t | add_spontaneous (const hstate_t &src, const hstate_t &dst, const semiring_elt_t &w)
| Add a spontaneous transition between `src` and `dst`.
htransition_t | add_letter_transition (const hstate_t &src, const hstate_t &dst, const letter_t &l)
| Add a transition between `src` and `dst` labelled by a letter.
htransition_t | add_letter_transition (const hstate_t &src, const hstate_t &dst, const std::string &l)
| Add a transition between `src` and `dst` labelled by a letter from its literal representation.
void | update (const htransition_t &e, const label_t &l)
| Update the label of a transition.
void | del_state (const hstate_t &state)
| Delete the state `s`.
void | del_transition (const htransition_t &e)
| Delete the transition `e`.
bool | has_state (const hstate_t &state) const
| Check if the state `s` is in the automaton.
bool | has_transition (const htransition_t &e) const
| Check if the transition `e` is in the automaton.
hstate_t | src_of (const htransition_t &e) const
| Return the origin of the transition `e`.
hstate_t | dst_of (const htransition_t &e) const
| Return the aim of the transition `e`.
automaton_traits< T >::label_t | label_of (const htransition_t &e) const
| Return the label of the transition `e`.
series_set_elt_t | series_of (const htransition_t &e) const
| Return the label seen as a series.
series_set_elt_value_t | series_value_of (const htransition_t &e) const
| Return the label seen as a series implementation.
bool | is_spontaneous (const htransition_t &e) const
| Return true if the transition is spontaneous.
monoid_elt_t | word_of (const htransition_t &e) const
| Return the label seen as a word.
semiring_elt_t | weight_of (const htransition_t &e) const
| Return the label seen as a weight.
monoid_elt_value_t | word_value_of (const htransition_t &e) const
| Returns the label seen as word implementation.
letter_t | letter_of (const htransition_t &e) const
| Return the label seen as a letter.

## Protected Member Functions

| MetaElement (const MetaElement &other)
| Copy constructor.

## Detailed Description

### template<typename Self, typename T>
struct vcsn::MetaElement< TransducerBase< Self >, T >

Services of every element of the transducer set.

MetaElement<TransducerBase<Self>, T> defines the interface of every transducer that is the result of the interaction of a structural element (TransducerBase<Self>) and an implementation T.

Definition at line 126 of file transducer_base.hh.

## Member Function Documentation

automaton_traits< T >::htransition_t add_io_transition | ( | typename automaton_traits< T >::hstate_t | from,
|  | typename automaton_traits< T >::hstate_t | to,
|  | const U & | i,
|  | const V & | o,
|  | output_semiring_elt_t | w = `output_semiring_elt_t()` |
| ) |  |  |

Add a transition specified as an input word value, an output word value and a weight linked to it.

Definition at line 61 of file transducer_base.hxx.

void set_o_initial | ( | typename automaton_traits< T >::hstate_t | initial,
|  | const U & | o |
| ) |  |  |

Set a weight on the initial transition, specifying an output_monoid value.

Definition at line 130 of file transducer_base.hxx.

References Element< S, T >::value().

const MetaElement< AutomataBase< Self >, T >::series_set_t & series | ( |  | ) | const`[inherited]`

The set of series from which is build the automaton.

The optional information aggregated to the automaton.

Definition at line 113 of file automata_base.hxx.

MetaElement< AutomataBase< Self >, T >::tag_t & tag | ( |  | ) | `[inherited]`

The optional information aggregated to the automaton.

Definition at line 57 of file automata_base.hxx.

const MetaElement< AutomataBase< Self >, T >::tag_t & tag | ( |  | ) | const`[inherited]`

The optional information aggregated to the automaton.

Definition at line 65 of file automata_base.hxx.

MetaElement< AutomataBase< Self >, T >::geometry_t & geometry | ( |  | ) | `[inherited]`

The optional geometry information aggregated to the automaton.

Definition at line 73 of file automata_base.hxx.

const MetaElement< AutomataBase< Self >, T >::geometry_t & geometry | ( |  | ) | const`[inherited]`

The optional geometry information aggregated to the automaton.

Definition at line 81 of file automata_base.hxx.

bool exists | ( |  | ) | const`[inherited]`

Return true if the automaton is consistent.

Definition at line 89 of file automata_base.hxx.

References vcsn::op_exists().

automaton_traits< T >::states_t states | ( |  | ) | const`[inherited]`

FIXME: These next two methods should really be replaced with (single, i.e.

Accessor to the set of states.

not begin and end) iterators. (See Trac #191.) Accessor to the set of states. (treat as const)

(treat as const)

Definition at line 97 of file automata_base.hxx.

References vcsn::op_states().

automaton_traits< T >::transitions_t transitions | ( |  | ) | const`[inherited]`

Accessor to the set of transitions. (treat as const).

Accessor to the set of transitions.

(treat as const)

Definition at line 105 of file automata_base.hxx.

References vcsn::op_transitions().

automaton_traits< T >::initial_support_t initial | ( |  | ) | const`[inherited]`

Accessor to the initial application.

Definition at line 121 of file automata_base.hxx.

References vcsn::op_initial().

automaton_traits< T >::final_support_t final | ( |  | ) | const`[inherited]`

Accessor to the final application.

Definition at line 130 of file automata_base.hxx.

References vcsn::op_final().

void clear_initial | ( |  | ) | `[inherited]`

Make the support of the initial application to be empty.

Definition at line 295 of file automata_base.hxx.

References vcsn::op_clear_initial().

void clear_final | ( |  | ) | `[inherited]`

Make the support of the final application to be empty.

Definition at line 303 of file automata_base.hxx.

References vcsn::op_clear_final().

automaton_traits< T >::hstate_t add_state | ( |  | ) | `[inherited]`

Add a new state to the automaton.

Definition at line 341 of file automata_base.hxx.

References vcsn::op_add_state().

automaton_traits< T >::hstate_t get_state | ( | unsigned | state | ) | const`[inherited]`

Return a state descriptor for state number 'state'.

Definition at line 349 of file automata_base.hxx.

References vcsn::op_get_state().

automaton_traits< T >::hstate_t choose_state | ( |  | ) | const`[inherited]`

Return a randomly chosen state.

(valid only if the automaton is not empty)

Definition at line 358 of file automata_base.hxx.

References vcsn::op_choose_state().

htransition_t add_weighted_transition | ( | const hstate_t & | src,
|  | const hstate_t & | dst,
|  | const semiring_elt_t & | w,
|  | const monoid_elt_value_t & | m |
| ) |  |  | `[inherited]`

Add a new weighted transition, specifying a semiring element and a monoid element.

htransition_t add_series_transition | ( | const hstate_t & | src,
|  | const hstate_t & | dst,
|  | const series_set_elt_t & | e |
| ) |  |  | `[inherited]`

Add a transition using a series.

If the underlying implementation is not sufficiently general to support this operation, you will have several transitions created.

letter_t letter_of | ( | const htransition_t & | e | ) | const`[inherited]`

Return the label seen as a letter.

Be careful, when you have more general label this method is ! probably invalidated (in that case, an exception should be ! raised.)