Vcsn  2.8
Be Rational
vcsn::detail::tupleset_impl< ValueSets > Class Template Reference

A ValueSet which is a Cartesian product of ValueSets. More...

#include <fwd.hh>

Collaboration diagram for vcsn::detail::tupleset_impl< ValueSets >:

Public Types

using valuesets_t = std::tuple< ValueSets... >
 
using indices_t = make_index_sequence< sizeof...(ValueSets)>
 
template<std::size_t... I>
using seq = index_sequence< I... >
 
template<std::size_t I>
using valueset_t = tuple_element_t< I, valuesets_t >
 The Ith valueset type. More...
 
using self_t = tupleset< ValueSets... >
 
using value_t = std::tuple< typename ValueSets::value_t... >
 A tuple of values. More...
 
using letter_t = typename labelset_types< ValueSets... >::letter_t
 A tuple of base letters if meaningful, void otherwise. More...
 
using letters_t = typename labelset_types< ValueSets... >::letters_t
 A set of letters if meaningful, void otherwise. More...
 
using genset_ptr = typename labelset_types< ValueSets... >::genset_ptr
 A tuple of generators if meaningful, void otherwise. More...
 
using word_t = typename labelset_types< ValueSets... >::word_t
 A tuple of words if meaningful, void otherwise. More...
 
using value_type = letter_t
 To be iterable. More...
 
using kind_t = labels_are_tuples
 
template<size_t I>
using project_t = valueset_t< I >
 The type of the I-th tape valueset. More...
 
using indices1_t = punched_sequence< tupleset< LS1... >::size(), out >
 
using indices2_t = punched_sequence< tupleset< LS2... >::size(), in >
 

Public Member Functions

 tupleset_impl (valuesets_t vs)
 
 tupleset_impl (ValueSets... ls)
 
 ~tupleset_impl ()
 
const valuesets_tsets () const
 The componants valuesets, as a tuple. More...
 
template<size_t I>
const valueset_t< I > & set () const
 The Ith component valueset. More...
 
template<size_t I>
const valueset_t< I > & project () const
 The Ith component valueset. More...
 
template<size_t I>
auto project (const value_t &v) const
 The I-th component of the value. More...
 
bool open (bool o) const
 Whether unknown letters should be added, or rejected. More...
 
template<typename... Args>
value_t value (const std::tuple< Args... > &args) const
 Construct a value. More...
 
template<typename... Args>
value_t tuple (Args &&... args) const
 Construct a value. More...
 
template<typename... LS1, typename... LS2>
auto compose (const tupleset< LS1... > &ls1, const typename tupleset< LS1... >::value_t &l1, const tupleset< LS2... > &ls2, const typename tupleset< LS2... >::value_t &l2) const -> std::enable_if_t< are_labelsets_composable< tupleset< LS1... >, tupleset< LS2... >>
 Compose, aka join in the world of databases. More...
 
return compose_ (ls1, l1, ls2, l2, indices1_t{}, indices2_t{})
 
genset_ptr genset () const
 
auto pregenerators () const
 The pregenerators. Meaningful for labelsets only. More...
 
auto generators () const
 The generators. Meaningful for labelsets only. More...
 
template<typename... Args>
auto word (const std::tuple< Args... > &v) const -> word_t
 Convert to a word. More...
 
template<typename Fun >
auto map (Fun &&fun) const
 Run a function per set, and return the tuple of results. More...
 
bool is_zero (const value_t &l) const
 
bool is_letter (const value_t &) const
 
bool is_valid (const value_t &l) const
 
value_t add (const value_t &l, const value_t &r) const
 Pointwise addition. More...
 
template<typename LhsValue , typename RhsValue >
auto mul (const LhsValue &l, const RhsValue &r) const -> word_t
 The product (possibly concatenation) of l and r. More...
 
value_t lgcd (const value_t &l, const value_t &r) const
 Pointwise left GCD. More...
 
value_t rdivide (const value_t &l, const value_t &r) const
 Pointwise right division (l / r). More...
 
boost::optional< value_tmaybe_rdivide (const value_t &l, const value_t &r) const
 
value_t ldivide (const value_t &l, const value_t &r) const
 Pointwise left division (l \ r). More...
 
boost::optional< value_tmaybe_ldivide (const value_t &l, const value_t &r) const
 
valueset_t< 0 >::value_t lnormalize_here (value_t &v) const
 Eliminate the LGCD between all the tapes. More...
 
value_t star (const value_t &v) const
 Pointwise star. More...
 
template<typename Value >
Value delimit (const Value &l) const
 Add the special character first and last. More...
 
template<typename Value >
Value undelimit (const Value &l) const
 Remove first and last characters, that must be "special". More...
 
template<typename Value >
Value transpose (const Value &l) const
 Transpose a word_t or a value_t. More...
 
value_t conv (b, b::value_t v) const
 
template<typename... VS>
value_t conv (const tupleset< VS... > &vs, const typename tupleset< VS... >::value_t &v) const
 Convert a value from tupleset<...> to value_t. More...
 
template<typename... VS>
value_t conv (const nullableset< tupleset< VS... >> &vs, const typename nullableset< tupleset< VS... >>::value_t &v) const
 Convert a value from nullableset<tupleset<...>> to value_t. More...
 
template<typename VS >
value_t conv (const VS &vs, const typename VS::value_t &v) const
 Convert a single tape expression to multitape. More...
 
value_t conv (std::istream &i, bool quoted=true) const
 Read one label from i, return the corresponding value. More...
 
template<typename Fun >
void convs (std::istream &i, Fun &&fun) const
 Fun: (label_t) -> void. More...
 
std::ostream & print_set (std::ostream &o, format fmt={}) const
 
std::ostream & print (const value_t &l, std::ostream &o=std::cout, format fmt={}) const
 
template<std::size_t... I>
auto get_letter (std::istream &i, bool quoted=true) const -> decltype(this->get_letter_(i, quoted, indices))
 
template<typename Value , typename... Defaults>
auto letters_of_padded (const Value &v, const std::tuple< Defaults... > &def) const -> decltype(this->letters_of_padded_(v, def, indices))
 Iterate over the letters of v. More...
 

Static Public Member Functions

static symbol sname ()
 
static constexpr std::size_t size ()
 Number of tapes. More...
 
template<typename Value >
static size_t size (const Value &v)
 Get the max of the sizes of the tapes. More...
 
static constexpr bool is_commutative ()
 
static constexpr bool is_idempotent ()
 
static self_t make (std::istream &is)
 Build from the description in is. More...
 
static constexpr bool is_free ()
 
static bool equal (const value_t &l, const value_t &r)
 Whether l equals r. More...
 
template<typename LhsValue , typename RhsValue >
static auto compare (const LhsValue &l, const RhsValue &r) -> int
 Three-way comparison between l and r. More...
 
template<typename LhsValue , typename RhsValue >
static auto less (const LhsValue &l, const RhsValue &r) -> bool
 Whether l < r. More...
 
static value_t special ()
 
static bool is_special (const value_t &l)
 
static constexpr bool has_lightening_weights ()
 
static constexpr bool has_one ()
 
static constexpr bool is_expressionset ()
 
static constexpr bool is_letterized ()
 
template<typename Indices = indices_t>
static auto one () -> decltype(one_(Indices
 A tuple of ones. More...
 
static bool is_one (const value_t &l)
 
static bool show_one ()
 
static constexpr star_status_t star_status ()
 
static size_t hash (const value_t &v)
 
static value_t conv (self_t, value_t v)
 
template<typename Indices = indices_t>
static auto zero () -> decltype(zero_(Indices
 A tuple of zeros. More...
 
template<typename Value >
static auto letters_of (const Value &v) -> decltype(letters_of_(v, indices))
 Iterate over the letters of v. More...
 

Public Attributes

 value_t
 
constexpr auto in = 0
 

Static Public Attributes

static constexpr indices_t indices {}
 
static constexpr bool is_labelset = labelset_types<ValueSets...>::is_labelset
 Whether this models a labelset. More...
 

Private Member Functions

template<std::size_t... I>
bool open_ (bool o, seq< I... >) const
 
template<typename... Args, std::size_t... I>
value_t value_ (const std::tuple< Args... > &args, seq< I... >) const
 
template<typename... LS1, typename... LS2, std::size_t... I1, std::size_t... I2>
value_t compose_ (const tupleset< LS1... > &, const typename tupleset< LS1... >::value_t &l1, const tupleset< LS2... > &, const typename tupleset< LS2... >::value_t &l2, seq< I1... >, seq< I2... >) const
 
template<std::size_t... I>
genset_ptr genset_ (seq< I... >) const
 
template<std::size_t... I>
auto pregenerators_ (seq< I... >) const
 
template<typename... Args, std::size_t... I>
word_t word_ (const std::tuple< Args... > &l, seq< I... >) const
 
template<std::size_t... I>
bool is_zero_ (const value_t &l, seq< I... >) const
 
template<std::size_t... I>
bool is_valid_ (const value_t &l, seq< I... >) const
 
template<typename Fun , std::size_t... I>
auto map_impl_ (Fun &&fun, seq< I... >) const
 Run a nullary function pointwise, and return the tuple of results. More...
 
template<typename Fun >
value_t map_ (const value_t &v, Fun &&fun) const
 Apply a unary function pointwise, and return the tuple of results. More...
 
template<typename Fun , std::size_t... I>
value_t map_impl_ (const value_t &v, Fun &&fun, seq< I... >) const
 
template<typename Fun >
value_t map_ (const value_t &l, const value_t &r, Fun &&fun) const
 Apply a binary function pointwise, and return the tuple of results. More...
 
template<typename Fun , std::size_t... I>
value_t map_impl_ (const value_t &l, const value_t &r, Fun &&fun, seq< I... >) const
 
template<typename LhsValue , typename RhsValue , std::size_t... I>
auto mul_ (const LhsValue &l, const RhsValue &r, seq< I... >) const -> word_t
 
template<std::size_t... I>
valueset_t< 0 >::value_t lnormalize_here_ (value_t &vs, seq< I... >) const
 
template<typename Value , std::size_t... I>
Value delimit_ (const Value &l, seq< I... >) const
 
template<typename Value , std::size_t... I>
Value undelimit_ (const Value &l, seq< I... >) const
 
template<typename... VS, std::size_t... I>
value_t conv_ (const tupleset< VS... > &vs, const typename tupleset< VS... >::value_t &v, seq< I... >) const
 
template<typename VS , std::size_t... I>
value_t partial_identity_ (const VS &vs, const typename VS::value_t &v, seq< I... >) const
 
value_t conv_ (std::istream &i, bool quoted, std::true_type) const
 When the valuesets are labelsets and support one, accept the empty string to denote one. More...
 
value_t conv_ (std::istream &i, bool quoted, std::false_type) const
 Read a tuple in the stream, possibly parenthesized. More...
 
template<std::size_t... I>
value_t conv_ (std::istream &i, bool quoted, seq< I... >) const
 
template<std::size_t... I>
std::ostream & print_ (const value_t &l, std::ostream &o, format fmt, const char *pre, const char *sep, const char *post, seq< I... >) const
 
template<std::size_t... I>
std::ostream & print_set_ (std::ostream &o, format fmt, seq< I... >) const
 
template<typename Value , std::size_t... I>
Value transpose_ (const Value &l, seq< I... >) const
 
template<std::size_t... I>
self_t meet_ (const self_t &rhs, seq< I... >) const
 The intersection with another tupleset. More...
 
template<std::size_t... I>
auto get_letter_ (std::istream &i, bool quoted, seq< I... >) const -> letter_t
 Must be declared before, as we use its result in decltype. More...
 
template<typename Value , typename... Defaults, std::size_t... I>
auto letters_of_padded_ (const Value &v, const std::tuple< Defaults... > &def, seq< I... >) const -> decltype(zip_with_padding(def, this->set< I >().letters_of_padded(std::get< I >(v), std::get< I >(def))...))
 Must be declared before, as we use its result in decltype. More...
 

Static Private Member Functions

template<std::size_t... I>
static auto one_ (seq< I... >) -> decltype(value_t
 
template<std::size_t... I>
static std::string sname_ (seq< I... >)
 
template<std::size_t... I>
static constexpr bool is_commutative_ (seq< I... >)
 
template<std::size_t... I>
static constexpr bool is_idempotent_ (seq< I... >)
 
template<std::size_t... I>
static self_t make_ (std::istream &i, seq< I... >)
 
template<typename Value , std::size_t I>
static auto size_ (const Value &v, int) -> decltype(valueset_t< I >::size(std::get< I >(v)))
 The size of the Ith element, if its valueset features a size() function. More...
 
template<typename Value , std::size_t I>
static constexpr auto size_ (const Value &,...) -> size_t
 The size of the Ith element, if its valueset does not feature a size() function. More...
 
template<typename Value , std::size_t... I>
static size_t size_ (const Value &v, seq< I... >)
 
template<std::size_t... I>
static constexpr bool is_free_ (seq< I... >)
 
template<std::size_t... I>
static bool equal_ (const value_t &l, const value_t &r, seq< I... >)
 
template<typename LhsValue , typename RhsValue , std::size_t... I>
static auto less_ (const LhsValue &l, const RhsValue &r, seq< I... >) -> bool
 
template<std::size_t... I>
static std::size_t hash_ (const value_t &v, seq< I... >)
 
template<std::size_t... I>
static value_t special_ (seq< I... >)
 
template<std::size_t... I>
static bool is_special_ (const value_t &l, seq< I... >)
 
template<std::size_t... I>
static auto zero_ (seq< I... >) -> decltype(value_t
 
template<std::size_t... I>
static constexpr bool has_lightening_weights_ (seq< I... >)
 
template<std::size_t... I>
static constexpr bool has_one_ (seq< I... >)
 
template<std::size_t... I>
static constexpr bool is_expressionset_ (seq< I... >)
 
template<std::size_t... I>
static constexpr bool is_letterized_ (seq< I... >)
 
template<std::size_t... I>
static bool is_one_ (const value_t &l, seq< I... >)
 
template<std::size_t... I>
static bool show_one_ (seq< I... >)
 
template<std::size_t I>
static void eat_separator_ (std::istream &i)
 Read the separator from the input stream i if I is not 0. More...
 
template<typename Value , std::size_t... I>
static auto letters_of_ (const Value &v, seq< I... >) -> decltype(zip(valueset_t< I >::letters_of(std::get< I >(v))...))
 Must be declared before, as we use its result in decltype. More...
 

Private Attributes

valuesets_t sets_
 The tupled valuesets. More...
 
bool open__ = false
 Whether this valueset is open. More...
 

Friends

self_t meet (const self_t &lhs, const self_t &rhs)
 The meet with another tupleset. More...
 
self_t meet (const self_t &lhs, const b &)
 The meet with the B weightset. More...
 
self_t meet (const b &, const self_t &rhs)
 The meet with the B weightset. More...
 

Detailed Description

template<typename... ValueSets>
class vcsn::detail::tupleset_impl< ValueSets >

A ValueSet which is a Cartesian product of ValueSets.

Exposes a LabelSet interface for products of LabelSets, and similarly for WeightSets.

Definition at line 23 of file fwd.hh.

Member Typedef Documentation

◆ genset_ptr

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::genset_ptr = typename labelset_types<ValueSets...>::genset_ptr

A tuple of generators if meaningful, void otherwise.

Definition at line 96 of file tupleset.hh.

◆ indices1_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::indices1_t = punched_sequence<tupleset<LS1...>::size(), out>

Definition at line 232 of file tupleset.hh.

◆ indices2_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::indices2_t = punched_sequence<tupleset<LS2...>::size(), in>

Definition at line 233 of file tupleset.hh.

◆ indices_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::indices_t = make_index_sequence<sizeof...(ValueSets)>

Definition at line 75 of file tupleset.hh.

◆ kind_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::kind_t = labels_are_tuples

Definition at line 107 of file tupleset.hh.

◆ letter_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::letter_t = typename labelset_types<ValueSets...>::letter_t

A tuple of base letters if meaningful, void otherwise.

Definition at line 91 of file tupleset.hh.

◆ letters_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::letters_t = typename labelset_types<ValueSets...>::letters_t

A set of letters if meaningful, void otherwise.

Definition at line 93 of file tupleset.hh.

◆ project_t

template<typename... ValueSets>
template<size_t I>
using vcsn::detail::tupleset_impl< ValueSets >::project_t = valueset_t<I>

The type of the I-th tape valueset.

Definition at line 177 of file tupleset.hh.

◆ self_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::self_t = tupleset<ValueSets...>

Definition at line 85 of file tupleset.hh.

◆ seq

template<typename... ValueSets>
template<std::size_t... I>
using vcsn::detail::tupleset_impl< ValueSets >::seq = index_sequence<I...>

Definition at line 78 of file tupleset.hh.

◆ value_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::value_t = std::tuple<typename ValueSets::value_t...>

A tuple of values.

Definition at line 88 of file tupleset.hh.

◆ value_type

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::value_type = letter_t

To be iterable.

Definition at line 105 of file tupleset.hh.

◆ valueset_t

template<typename... ValueSets>
template<std::size_t I>
using vcsn::detail::tupleset_impl< ValueSets >::valueset_t = tuple_element_t<I, valuesets_t>

The Ith valueset type.

Definition at line 82 of file tupleset.hh.

◆ valuesets_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::valuesets_t = std::tuple<ValueSets...>

Definition at line 74 of file tupleset.hh.

◆ word_t

template<typename... ValueSets>
using vcsn::detail::tupleset_impl< ValueSets >::word_t = typename labelset_types<ValueSets...>::word_t

A tuple of words if meaningful, void otherwise.

Definition at line 98 of file tupleset.hh.

Constructor & Destructor Documentation

◆ tupleset_impl() [1/2]

template<typename... ValueSets>
vcsn::detail::tupleset_impl< ValueSets >::tupleset_impl ( valuesets_t  vs)
inline

Definition at line 109 of file tupleset.hh.

◆ tupleset_impl() [2/2]

template<typename... ValueSets>
vcsn::detail::tupleset_impl< ValueSets >::tupleset_impl ( ValueSets...  ls)
inline

Definition at line 113 of file tupleset.hh.

◆ ~tupleset_impl()

template<typename... ValueSets>
vcsn::detail::tupleset_impl< ValueSets >::~tupleset_impl ( )
inline

Definition at line 117 of file tupleset.hh.

Member Function Documentation

◆ add()

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::add ( const value_t l,
const value_t r 
) const
inline

Pointwise addition.

Definition at line 403 of file tupleset.hh.

◆ compare()

template<typename... ValueSets>
template<typename LhsValue , typename RhsValue >
static auto vcsn::detail::tupleset_impl< ValueSets >::compare ( const LhsValue &  l,
const RhsValue &  r 
) -> int
inlinestatic

Three-way comparison between l and r.

Definition at line 293 of file tupleset.hh.

◆ compose()

template<typename... ValueSets>
template<typename... LS1, typename... LS2>
auto vcsn::detail::tupleset_impl< ValueSets >::compose ( const tupleset< LS1... > &  ls1,
const typename tupleset< LS1... >::value_t l1,
const tupleset< LS2... > &  ls2,
const typename tupleset< LS2... >::value_t l2 
) const -> std::enable_if_t<are_labelsets_composable<tupleset<LS1...>, tupleset<LS2...>>
inline

Compose, aka join in the world of databases.

Beware that we don't even check that the common tapes match.

Definition at line 220 of file tupleset.hh.

◆ compose_() [1/2]

template<typename... ValueSets>
return vcsn::detail::tupleset_impl< ValueSets >::compose_ ( ls1  ,
l1  ,
ls2  ,
l2  ,
indices1_t{}  ,
indices2_t{}   
)

◆ compose_() [2/2]

template<typename... ValueSets>
template<typename... LS1, typename... LS2, std::size_t... I1, std::size_t... I2>
value_t vcsn::detail::tupleset_impl< ValueSets >::compose_ ( const tupleset< LS1... > &  ,
const typename tupleset< LS1... >::value_t l1,
const tupleset< LS2... > &  ,
const typename tupleset< LS2... >::value_t l2,
seq< I1... >  ,
seq< I2... >   
) const
inlineprivate

Definition at line 726 of file tupleset.hh.

◆ conv() [1/6]

template<typename... ValueSets>
static value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( self_t  ,
value_t  v 
)
inlinestatic

Definition at line 563 of file tupleset.hh.

References vcsn::detail::v.

◆ conv() [2/6]

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( b  ,
b::value_t  v 
) const
inline

Definition at line 569 of file tupleset.hh.

◆ conv() [3/6]

template<typename... ValueSets>
template<typename... VS>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( const tupleset< VS... > &  vs,
const typename tupleset< VS... >::value_t v 
) const
inline

Convert a value from tupleset<...> to value_t.

Definition at line 577 of file tupleset.hh.

◆ conv() [4/6]

template<typename... ValueSets>
template<typename... VS>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( const nullableset< tupleset< VS... >> &  vs,
const typename nullableset< tupleset< VS... >>::value_t v 
) const
inline

Convert a value from nullableset<tupleset<...>> to value_t.

Definition at line 586 of file tupleset.hh.

References vcsn::conv().

Here is the call graph for this function:

◆ conv() [5/6]

template<typename... ValueSets>
template<typename VS >
value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( const VS &  vs,
const typename VS::value_t &  v 
) const
inline

Convert a single tape expression to multitape.

Definition at line 595 of file tupleset.hh.

◆ conv() [6/6]

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv ( std::istream &  i,
bool  quoted = true 
) const
inline

Read one label from i, return the corresponding value.

Definition at line 602 of file tupleset.hh.

References vcsn::detail::labelset_types_impl< Enable, ValueSets >::is_labelset.

◆ conv_() [1/4]

template<typename... ValueSets>
template<typename... VS, std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv_ ( const tupleset< VS... > &  vs,
const typename tupleset< VS... >::value_t v,
seq< I... >   
) const
inlineprivate

Definition at line 978 of file tupleset.hh.

References vcsn::conv(), and vcsn::detail::v.

Here is the call graph for this function:

◆ conv_() [2/4]

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv_ ( std::istream &  i,
bool  quoted,
std::true_type   
) const
inlineprivate

When the valuesets are labelsets and support one, accept the empty string to denote one.

Definition at line 996 of file tupleset.hh.

◆ conv_() [3/4]

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv_ ( std::istream &  i,
bool  quoted,
std::false_type   
) const
inlineprivate

Read a tuple in the stream, possibly parenthesized.

Definition at line 1007 of file tupleset.hh.

References vcsn::eat(), and vcsn::res.

Here is the call graph for this function:

◆ conv_() [4/4]

template<typename... ValueSets>
template<std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::conv_ ( std::istream &  i,
bool  quoted,
seq< I... >   
) const
inlineprivate

Definition at line 1020 of file tupleset.hh.

References vcsn::conv(), and vcsn::detail::make_gcc_tuple().

Here is the call graph for this function:

◆ convs()

template<typename... ValueSets>
template<typename Fun >
void vcsn::detail::tupleset_impl< ValueSets >::convs ( std::istream &  i,
Fun &&  fun 
) const
inline

Fun: (label_t) -> void.

Definition at line 611 of file tupleset.hh.

References vcsn::detail::conv_label_class_(), and vcsn::eat().

Here is the call graph for this function:

◆ delimit()

template<typename... ValueSets>
template<typename Value >
Value vcsn::detail::tupleset_impl< ValueSets >::delimit ( const Value &  l) const
inline

Add the special character first and last.

Templated by Value so that we work for both word_t and label_t. Besides, avoids the problem of instantiation with weightsets that do not provide a word_t type.

Definition at line 529 of file tupleset.hh.

◆ delimit_()

template<typename... ValueSets>
template<typename Value , std::size_t... I>
Value vcsn::detail::tupleset_impl< ValueSets >::delimit_ ( const Value &  l,
seq< I... >   
) const
inlineprivate

Definition at line 964 of file tupleset.hh.

◆ eat_separator_()

template<typename... ValueSets>
template<std::size_t I>
static void vcsn::detail::tupleset_impl< ValueSets >::eat_separator_ ( std::istream &  i)
inlinestaticprivate

Read the separator from the input stream i if I is not 0.

The separator is '|' (for labels), but ',' is accepted too (for weights).

Definition at line 1039 of file tupleset.hh.

References vcsn::eat().

Here is the call graph for this function:

◆ equal()

template<typename... ValueSets>
static bool vcsn::detail::tupleset_impl< ValueSets >::equal ( const value_t l,
const value_t r 
)
inlinestatic

Whether l equals r.

Definition at line 285 of file tupleset.hh.

◆ equal_()

template<typename... ValueSets>
template<std::size_t... I>
static bool vcsn::detail::tupleset_impl< ValueSets >::equal_ ( const value_t l,
const value_t r,
seq< I... >   
)
inlinestaticprivate

Definition at line 765 of file tupleset.hh.

◆ generators()

template<typename... ValueSets>
auto vcsn::detail::tupleset_impl< ValueSets >::generators ( ) const
inline

The generators. Meaningful for labelsets only.

Definition at line 253 of file tupleset.hh.

◆ genset()

template<typename... ValueSets>
genset_ptr vcsn::detail::tupleset_impl< ValueSets >::genset ( ) const
inline

Definition at line 239 of file tupleset.hh.

◆ genset_()

template<typename... ValueSets>
template<std::size_t... I>
genset_ptr vcsn::detail::tupleset_impl< ValueSets >::genset_ ( seq< I... >  ) const
inlineprivate

Definition at line 737 of file tupleset.hh.

◆ get_letter()

template<typename... ValueSets>
template<std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::get_letter ( std::istream &  i,
bool  quoted = true 
) const -> decltype(this->get_letter_(i, quoted, indices))
inline

Definition at line 1197 of file tupleset.hh.

References vcsn::eat(), and vcsn::res.

Here is the call graph for this function:

◆ get_letter_()

template<typename... ValueSets>
template<std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::get_letter_ ( std::istream &  i,
bool  quoted,
seq< I... >   
) const -> letter_t
inlineprivate

Must be declared before, as we use its result in decltype.

Definition at line 1157 of file tupleset.hh.

References vcsn::detail::make_gcc_tuple().

Here is the call graph for this function:

◆ has_lightening_weights()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::has_lightening_weights ( )
inlinestatic

Definition at line 334 of file tupleset.hh.

◆ has_lightening_weights_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::has_lightening_weights_ ( seq< I... >  )
inlinestaticprivate

Definition at line 848 of file tupleset.hh.

◆ has_one()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::has_one ( )
inlinestatic

Definition at line 340 of file tupleset.hh.

◆ has_one_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::has_one_ ( seq< I... >  )
inlinestaticprivate

Definition at line 855 of file tupleset.hh.

◆ hash()

template<typename... ValueSets>
static size_t vcsn::detail::tupleset_impl< ValueSets >::hash ( const value_t v)
inlinestatic

Definition at line 557 of file tupleset.hh.

◆ hash_()

template<typename... ValueSets>
template<std::size_t... I>
static std::size_t vcsn::detail::tupleset_impl< ValueSets >::hash_ ( const value_t v,
seq< I... >   
)
inlinestaticprivate

Definition at line 792 of file tupleset.hh.

References vcsn::hash_combine(), and vcsn::res.

Here is the call graph for this function:

◆ is_commutative()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_commutative ( )
inlinestatic

Definition at line 140 of file tupleset.hh.

◆ is_commutative_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_commutative_ ( seq< I... >  )
inlinestaticprivate

Definition at line 660 of file tupleset.hh.

◆ is_expressionset()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_expressionset ( )
inlinestatic

Definition at line 346 of file tupleset.hh.

◆ is_expressionset_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_expressionset_ ( seq< I... >  )
inlinestaticprivate

Definition at line 862 of file tupleset.hh.

◆ is_free()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_free ( )
inlinestatic

Definition at line 261 of file tupleset.hh.

◆ is_free_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_free_ ( seq< I... >  )
inlinestaticprivate

Definition at line 751 of file tupleset.hh.

◆ is_idempotent()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_idempotent ( )
inlinestatic

Definition at line 146 of file tupleset.hh.

◆ is_idempotent_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_idempotent_ ( seq< I... >  )
inlinestaticprivate

Definition at line 667 of file tupleset.hh.

◆ is_letter()

template<typename... ValueSets>
bool vcsn::detail::tupleset_impl< ValueSets >::is_letter ( const value_t ) const
inline

Definition at line 389 of file tupleset.hh.

◆ is_letterized()

template<typename... ValueSets>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_letterized ( )
inlinestatic

Definition at line 352 of file tupleset.hh.

◆ is_letterized_()

template<typename... ValueSets>
template<std::size_t... I>
static constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_letterized_ ( seq< I... >  )
inlinestaticprivate

Definition at line 869 of file tupleset.hh.

References vcsn::detail::is_letterized().

Here is the call graph for this function:

◆ is_one()

template<typename... ValueSets>
static bool vcsn::detail::tupleset_impl< ValueSets >::is_one ( const value_t l)
inlinestatic

Definition at line 377 of file tupleset.hh.

◆ is_one_()

template<typename... ValueSets>
template<std::size_t... I>
static bool vcsn::detail::tupleset_impl< ValueSets >::is_one_ ( const value_t l,
seq< I... >   
)
inlinestaticprivate

Definition at line 876 of file tupleset.hh.

◆ is_special()

template<typename... ValueSets>
static bool vcsn::detail::tupleset_impl< ValueSets >::is_special ( const value_t l)
inlinestatic

Definition at line 322 of file tupleset.hh.

◆ is_special_()

template<typename... ValueSets>
template<std::size_t... I>
static bool vcsn::detail::tupleset_impl< ValueSets >::is_special_ ( const value_t l,
seq< I... >   
)
inlinestaticprivate

Definition at line 809 of file tupleset.hh.

References vcsn::detail::is_special().

Here is the call graph for this function:

◆ is_valid()

template<typename... ValueSets>
bool vcsn::detail::tupleset_impl< ValueSets >::is_valid ( const value_t l) const
inline

Definition at line 396 of file tupleset.hh.

◆ is_valid_()

template<typename... ValueSets>
template<std::size_t... I>
bool vcsn::detail::tupleset_impl< ValueSets >::is_valid_ ( const value_t l,
seq< I... >   
) const
inlineprivate

Definition at line 896 of file tupleset.hh.

References vcsn::is_valid().

Here is the call graph for this function:

◆ is_zero()

template<typename... ValueSets>
bool vcsn::detail::tupleset_impl< ValueSets >::is_zero ( const value_t l) const
inline

Definition at line 328 of file tupleset.hh.

◆ is_zero_()

template<typename... ValueSets>
template<std::size_t... I>
bool vcsn::detail::tupleset_impl< ValueSets >::is_zero_ ( const value_t l,
seq< I... >   
) const
inlineprivate

Definition at line 838 of file tupleset.hh.

◆ ldivide()

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::ldivide ( const value_t l,
const value_t r 
) const
inline

Pointwise left division (l \ r).

Definition at line 470 of file tupleset.hh.

◆ less()

template<typename... ValueSets>
template<typename LhsValue , typename RhsValue >
static auto vcsn::detail::tupleset_impl< ValueSets >::less ( const LhsValue &  l,
const RhsValue &  r 
) -> bool
inlinestatic

Whether l < r.

Definition at line 302 of file tupleset.hh.

References vcsn::rat::size().

Here is the call graph for this function:

◆ less_()

template<typename... ValueSets>
template<typename LhsValue , typename RhsValue , std::size_t... I>
static auto vcsn::detail::tupleset_impl< ValueSets >::less_ ( const LhsValue &  l,
const RhsValue &  r,
seq< I... >   
) -> bool
inlinestaticprivate

Definition at line 776 of file tupleset.hh.

◆ letters_of()

template<typename... ValueSets>
template<typename Value >
static auto vcsn::detail::tupleset_impl< ValueSets >::letters_of ( const Value &  v) -> decltype(letters_of_(v, indices))
inlinestatic

Iterate over the letters of v.

Templated by Value so that we work for both word_t and label_t. Besides, avoids the problem of instantiation with weightsets that do not provide a word_t type.

Definition at line 1216 of file tupleset.hh.

References vcsn::detail::v.

◆ letters_of_()

template<typename... ValueSets>
template<typename Value , std::size_t... I>
static auto vcsn::detail::tupleset_impl< ValueSets >::letters_of_ ( const Value &  v,
seq< I... >   
) -> decltype(zip(valueset_t<I>::letters_of(std::get<I>(v))...))
inlinestaticprivate

Must be declared before, as we use its result in decltype.

Definition at line 1174 of file tupleset.hh.

References vcsn::detail::v, and vcsn::zip().

Here is the call graph for this function:

◆ letters_of_padded()

template<typename... ValueSets>
template<typename Value , typename... Defaults>
auto vcsn::detail::tupleset_impl< ValueSets >::letters_of_padded ( const Value &  v,
const std::tuple< Defaults... > &  def 
) const -> decltype(this->letters_of_padded_(v, def, indices))
inline

Iterate over the letters of v.

When the tapes are not the same length, instead of stopping when the shortest tape is consumed, continue until the end of every tape, padding with the default values provided.

Definition at line 1229 of file tupleset.hh.

References vcsn::detail::v.

◆ letters_of_padded_()

template<typename... ValueSets>
template<typename Value , typename... Defaults, std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::letters_of_padded_ ( const Value &  v,
const std::tuple< Defaults... > &  def,
seq< I... >   
) const -> decltype(zip_with_padding(def, this->set<I>().letters_of_padded(std::get<I>(v), std::get<I>(def))...))
inlineprivate

Must be declared before, as we use its result in decltype.

Definition at line 1183 of file tupleset.hh.

References vcsn::detail::v, and vcsn::zip_with_padding().

Here is the call graph for this function:

◆ lgcd()

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::lgcd ( const value_t l,
const value_t r 
) const
inline

Pointwise left GCD.

Definition at line 426 of file tupleset.hh.

◆ lnormalize_here()

template<typename... ValueSets>
valueset_t<0>::value_t vcsn::detail::tupleset_impl< ValueSets >::lnormalize_here ( value_t v) const
inline

Eliminate the LGCD between all the tapes.

E.g., (abc, abd) =>(c, d)`.

This tupleset must be homegeneous.

Definition at line 506 of file tupleset.hh.

◆ lnormalize_here_()

template<typename... ValueSets>
template<std::size_t... I>
valueset_t<0>::value_t vcsn::detail::tupleset_impl< ValueSets >::lnormalize_here_ ( value_t vs,
seq< I... >   
) const
inlineprivate

Definition at line 952 of file tupleset.hh.

References vcsn::lgcd(), vcsn::res, vcsn::detail::v, and vcsn::detail::void.

Here is the call graph for this function:

◆ make()

template<typename... ValueSets>
static self_t vcsn::detail::tupleset_impl< ValueSets >::make ( std::istream &  is)
inlinestatic

Build from the description in is.

Definition at line 152 of file tupleset.hh.

References vcsn::eat(), and vcsn::res.

Here is the call graph for this function:

◆ make_()

template<typename... ValueSets>
template<std::size_t... I>
static self_t vcsn::detail::tupleset_impl< ValueSets >::make_ ( std::istream &  i,
seq< I... >   
)
inlinestaticprivate

Definition at line 673 of file tupleset.hh.

References vcsn::detail::make_gcc_tuple().

Here is the call graph for this function:

◆ map()

template<typename... ValueSets>
template<typename Fun >
auto vcsn::detail::tupleset_impl< ValueSets >::map ( Fun &&  fun) const
inline

Run a function per set, and return the tuple of results.

Definition at line 278 of file tupleset.hh.

References vcsn::detail::map_impl_().

Here is the call graph for this function:

◆ map_() [1/2]

template<typename... ValueSets>
template<typename Fun >
value_t vcsn::detail::tupleset_impl< ValueSets >::map_ ( const value_t v,
Fun &&  fun 
) const
inlineprivate

Apply a unary function pointwise, and return the tuple of results.

Definition at line 915 of file tupleset.hh.

References vcsn::detail::map_impl_().

Here is the call graph for this function:

◆ map_() [2/2]

template<typename... ValueSets>
template<typename Fun >
value_t vcsn::detail::tupleset_impl< ValueSets >::map_ ( const value_t l,
const value_t r,
Fun &&  fun 
) const
inlineprivate

Apply a binary function pointwise, and return the tuple of results.

Definition at line 930 of file tupleset.hh.

References vcsn::detail::map_impl_().

Here is the call graph for this function:

◆ map_impl_() [1/3]

template<typename... ValueSets>
template<typename Fun , std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::map_impl_ ( Fun &&  fun,
seq< I... >   
) const
inlineprivate

Run a nullary function pointwise, and return the tuple of results.

Definition at line 907 of file tupleset.hh.

◆ map_impl_() [2/3]

template<typename... ValueSets>
template<typename Fun , std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::map_impl_ ( const value_t v,
Fun &&  fun,
seq< I... >   
) const
inlineprivate

Definition at line 922 of file tupleset.hh.

◆ map_impl_() [3/3]

template<typename... ValueSets>
template<typename Fun , std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::map_impl_ ( const value_t l,
const value_t r,
Fun &&  fun,
seq< I... >   
) const
inlineprivate

Definition at line 937 of file tupleset.hh.

◆ maybe_ldivide()

template<typename... ValueSets>
boost::optional<value_t> vcsn::detail::tupleset_impl< ValueSets >::maybe_ldivide ( const value_t l,
const value_t r 
) const
inline

Definition at line 480 of file tupleset.hh.

References vcsn::res.

◆ maybe_rdivide()

template<typename... ValueSets>
boost::optional<value_t> vcsn::detail::tupleset_impl< ValueSets >::maybe_rdivide ( const value_t l,
const value_t r 
) const
inline

Definition at line 447 of file tupleset.hh.

References vcsn::res.

◆ meet_()

template<typename... ValueSets>
template<std::size_t... I>
self_t vcsn::detail::tupleset_impl< ValueSets >::meet_ ( const self_t rhs,
seq< I... >   
) const
inlineprivate

The intersection with another tupleset.

Definition at line 1119 of file tupleset.hh.

References vcsn::meet().

Here is the call graph for this function:

◆ mul()

template<typename... ValueSets>
template<typename LhsValue , typename RhsValue >
auto vcsn::detail::tupleset_impl< ValueSets >::mul ( const LhsValue &  l,
const RhsValue &  r 
) const -> word_t
inline

The product (possibly concatenation) of l and r.

Templated in order to work with tuples of letters and/or words in the case of labelsets.

Definition at line 418 of file tupleset.hh.

◆ mul_()

template<typename... ValueSets>
template<typename LhsValue , typename RhsValue , std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::mul_ ( const LhsValue &  l,
const RhsValue &  r,
seq< I... >   
) const -> word_t
inlineprivate

Definition at line 944 of file tupleset.hh.

◆ one()

template<typename... ValueSets>
template<typename Indices = indices_t>
static auto vcsn::detail::tupleset_impl< ValueSets >::one ( ) -> decltype(one_(Indices
inlinestatic

A tuple of ones.

Template + decltype so that this is not defined when not all the valuesets support one().

Definition at line 371 of file tupleset.hh.

◆ one_()

template<typename... ValueSets>
template<std::size_t... I>
static auto vcsn::detail::tupleset_impl< ValueSets >::one_ ( seq< I... >  ) -> decltype(value_t
inlinestaticprivate

Definition at line 359 of file tupleset.hh.

◆ open()

template<typename... ValueSets>
bool vcsn::detail::tupleset_impl< ValueSets >::open ( bool  o) const
inline

Whether unknown letters should be added, or rejected.

Parameters
owhether to accept
Returns
the previous status.

Definition at line 198 of file tupleset.hh.

◆ open_()

template<typename... ValueSets>
template<std::size_t... I>
bool vcsn::detail::tupleset_impl< ValueSets >::open_ ( bool  o,
seq< I... >   
) const
inlineprivate

Definition at line 686 of file tupleset.hh.

References vcsn::detail::swap(), and vcsn::detail::void.

Here is the call graph for this function:

◆ partial_identity_()

template<typename... ValueSets>
template<typename VS , std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::partial_identity_ ( const VS &  vs,
const typename VS::value_t &  v,
seq< I... >   
) const
inlineprivate

Definition at line 987 of file tupleset.hh.

References vcsn::conv().

Here is the call graph for this function:

◆ pregenerators()

template<typename... ValueSets>
auto vcsn::detail::tupleset_impl< ValueSets >::pregenerators ( ) const
inline

The pregenerators. Meaningful for labelsets only.

Definition at line 246 of file tupleset.hh.

◆ pregenerators_()

template<typename... ValueSets>
template<std::size_t... I>
auto vcsn::detail::tupleset_impl< ValueSets >::pregenerators_ ( seq< I... >  ) const
inlineprivate

Definition at line 744 of file tupleset.hh.

References vcsn::cross().

Here is the call graph for this function:

◆ print()

template<typename... ValueSets>
std::ostream& vcsn::detail::tupleset_impl< ValueSets >::print ( const value_t l,
std::ostream &  o = std::cout,
format  fmt = {} 
) const
inline

Definition at line 629 of file tupleset.hh.

References vcsn::detail::print_().

Here is the call graph for this function:

◆ print_()

template<typename... ValueSets>
template<std::size_t... I>
std::ostream& vcsn::detail::tupleset_impl< ValueSets >::print_ ( const value_t l,
std::ostream &  o,
format  fmt,
const char pre,
const char sep,
const char post,
seq< I... >   
) const
inlineprivate

Definition at line 1050 of file tupleset.hh.

References vcsn::detail::is_special(), and vcsn::detail::void.

Here is the call graph for this function:

◆ print_set()

template<typename... ValueSets>
std::ostream& vcsn::detail::tupleset_impl< ValueSets >::print_set ( std::ostream &  o,
format  fmt = {} 
) const
inline

Definition at line 623 of file tupleset.hh.

◆ print_set_()

template<typename... ValueSets>
template<std::size_t... I>
std::ostream& vcsn::detail::tupleset_impl< ValueSets >::print_set_ ( std::ostream &  o,
format  fmt,
seq< I... >   
) const
inlineprivate

Definition at line 1073 of file tupleset.hh.

References vcsn::format::kind(), vcsn::format::latex, vcsn::format::raw, vcsn::format::sname, vcsn::format::text, vcsn::format::utf8, and vcsn::detail::void.

Here is the call graph for this function:

◆ project() [1/2]

template<typename... ValueSets>
template<size_t I>
const valueset_t<I>& vcsn::detail::tupleset_impl< ValueSets >::project ( ) const
inline

The Ith component valueset.

Alias for set<I>.

Definition at line 183 of file tupleset.hh.

◆ project() [2/2]

template<typename... ValueSets>
template<size_t I>
auto vcsn::detail::tupleset_impl< ValueSets >::project ( const value_t v) const
inline

The I-th component of the value.

Definition at line 190 of file tupleset.hh.

References vcsn::detail::v.

◆ rdivide()

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::rdivide ( const value_t l,
const value_t r 
) const
inline

Pointwise right division (l / r).

Definition at line 437 of file tupleset.hh.

◆ set()

template<typename... ValueSets>
template<size_t I>
const valueset_t<I>& vcsn::detail::tupleset_impl< ValueSets >::set ( ) const
inline

The Ith component valueset.

Definition at line 170 of file tupleset.hh.

◆ sets()

template<typename... ValueSets>
const valuesets_t& vcsn::detail::tupleset_impl< ValueSets >::sets ( ) const
inline

The componants valuesets, as a tuple.

Definition at line 163 of file tupleset.hh.

◆ show_one()

template<typename... ValueSets>
static bool vcsn::detail::tupleset_impl< ValueSets >::show_one ( )
inlinestatic

Definition at line 383 of file tupleset.hh.

◆ show_one_()

template<typename... ValueSets>
template<std::size_t... I>
static bool vcsn::detail::tupleset_impl< ValueSets >::show_one_ ( seq< I... >  )
inlinestaticprivate

Definition at line 886 of file tupleset.hh.

◆ size() [1/2]

template<typename... ValueSets>
static constexpr std::size_t vcsn::detail::tupleset_impl< ValueSets >::size ( )
inlinestatic

Number of tapes.

Definition at line 127 of file tupleset.hh.

◆ size() [2/2]

template<typename... ValueSets>
template<typename Value >
static size_t vcsn::detail::tupleset_impl< ValueSets >::size ( const Value &  v)
inlinestatic

Get the max of the sizes of the tapes.

Definition at line 134 of file tupleset.hh.

◆ size_() [1/3]

template<typename... ValueSets>
template<typename Value , std::size_t I>
static auto vcsn::detail::tupleset_impl< ValueSets >::size_ ( const Value &  v,
int   
) -> decltype(valueset_t<I>::size(std::get<I>(v)))
inlinestaticprivate

The size of the Ith element, if its valueset features a size() function.

Definition at line 697 of file tupleset.hh.

References vcsn::rat::size(), and vcsn::detail::v.

Here is the call graph for this function:

◆ size_() [2/3]

template<typename... ValueSets>
template<typename Value , std::size_t I>
static constexpr auto vcsn::detail::tupleset_impl< ValueSets >::size_ ( const Value &  ,
  ... 
) -> size_t
inlinestaticprivate

The size of the Ith element, if its valueset does not feature a size() function.

Definition at line 706 of file tupleset.hh.

◆ size_() [3/3]

template<typename... ValueSets>
template<typename Value , std::size_t... I>
static size_t vcsn::detail::tupleset_impl< ValueSets >::size_ ( const Value &  v,
seq< I... >   
)
inlinestaticprivate

Definition at line 713 of file tupleset.hh.

References vcsn::detail::v.

◆ sname()

template<typename... ValueSets>
static symbol vcsn::detail::tupleset_impl< ValueSets >::sname ( )
inlinestatic

Definition at line 120 of file tupleset.hh.

References vcsn::res.

◆ sname_()

template<typename... ValueSets>
template<std::size_t... I>
static std::string vcsn::detail::tupleset_impl< ValueSets >::sname_ ( seq< I... >  )
inlinestaticprivate

Definition at line 644 of file tupleset.hh.

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

Here is the call graph for this function:

◆ special()

template<typename... ValueSets>
static value_t vcsn::detail::tupleset_impl< ValueSets >::special ( )
inlinestatic

Definition at line 316 of file tupleset.hh.

◆ special_()

template<typename... ValueSets>
template<std::size_t... I>
static value_t vcsn::detail::tupleset_impl< ValueSets >::special_ ( seq< I... >  )
inlinestaticprivate

Definition at line 802 of file tupleset.hh.

◆ star()

template<typename... ValueSets>
value_t vcsn::detail::tupleset_impl< ValueSets >::star ( const value_t v) const
inline

Pointwise star.

Definition at line 513 of file tupleset.hh.

◆ star_status()

template<typename... ValueSets>
static constexpr star_status_t vcsn::detail::tupleset_impl< ValueSets >::star_status ( )
inlinestatic

Definition at line 543 of file tupleset.hh.

References vcsn::STARRABLE.

◆ transpose()

template<typename... ValueSets>
template<typename Value >
Value vcsn::detail::tupleset_impl< ValueSets >::transpose ( const Value &  l) const
inline

Transpose a word_t or a value_t.

Definition at line 551 of file tupleset.hh.

◆ transpose_()

template<typename... ValueSets>
template<typename Value , std::size_t... I>
Value vcsn::detail::tupleset_impl< ValueSets >::transpose_ ( const Value &  l,
seq< I... >   
) const
inlineprivate

Definition at line 1111 of file tupleset.hh.

References vcsn::transpose().

Here is the call graph for this function:

◆ tuple()

template<typename... ValueSets>
template<typename... Args>
value_t vcsn::detail::tupleset_impl< ValueSets >::tuple ( Args &&...  args) const
inline

Construct a value.

Definition at line 212 of file tupleset.hh.

◆ undelimit()

template<typename... ValueSets>
template<typename Value >
Value vcsn::detail::tupleset_impl< ValueSets >::undelimit ( const Value &  l) const
inline

Remove first and last characters, that must be "special".

Definition at line 537 of file tupleset.hh.

◆ undelimit_()

template<typename... ValueSets>
template<typename Value , std::size_t... I>
Value vcsn::detail::tupleset_impl< ValueSets >::undelimit_ ( const Value &  l,
seq< I... >   
) const
inlineprivate

Definition at line 971 of file tupleset.hh.

◆ value()

template<typename... ValueSets>
template<typename... Args>
value_t vcsn::detail::tupleset_impl< ValueSets >::value ( const std::tuple< Args... > &  args) const
inline

Construct a value.

Definition at line 205 of file tupleset.hh.

◆ value_()

template<typename... ValueSets>
template<typename... Args, std::size_t... I>
value_t vcsn::detail::tupleset_impl< ValueSets >::value_ ( const std::tuple< Args... > &  args,
seq< I... >   
) const
inlineprivate

Definition at line 719 of file tupleset.hh.

◆ word()

template<typename... ValueSets>
template<typename... Args>
auto vcsn::detail::tupleset_impl< ValueSets >::word ( const std::tuple< Args... > &  v) const -> word_t
inline

Convert to a word.

Definition at line 269 of file tupleset.hh.

References vcsn::detail::v.

◆ word_()

template<typename... ValueSets>
template<typename... Args, std::size_t... I>
word_t vcsn::detail::tupleset_impl< ValueSets >::word_ ( const std::tuple< Args... > &  l,
seq< I... >   
) const
inlineprivate

Definition at line 758 of file tupleset.hh.

◆ zero()

template<typename... ValueSets>
template<typename Indices = indices_t>
static auto vcsn::detail::tupleset_impl< ValueSets >::zero ( ) -> decltype(zero_(Indices
inlinestatic

A tuple of zeros.

Template + decltype so that this is not defined when not all the valuesets support zero().

Definition at line 830 of file tupleset.hh.

◆ zero_()

template<typename... ValueSets>
template<std::size_t... I>
static auto vcsn::detail::tupleset_impl< ValueSets >::zero_ ( seq< I... >  ) -> decltype(value_t
inlinestaticprivate

Definition at line 818 of file tupleset.hh.

Friends And Related Function Documentation

◆ meet [1/3]

template<typename... ValueSets>
self_t meet ( const self_t lhs,
const self_t rhs 
)
friend

The meet with another tupleset.

Definition at line 1127 of file tupleset.hh.

◆ meet [2/3]

template<typename... ValueSets>
self_t meet ( const self_t lhs,
const b  
)
friend

The meet with the B weightset.

Definition at line 1135 of file tupleset.hh.

◆ meet [3/3]

template<typename... ValueSets>
self_t meet ( const b ,
const self_t rhs 
)
friend

The meet with the B weightset.

Definition at line 1143 of file tupleset.hh.

Member Data Documentation

◆ in

template<typename... ValueSets>
constexpr auto vcsn::detail::tupleset_impl< ValueSets >::in = 0

Definition at line 231 of file tupleset.hh.

◆ indices

template<typename... ValueSets>
constexpr indices_t vcsn::detail::tupleset_impl< ValueSets >::indices {}
static

Definition at line 76 of file tupleset.hh.

◆ is_labelset

template<typename... ValueSets>
constexpr bool vcsn::detail::tupleset_impl< ValueSets >::is_labelset = labelset_types<ValueSets...>::is_labelset
static

Whether this models a labelset.

Definition at line 102 of file tupleset.hh.

◆ open__

template<typename... ValueSets>
bool vcsn::detail::tupleset_impl< ValueSets >::open__ = false
mutableprivate

Whether this valueset is open.

Definition at line 1151 of file tupleset.hh.

◆ sets_

template<typename... ValueSets>
valuesets_t vcsn::detail::tupleset_impl< ValueSets >::sets_
private

The tupled valuesets.

Definition at line 1149 of file tupleset.hh.

◆ value_t

template<typename... ValueSets>
vcsn::detail::tupleset_impl< ValueSets >::value_t
Initial value:
{
constexpr auto out = tupleset<LS1...>::size() - 1

Definition at line 227 of file tupleset.hh.


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