![]() |
Vcsn
2.4
Be Rational
|
#include <map>
#include <boost/optional.hpp>
#include <vcsn/core/automaton.hh>
#include <vcsn/core/mutable-automaton.hh>
#include <vcsn/core/rat/expression.hh>
#include <vcsn/core/rat/expressionset.hh>
#include <vcsn/ctx/context.hh>
#include <vcsn/dyn/automaton.hh>
#include <vcsn/labelset/oneset.hh>
#include <vcsn/dyn/name.hh>
Go to the source code of this file.
Classes | |
struct | vcsn::detail::lifter_impl< Context, Tapes, Enable > |
Helper structure for a lift of several tapes. More... | |
struct | vcsn::detail::lifter_impl< Context, vcsn::detail::index_sequence<> > |
Lift all the label tapes to the weights. More... | |
Namespaces | |
vcsn | |
vcsn::detail | |
vcsn::dyn | |
vcsn::dyn::detail | |
Typedefs | |
template<typename Ctx , size_t... Tapes> | |
using | vcsn::detail::lifter_t = lifter_impl< Ctx, detail::index_sequence< Tapes...>> |
A traits to lift the Tapes of the labels to the weights. More... | |
template<Automaton Aut, size_t... Tapes> | |
using | vcsn::detail::lifted_automaton_t = mutable_automaton< typename lifter_t< context_t_of< Aut >, Tapes...>::context_t > |
template<typename ExpSet > | |
using | vcsn::detail::lifted_expressionset_t = expressionset< typename lifter_t< context_t_of< ExpSet >>::context_t > |
Functions | |
static labelset_t::value_t | vcsn::detail::kept_label (const in_label_t &l) |
Label in the output. More... | |
template<size_t... I> | |
static labelset_t::value_t | vcsn::detail::kept_label_ (const in_label_t &l, seq< I...>) |
static weight_tapes_t::value_t | vcsn::detail::weight_label (const in_label_t &l) |
Weight in the output. More... | |
template<size_t... I> | |
static weight_tapes_t::value_t | vcsn::detail::weight_label_ (const in_label_t &l, seq< I...>) |
template<typename LabelSet , typename WeightSet , size_t... Tapes> | |
lifter_t< context< LabelSet, WeightSet >, Tapes...> ::context_t | vcsn::detail::lift_context (const context< LabelSet, WeightSet > &ctx) |
lift(ctx) -> ctx More... | |
template<Automaton Aut, size_t... Tapes> | |
detail::lifted_automaton_t < Aut, Tapes...> | vcsn::lift (const Aut &a, vcsn::rat::identities ids={}) |
Lift some tapes of the transducer. More... | |
template<Automaton Aut, typename Ids , typename... Tapes> | |
automaton | vcsn::dyn::detail::lift_automaton (const automaton &aut, identities ids, integral_constant) |
Bridge. More... | |
template<typename Context > | |
lifted_expressionset_t < expressionset< Context > > | vcsn::detail::lift_expressionset (const expressionset< Context > &rs, boost::optional< vcsn::rat::identities > ids={}) |
lift(expressionset) -> expressionset More... | |
template<typename ExpSet > | |
detail::lifted_expressionset_t < ExpSet >::value_t | vcsn::lift (const ExpSet &rs, const typename ExpSet::value_t &e) |
Move all the labels to the weights. More... | |
template<typename ExpSet > | |
expression | vcsn::dyn::detail::lift_expression (const expression &exp) |
Bridge (lift). More... | |
Variables | |
template<typename... LabelSets, typename WeightSet , size_t... Tapes> | |
struct lifter_impl< context < tupleset< LabelSets...> , WeightSet > , vcsn::detail::index_sequence < Tapes...>, std::enable_if_t <(0< sizeof...(Tapes))> >{using in_labelset_t=tupleset < LabelSets...>;using in_context_t=context < in_labelset_t, WeightSet > ;using in_label_t=typename in_labelset_t::value_t;template < std::size_t...I >using seq=detail::index_sequence < I...>;template< typename S, typename L >struct tape_set;template < typename LabelSet >struct tape_set< seq<>, LabelSet > {using type=oneset;};template < size_t...I, typename LabelSet >struct tape_set< seq < I...>, LabelSet >{using type=tupleset < typename LabelSet::template valueset_t< I >...>;};using index_t=typename detail::make_index_sequence < in_labelset_t::size()>::type;static constexpr size_t number_of_tapes=in_labelset_t::size();template < size_t I >using tape_labelset_t=typename in_labelset_t::template valueset_t< I >;using kept_index_t=sequence_difference < index_t, seq< Tapes...> >;using labelset_t=typename tape_set< kept_index_t, in_labelset_t >::type;using weight_index_t=seq< Tapes...> ;using weight_tapes_t=typename tape_set< weight_index_t, in_labelset_t >::type;using inner_context_t=context < weight_tapes_t, WeightSet > ;using weightset_t=expressionset < inner_context_t >;using context_t=context< labelset_t, weightset_t >;static context_t value(const in_context_t &ctx, vcsn::rat::identities ids){return value_(ctx, ids, weight_index_t{}, kept_index_t{});}template < size_t...WeightTapes, size_t...KeptTapes >static context_t value_(const in_context_t &ctx, vcsn::rat::identities ids, seq < WeightTapes...>, seq < KeptTapes...>){auto ls=labelset_t{ctx.labelset() -> template | vcsn::detail::set< KeptTapes > ()...} |
Specialization: lift only some tapes. More... | |
auto | vcsn::detail::weight_tapes = weight_tapes_t{ctx.labelset()->template set<WeightTapes>()...} |
auto | vcsn::detail::ictx = inner_context_t{weight_tapes, *ctx.weightset()} |
auto | vcsn::detail::rs = weightset_t{ictx, ids} |
vcsn::detail::return {ls, rs} | |