Vcsn
2.2
Be Rational
|
Implementation of labels are letters. More...
#include <fwd.hh>
Public Types | |
using | genset_t = GenSet |
using | super_t = detail::genset_labelset< genset_t > |
using | self_t = letterset |
using | genset_ptr = std::shared_ptr< const genset_t > |
using | letter_t = typename genset_t::letter_t |
using | word_t = typename genset_t::word_t |
using | letters_t = std::set< letter_t, vcsn::less< self_t, letter_t >> |
using | value_t = letter_t |
using | values_t = std::set< value_t, vcsn::less< self_t >> |
using | kind_t = labels_are_letters |
Public Types inherited from vcsn::detail::genset_labelset< GenSet > | |
using | genset_t = GenSet |
using | genset_ptr = std::shared_ptr< const genset_t > |
using | letter_t = typename genset_t::letter_t |
using | word_t = typename genset_t::word_t |
using | letters_t = typename genset_t::letters_t |
Public Member Functions | |
letterset (const genset_ptr &gs) | |
letterset (const genset_t &gs={}) | |
letterset (std::initializer_list< letter_t > letters) | |
bool | open (bool o) const |
Whether unknown letters should be added, or rejected. More... | |
template<typename... Args> | |
value_t | value (Args &&...args) const |
Value constructor. More... | |
bool | is_valid (value_t v) const |
value_t | conv (self_t, value_t v) const |
template<typename LabelSet_ > | |
value_t | conv (const nullableset< LabelSet_ > &ls, typename nullableset< LabelSet_ >::value_t v) const |
Convert from nullableset to letterset. More... | |
value_t | conv (std::istream &i, bool quoted=true) const |
Read one letter from i, return the corresponding label. More... | |
template<typename Fun > | |
void | convs (std::istream &i, Fun fun) const |
Process a label class. More... | |
value_t | conjunction (const value_t &l, const value_t &r) const |
std::ostream & | print (const value_t &l, std::ostream &o, format fmt={}) const |
std::ostream & | print_set (std::ostream &o, format fmt={}) const |
Public Member Functions inherited from vcsn::detail::genset_labelset< GenSet > | |
genset_labelset (const genset_ptr &gs) | |
genset_labelset (const genset_t &gs={}) | |
genset_ptr | genset () const |
const genset_t & | generators () const |
template<typename Fun > | |
void | convs_ (std::istream &i, Fun fun) const |
Read and process a class of letters. More... | |
letter_t | get_letter (std::istream &i, bool quoted=true) const |
Read one letter from i. More... | |
template<typename... Args> | |
auto | begin (Args &&...args) const -> decltype(this->genset() -> begin(std::forward< Args >(args)...)) |
template<typename... Args> | |
auto | delimit (Args &&...args) const -> decltype(this->genset() -> delimit(std::forward< Args >(args)...)) |
template<typename... Args> | |
auto | end (Args &&...args) const -> decltype(this->genset() -> end(std::forward< Args >(args)...)) |
template<typename... Args> | |
ATTRIBUTE_PURE auto | equal (Args &&...args) const -> decltype(this->genset() -> equal(std::forward< Args >(args)...)) |
template<typename... Args> | |
auto | get_word (Args &&...args) const -> decltype(this->genset() -> get_word(std::forward< Args >(args)...)) |
template<typename... Args> | |
ATTRIBUTE_PURE auto | has (Args &&...args) const -> decltype(this->genset() -> has(std::forward< Args >(args)...)) |
template<typename... Args> | |
ATTRIBUTE_PURE auto | is_letter (Args &&...args) const -> decltype(this->genset() -> is_letter(std::forward< Args >(args)...)) |
template<typename... Args> | |
ATTRIBUTE_PURE auto | less (Args &&...args) const -> decltype(this->genset() -> less(std::forward< Args >(args)...)) |
template<typename... Args> | |
auto | mul (Args &&...args) const -> decltype(this->genset() -> mul(std::forward< Args >(args)...)) |
template<typename... Args> | |
ATTRIBUTE_PURE auto | transpose (Args &&...args) const -> decltype(this->genset() -> transpose(std::forward< Args >(args)...)) |
template<typename... Args> | |
auto | undelimit (Args &&...args) const -> decltype(this->genset() -> undelimit(std::forward< Args >(args)...)) |
Static Public Member Functions | |
static symbol | sname () |
static letterset | make (std::istream &is) |
Build from the description in is. More... | |
static constexpr bool | is_free () |
static word_t | word (value_t v) |
Convert to a word. More... | |
static word_t | letters_of (word_t v) |
Prepare to iterate over the letters of v. More... | |
static word_t | letters_of_padded (word_t v, letter_t) |
Prepare to iterate over the letters of v. More... | |
static word_t | letters_of (letter_t v) |
Prepare to iterate over v. More... | |
static word_t | letters_of_padded (letter_t v, letter_t) |
Prepare to iterate over v. More... | |
static value_t | special () ATTRIBUTE_PURE |
static bool | equal (const value_t l, const value_t r) |
Whether l == r. More... | |
static bool | less (const value_t l, const value_t r) |
Whether l < r. More... | |
static constexpr bool | has_one () |
static constexpr bool | is_expressionset () |
static constexpr bool | is_letterized () |
static bool | is_special (value_t v) ATTRIBUTE_PURE |
static constexpr bool | is_one (value_t) |
static size_t | size (value_t) |
static size_t | hash (value_t v) |
static value_t | lgcd (value_t, value_t) |
The longest common prefix. More... | |
static value_t | ldiv (value_t, value_t) |
Compute w1 \ w2 = w1^{-1}w2. More... | |
Static Public Member Functions inherited from vcsn::detail::genset_labelset< GenSet > | |
static symbol | sname () |
Implementation of labels are letters.
using vcsn::letterset< GenSet >::genset_ptr = std::shared_ptr<const genset_t> |
Definition at line 26 of file letterset.hh.
using vcsn::letterset< GenSet >::genset_t = GenSet |
Definition at line 23 of file letterset.hh.
using vcsn::letterset< GenSet >::kind_t = labels_are_letters |
Definition at line 35 of file letterset.hh.
using vcsn::letterset< GenSet >::letter_t = typename genset_t::letter_t |
Definition at line 28 of file letterset.hh.
using vcsn::letterset< GenSet >::letters_t = std::set<letter_t, vcsn::less<self_t, letter_t>> |
Definition at line 30 of file letterset.hh.
using vcsn::letterset< GenSet >::self_t = letterset |
Definition at line 25 of file letterset.hh.
using vcsn::letterset< GenSet >::super_t = detail::genset_labelset<genset_t> |
Definition at line 24 of file letterset.hh.
using vcsn::letterset< GenSet >::value_t = letter_t |
Definition at line 32 of file letterset.hh.
using vcsn::letterset< GenSet >::values_t = std::set<value_t, vcsn::less<self_t>> |
Definition at line 33 of file letterset.hh.
using vcsn::letterset< GenSet >::word_t = typename genset_t::word_t |
Definition at line 29 of file letterset.hh.
|
inline |
Definition at line 37 of file letterset.hh.
|
inline |
Definition at line 41 of file letterset.hh.
|
inline |
Definition at line 45 of file letterset.hh.
|
inline |
Definition at line 257 of file letterset.hh.
References vcsn::letterset< GenSet >::equal().
|
inline |
Definition at line 190 of file letterset.hh.
References vcsn::letterset< GenSet >::is_special(), vcsn::letterset< GenSet >::is_valid(), vcsn::str_escape(), vcsn::detail::v, and VCSN_REQUIRE.
Referenced by vcsn::letterset< GenSet >::conv().
|
inline |
Convert from nullableset to letterset.
Definition at line 200 of file letterset.hh.
References vcsn::letterset< GenSet >::conv(), vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), vcsn::nullableset< LabelSet >::labelset(), and vcsn::require().
|
inline |
Read one letter from i, return the corresponding label.
Definition at line 210 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::get_letter().
|
inline |
Process a label class.
Stream i is right on a [
. Read up to the closing ]
, and process the labels.
For instance "[a-d0-9_]".
i | the input stream. |
fun | a (label_t) -> void function. |
Definition at line 225 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::convs_().
|
inlinestatic |
Whether l == r.
Definition at line 132 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::conjunction().
|
inlinestatic |
Definition at line 144 of file letterset.hh.
|
inlinestatic |
Definition at line 184 of file letterset.hh.
References vcsn::detail::hash_value().
|
inlinestatic |
Definition at line 150 of file letterset.hh.
|
inlinestatic |
Definition at line 75 of file letterset.hh.
|
inlinestatic |
Definition at line 156 of file letterset.hh.
|
inlinestatic |
Definition at line 168 of file letterset.hh.
|
inlinestatic |
Definition at line 162 of file letterset.hh.
References vcsn::letterset< GenSet >::special(), and vcsn::detail::v.
Referenced by vcsn::letterset< GenSet >::conv(), and vcsn::wordset< GenSet >::conv().
|
inline |
Definition at line 174 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::has().
Referenced by vcsn::letterset< GenSet >::conv().
|
inlinestatic |
Compute w1 \ w2 = w1^{-1}w2.
Definition at line 252 of file letterset.hh.
References vcsn::letterset< GenSet >::sname().
|
inlinestatic |
Whether l < r.
Definition at line 138 of file letterset.hh.
|
inlinestatic |
Prepare to iterate over the letters of v.
Definition at line 95 of file letterset.hh.
References vcsn::detail::v.
|
inlinestatic |
Prepare to iterate over v.
Definition at line 110 of file letterset.hh.
References vcsn::letterset< GenSet >::word().
|
inlinestatic |
Prepare to iterate over the letters of v.
This is for the padded case
Definition at line 103 of file letterset.hh.
References vcsn::detail::v.
|
inlinestatic |
Prepare to iterate over v.
This is for the padded case
Definition at line 118 of file letterset.hh.
References vcsn::letterset< GenSet >::word().
|
inlinestatic |
The longest common prefix.
It would be better not to define it and to adjust tupleset::ldiv to be SNIFAE compliant, so that we get a compile time error instead of a runtime one when we try to using lgcd/ldiv on labelsets that don't support it. However, I feel it is not nice not to get tupleset::ldiv fail to compile without a clear explanation of why, and it is quite some work to write code that supports this possible missing ldiv/lgcd (see the case of conjunction in expansionset, case of non free labelsets).
Since I'm not convinced that letterset is the right abstraction (I, Akim, now tend to think that we should only support nullableset<letterset>), let's not fight this fight now.
Definition at line 246 of file letterset.hh.
References vcsn::letterset< GenSet >::sname().
|
inlinestatic |
Build from the description in is.
Definition at line 56 of file letterset.hh.
References vcsn::eat().
|
inline |
Whether unknown letters should be added, or rejected.
o | whether to accept |
Definition at line 70 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::genset().
|
inline |
Definition at line 266 of file letterset.hh.
|
inline |
Definition at line 273 of file letterset.hh.
|
inlinestatic |
Definition at line 179 of file letterset.hh.
|
inlinestatic |
Definition at line 49 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::sname().
Referenced by vcsn::letterset< GenSet >::ldiv(), and vcsn::letterset< GenSet >::lgcd().
|
inlinestatic |
Definition at line 125 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::is_special().
|
inline |
Value constructor.
Definition at line 82 of file letterset.hh.
Referenced by vcsn::detail::nullable_helper< letterset< GenSet > >::value().
|
inlinestatic |
Convert to a word.
Definition at line 88 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::letters_of(), and vcsn::letterset< GenSet >::letters_of_padded().