Vcsn
2.1
Be Rational
|
Implementation of labels are nullables (letter or empty). More...
#include <fwd.hh>
Public Types | |
using | labelset_t = LabelSet |
using | labelset_ptr = std::shared_ptr< const labelset_t > |
using | self_t = nullableset |
using | helper_t = detail::nullable_helper< labelset_t > |
using | kind_t = labels_are_nullable |
using | value_t = typename helper_t::value_t |
using | letter_t = typename labelset_t::letter_t |
using | word_t = typename labelset_t::word_t |
Public Member Functions | |
nullableset (const labelset_ptr &ls) | |
nullableset (const labelset_t &ls={}) | |
bool | open (bool o) const |
Whether unknown letters should be added, or rejected. More... | |
bool | is_valid (value_t v) const |
auto | genset () const -> decltype(this->ls_->genset()) |
The generators. Meaningful for labelsets only. More... | |
value_t | conv (self_t, value_t v) const |
value_t | conv (oneset, typename oneset::value_t) const |
template<typename LabelSet_ > | |
value_t | conv (const LabelSet_ &ls, typename LabelSet_::value_t v) const |
Conversion from another type: first by the wrapped labelset, and then by our wrappers (in case the wrapped labelset does not support "one"). More... | |
const labelset_ptr | labelset () const |
template<typename... Args> | |
value_t | value (Args &&...args) const |
word_t | word (const value_t &l) const |
auto | letters_of_padded (const word_t &v, letter_t l) const -> decltype(ls_->letters_of_padded(v, l)) |
Prepare to iterate over the letters of v. More... | |
auto | letters_of_padded (value_t v, letter_t l) const -> decltype(this->letters_of_padded(this->word(v), l)) |
value_t | lgcd (const value_t &l, const value_t &r) const |
The longest common prefix. More... | |
value_t | ldiv (const value_t &l, const value_t &r) const |
Compute l \ r = l^{-1}r. More... | |
letter_t | get_letter (std::istream &i, bool quoted=true) const |
value_t | conv (std::istream &i, bool quoted=true) const |
Read a label from a stream. More... | |
template<typename Fun > | |
void | convs (std::istream &i, Fun fun) const |
std::ostream & | print (const value_t &l, std::ostream &o, format fmt={}) const |
Print label to stream. More... | |
value_t | zero () const |
bool | is_zero (const value_t &v) const |
bool | is_letter (const value_t &v) const |
template<typename Value > | |
Value | transpose (const Value &l) const |
Mirror label. More... | |
std::ostream & | print_set (std::ostream &o, format fmt={}) const |
Print labelset description. More... | |
Static Public Member Functions | |
static symbol | sname () |
static nullableset | make (std::istream &is) |
Build from the description in is. More... | |
static constexpr bool | has_one () |
static constexpr bool | is_expressionset () |
static constexpr bool | is_letterized () |
static constexpr bool | is_free () |
static ATTRIBUTE_PURE constexpr value_t | one () |
static ATTRIBUTE_PURE bool | is_one (value_t l) |
static auto | letters_of (const word_t &v) -> decltype(labelset_t::letters_of(v)) |
Prepare to iterate over the letters of v. 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 value_t | special () |
static bool | is_special (const value_t &v) |
static size_t | size (const value_t &v) |
static size_t | hash (const value_t &v) |
static labelset_t::value_t | get_value (const value_t &v) |
The (inner) value when it (the outer value) is not one. More... | |
Private Attributes | |
labelset_ptr | ls_ |
The wrapped LabelSet. More... | |
Implementation of labels are nullables (letter or empty).
using vcsn::nullableset< LabelSet >::helper_t = detail::nullable_helper<labelset_t> |
Definition at line 163 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::kind_t = labels_are_nullable |
Definition at line 164 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::labelset_ptr = std::shared_ptr<const labelset_t> |
Definition at line 161 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::labelset_t = LabelSet |
Definition at line 160 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::letter_t = typename labelset_t::letter_t |
Definition at line 167 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::self_t = nullableset |
Definition at line 162 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::value_t = typename helper_t::value_t |
Definition at line 166 of file nullableset.hh.
using vcsn::nullableset< LabelSet >::word_t = typename labelset_t::word_t |
Definition at line 168 of file nullableset.hh.
|
inline |
Definition at line 176 of file nullableset.hh.
|
inline |
Definition at line 180 of file nullableset.hh.
|
inline |
Definition at line 262 of file nullableset.hh.
References vcsn::v.
|
inline |
Definition at line 268 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::one().
|
inline |
Conversion from another type: first by the wrapped labelset, and then by our wrappers (in case the wrapped labelset does not support "one").
Definition at line 278 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::value().
|
inline |
Read a label from a stream.
Definition at line 405 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::value().
|
inline |
Definition at line 424 of file nullableset.hh.
|
inlinestatic |
Whether l == r.
Definition at line 329 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
Referenced by vcsn::nullableset< LabelSet >::ldiv(), and vcsn::nullableset< LabelSet >::lgcd().
|
inline |
The generators. Meaningful for labelsets only.
Definition at line 255 of file nullableset.hh.
|
inline |
Definition at line 398 of file nullableset.hh.
|
inlinestatic |
The (inner) value when it (the outer value) is not one.
Definition at line 495 of file nullableset.hh.
Referenced by vcsn::letterset< GenSet >::conv(), vcsn::wordset< GenSet >::conv(), vcsn::nullableset< LabelSet >::equal(), vcsn::nullableset< LabelSet >::hash(), vcsn::nullableset< LabelSet >::is_letter(), vcsn::nullableset< LabelSet >::is_special(), vcsn::nullableset< LabelSet >::is_valid(), vcsn::nullableset< LabelSet >::is_zero(), vcsn::nullableset< LabelSet >::ldiv(), vcsn::nullableset< LabelSet >::less(), vcsn::nullableset< LabelSet >::lgcd(), vcsn::nullableset< LabelSet >::size(), and vcsn::nullableset< LabelSet >::word().
|
inlinestatic |
Definition at line 211 of file nullableset.hh.
|
inlinestatic |
Definition at line 391 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inlinestatic |
Definition at line 217 of file nullableset.hh.
|
inlinestatic |
Definition at line 228 of file nullableset.hh.
|
inline |
Definition at line 454 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inlinestatic |
Definition at line 223 of file nullableset.hh.
References vcsn::detail::is_letterized().
|
inlinestatic |
Definition at line 242 of file nullableset.hh.
References vcsn::detail::nullable_helper< LabelSet >::is_one().
Referenced by vcsn::letterset< GenSet >::conv(), vcsn::wordset< GenSet >::conv(), vcsn::nullableset< LabelSet >::equal(), vcsn::nullableset< LabelSet >::hash(), vcsn::nullableset< LabelSet >::is_letter(), vcsn::nullableset< LabelSet >::is_special(), vcsn::nullableset< LabelSet >::is_valid(), vcsn::nullableset< LabelSet >::is_zero(), vcsn::nullableset< LabelSet >::ldiv(), vcsn::nullableset< LabelSet >::less(), vcsn::nullableset< LabelSet >::lgcd(), vcsn::nullableset< LabelSet >::size(), and vcsn::nullableset< LabelSet >::word().
|
inlinestatic |
Definition at line 380 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inline |
Definition at line 248 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inline |
Definition at line 448 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inline |
Definition at line 283 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::ls_.
Referenced by vcsn::letterset< GenSet >::conv(), vcsn::wordset< GenSet >::conv(), vcsn::random_label(), and vcsn::nullableset< LabelSet >::word().
|
inline |
Compute l \ r = l^{-1}r.
Definition at line 360 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::equal(), vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), vcsn::nullableset< LabelSet >::one(), vcsn::to_string(), and vcsn::nullableset< LabelSet >::value().
|
inlinestatic |
Whether l < r.
Definition at line 338 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().
|
inlinestatic |
Prepare to iterate over the letters of v.
Definition at line 306 of file nullableset.hh.
References vcsn::v.
|
inline |
Prepare to iterate over the letters of v.
This is for the padded case
Definition at line 315 of file nullableset.hh.
References vcsn::v.
Referenced by vcsn::nullableset< LabelSet >::letters_of_padded().
|
inline |
Definition at line 322 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::letters_of_padded(), vcsn::v, and vcsn::nullableset< LabelSet >::word().
|
inline |
The longest common prefix.
Definition at line 349 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::equal(), vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), vcsn::nullableset< LabelSet >::one(), and vcsn::nullableset< LabelSet >::value().
|
inlinestatic |
Build from the description in is.
Definition at line 191 of file nullableset.hh.
References vcsn::eat().
|
inlinestatic |
Definition at line 235 of file nullableset.hh.
References vcsn::detail::nullable_helper< LabelSet >::one().
Referenced by vcsn::nullableset< LabelSet >::conv(), vcsn::nullableset< LabelSet >::ldiv(), vcsn::nullableset< LabelSet >::lgcd(), and vcsn::random_label().
|
inline |
Whether unknown letters should be added, or rejected.
o | whether to accept unknown letters |
Definition at line 205 of file nullableset.hh.
|
inline |
Print label to stream.
Definition at line 431 of file nullableset.hh.
|
inline |
Print labelset description.
Definition at line 469 of file nullableset.hh.
|
inlinestatic |
Definition at line 385 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), and vcsn::rat::size().
|
inlinestatic |
Definition at line 184 of file nullableset.hh.
References vcsn::sname().
|
inlinestatic |
Definition at line 374 of file nullableset.hh.
References vcsn::detail::nullable_helper< LabelSet >::special().
|
inline |
Mirror label.
Definition at line 462 of file nullableset.hh.
References vcsn::detail::nullable_helper< LabelSet >::transpose().
|
inline |
Definition at line 290 of file nullableset.hh.
References vcsn::detail::nullable_helper< LabelSet >::value().
Referenced by vcsn::nullableset< LabelSet >::conv(), vcsn::nullableset< LabelSet >::ldiv(), vcsn::nullableset< LabelSet >::lgcd(), vcsn::random_label(), and vcsn::nullableset< LabelSet >::zero().
|
inline |
Definition at line 296 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), vcsn::nullableset< LabelSet >::labelset(), and vcsn::detail::make_wordset().
Referenced by vcsn::nullableset< LabelSet >::letters_of_padded().
|
inline |
Definition at line 442 of file nullableset.hh.
References vcsn::nullableset< LabelSet >::value().
|
private |
The wrapped LabelSet.
Declared early to please decltype.
Definition at line 173 of file nullableset.hh.
Referenced by vcsn::nullableset< LabelSet >::labelset().