![]() |
Vcsn
2.1
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 |
![]() | |
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 (const 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 |
Read a range of labels. More... | |
std::ostream & | print (const value_t &l, std::ostream &o, format fmt={}) const |
std::ostream & | print_set (std::ostream &o, format fmt={}) const |
![]() | |
genset_labelset (const genset_ptr &gs) | |
genset_labelset (const genset_t &gs={}) | |
const genset_t & | genset () const |
template<typename Fun > | |
void | convs_classes_ (std::istream &i, Fun fun) const |
Read and process a class of letters. More... | |
letters_t | convs_classes_ (std::istream &i) const |
Read a set of letters. More... | |
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 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 190 of file letterset.hh.
References vcsn::letterset< GenSet >::is_special(), vcsn::letterset< GenSet >::is_valid(), vcsn::require(), vcsn::str_escape(), and vcsn::v.
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 |
Read a range of labels.
Stream i is right on a '['. Read up to the closing ']', and return the list of the matching labels.
For instance "[a-d0-9_]".
Definition at line 222 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::convs_().
|
inlinestatic |
Whether l == r.
Definition at line 132 of file letterset.hh.
|
inlinestatic |
Definition at line 144 of file letterset.hh.
|
inlinestatic |
Definition at line 184 of file letterset.hh.
References vcsn::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::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 249 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::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::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 243 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 255 of file letterset.hh.
|
inline |
Definition at line 262 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().