![]() |
Vcsn
2.8
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 | 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 (std::initializer_list< letter_t > letters) | |
bool | open (bool o) const |
Whether unknown letters should be added, or rejected. More... | |
auto | generators () const |
auto | pregenerators () const |
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 | lgcd (const value_t l, const value_t r) const |
The longest common prefix. More... | |
value_t | ldivide (const value_t l, const value_t r) const |
Compute w1 \ w2 = w1^{-1}w2. More... | |
boost::optional< value_t > | maybe_ldivide (const value_t l, const value_t r) const |
value_t | rdivide (const value_t l, const value_t r) const |
Compute w1 / w2. More... | |
boost::optional< value_t > | maybe_rdivide (const value_t l, const value_t r) const |
value_t | conjunction (const value_t l, const value_t r) const |
std::ostream & | print (const value_t &l, std::ostream &o=std::cout, 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={}) | |
genset_ptr | genset () 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> | |
ATTRIBUTE_PURE auto | compare (Args &&... args) const -> decltype(this->genset() -> compare(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 | generators (Args &&... args) const -> decltype(this->genset() -> generators(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> | |
auto | pregenerators (Args &&... args) const -> decltype(this->genset() -> pregenerators(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 int | compare (const value_t l, const value_t r) |
Three-way comparison between l and r. More... | |
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 symbol | sname () |
Implementation of labels are letters.
using vcsn::letterset< GenSet >::genset_ptr = std::shared_ptr<const genset_t> |
Definition at line 28 of file letterset.hh.
using vcsn::letterset< GenSet >::genset_t = GenSet |
Definition at line 25 of file letterset.hh.
using vcsn::letterset< GenSet >::kind_t = labels_are_letters |
Definition at line 36 of file letterset.hh.
using vcsn::letterset< GenSet >::letter_t = typename genset_t::letter_t |
Definition at line 30 of file letterset.hh.
using vcsn::letterset< GenSet >::self_t = letterset |
Definition at line 27 of file letterset.hh.
using vcsn::letterset< GenSet >::super_t = detail::genset_labelset<genset_t> |
Definition at line 26 of file letterset.hh.
using vcsn::letterset< GenSet >::value_t = letter_t |
Definition at line 33 of file letterset.hh.
using vcsn::letterset< GenSet >::values_t = std::set<value_t, vcsn::less<self_t> > |
Definition at line 34 of file letterset.hh.
using vcsn::letterset< GenSet >::word_t = typename genset_t::word_t |
Definition at line 31 of file letterset.hh.
|
inline |
Definition at line 38 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::letterset().
|
inline |
Definition at line 42 of file letterset.hh.
References vcsn::letterset< GenSet >::letterset().
|
inline |
Definition at line 46 of file letterset.hh.
|
inlinestatic |
Three-way comparison between l and r.
Definition at line 142 of file letterset.hh.
References vcsn::compare().
|
inline |
Definition at line 307 of file letterset.hh.
References vcsn::letterset< GenSet >::equal(), and vcsn::to_string().
|
inline |
Definition at line 207 of file letterset.hh.
References vcsn::letterset< GenSet >::is_special(), vcsn::letterset< GenSet >::is_valid(), vcsn::str_escape(), vcsn::v, and VCSN_REQUIRE.
Referenced by vcsn::letterset< GenSet >::conv().
|
inline |
Convert from nullableset to letterset.
Definition at line 217 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 227 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::get_letter(), and vcsn::require().
|
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 251 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::convs_().
|
inlinestatic |
Whether l == r.
Definition at line 149 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::conjunction().
|
inline |
Definition at line 81 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::generators().
Referenced by vcsn::detail::nullable_helper< letterset< GenSet > >::generators().
|
inlinestatic |
Definition at line 161 of file letterset.hh.
|
inlinestatic |
Definition at line 201 of file letterset.hh.
References vcsn::detail::hash_value().
|
inlinestatic |
Definition at line 167 of file letterset.hh.
|
inlinestatic |
Definition at line 76 of file letterset.hh.
|
inlinestatic |
Definition at line 173 of file letterset.hh.
|
inlinestatic |
Definition at line 185 of file letterset.hh.
|
inlinestatic |
Definition at line 179 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 191 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::has().
Referenced by vcsn::letterset< GenSet >::conv().
|
inline |
Compute w1 \ w2 = w1^{-1}w2.
Definition at line 279 of file letterset.hh.
References vcsn::to_string().
|
inlinestatic |
Whether l < r.
Definition at line 155 of file letterset.hh.
|
inlinestatic |
Prepare to iterate over the letters of v.
Definition at line 106 of file letterset.hh.
References vcsn::v.
|
inlinestatic |
Prepare to iterate over v.
Definition at line 121 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 114 of file letterset.hh.
References vcsn::v.
|
inlinestatic |
Prepare to iterate over v.
This is for the padded case
Definition at line 129 of file letterset.hh.
References vcsn::letterset< GenSet >::word().
|
inline |
The longest common prefix.
It would be better not to define it and to adjust tupleset::ldivide to be SNIFAE compliant, so that we get a compile time error instead of a runtime one when we try to using lgcd/ldivide on labelsets that don't support it. However, I feel it is not nice not to get tupleset::ldivide fail to compile without a clear explanation of why, and it is quite some work to write code that supports this possible missing ldivide/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 272 of file letterset.hh.
References vcsn::to_string().
|
inlinestatic |
Build from the description in is.
Definition at line 57 of file letterset.hh.
References vcsn::eat().
|
inline |
Definition at line 286 of file letterset.hh.
References vcsn::to_string().
|
inline |
Definition at line 300 of file letterset.hh.
References vcsn::to_string().
|
inline |
Whether unknown letters should be added, or rejected.
o | whether to accept |
Definition at line 71 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::genset().
|
inline |
Definition at line 86 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::generators().
|
inline |
Definition at line 318 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::genset().
|
inline |
Definition at line 325 of file letterset.hh.
References vcsn::detail::genset_labelset< GenSet >::genset(), vcsn::format::latex, and vcsn::format::sname.
|
inline |
Compute w1 / w2.
Definition at line 293 of file letterset.hh.
References vcsn::to_string().
|
inlinestatic |
Definition at line 196 of file letterset.hh.
|
inlinestatic |
Definition at line 50 of file letterset.hh.
References vcsn::res, and vcsn::detail::genset_labelset< GenSet >::sname().
|
inlinestatic |
Definition at line 136 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::is_special().
|
inline |
Value constructor.
Definition at line 93 of file letterset.hh.
Referenced by vcsn::detail::nullable_helper< letterset< GenSet > >::value().
|
inlinestatic |
Convert to a word.
Definition at line 99 of file letterset.hh.
Referenced by vcsn::letterset< GenSet >::letters_of(), and vcsn::letterset< GenSet >::letters_of_padded().