Vcsn  2.2
Be Rational
vcsn::nullableset< LabelSet > Class Template Reference

Implementation of labels are nullables (letter or empty). More...

#include <fwd.hh>

Collaboration diagram for vcsn::nullableset< LabelSet >:

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
 
using genset_ptr = decltype(ls_->genset())
 
using genset_t = decltype(ls_->generators())
 

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
 
genset_ptr genset () const
 
genset_t generators () const
 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
 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
 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...
 

Detailed Description

template<typename LabelSet>
class vcsn::nullableset< LabelSet >

Implementation of labels are nullables (letter or empty).

Definition at line 15 of file fwd.hh.

Member Typedef Documentation

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::genset_ptr = decltype(ls_->genset())

Definition at line 176 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::genset_t = decltype(ls_->generators())

Definition at line 177 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::helper_t = detail::nullable_helper<labelset_t>

Definition at line 163 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::kind_t = labels_are_nullable

Definition at line 164 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::labelset_ptr = std::shared_ptr<const labelset_t>

Definition at line 161 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::labelset_t = LabelSet

Definition at line 160 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::letter_t = typename labelset_t::letter_t

Definition at line 167 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::self_t = nullableset

Definition at line 162 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::value_t = typename helper_t::value_t

Definition at line 166 of file nullableset.hh.

template<typename LabelSet>
using vcsn::nullableset< LabelSet >::word_t = typename labelset_t::word_t

Definition at line 168 of file nullableset.hh.

Constructor & Destructor Documentation

template<typename LabelSet>
vcsn::nullableset< LabelSet >::nullableset ( const labelset_ptr ls)
inline

Definition at line 180 of file nullableset.hh.

template<typename LabelSet>
vcsn::nullableset< LabelSet >::nullableset ( const labelset_t ls = {})
inline

Definition at line 184 of file nullableset.hh.

Member Function Documentation

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::conjunction ( const value_t l,
const value_t r 
) const
inline

Definition at line 451 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::conv ( self_t  ,
value_t  v 
) const
inline

Definition at line 271 of file nullableset.hh.

References vcsn::detail::v.

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::conv ( oneset  ,
typename oneset::value_t   
) const
inline

Definition at line 277 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::one().

Here is the call graph for this function:

template<typename LabelSet>
template<typename LabelSet_ >
value_t vcsn::nullableset< LabelSet >::conv ( const LabelSet_ &  ls,
typename LabelSet_::value_t  v 
) const
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 287 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::value().

Here is the call graph for this function:

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::conv ( std::istream &  i,
bool  quoted = true 
) const
inline

Read a label from a stream.

Definition at line 414 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::value().

Here is the call graph for this function:

template<typename LabelSet>
template<typename Fun >
void vcsn::nullableset< LabelSet >::convs ( std::istream &  i,
Fun &&  fun 
) const
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_]".

Parameters
ithe input stream.
funa (label_t) -> void function.

Definition at line 442 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::value().

Here is the call graph for this function:

template<typename LabelSet>
static bool vcsn::nullableset< LabelSet >::equal ( const value_t l,
const value_t r 
)
inlinestatic

Whether l == r.

Definition at line 338 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().

Here is the call graph for this function:

template<typename LabelSet>
genset_t vcsn::nullableset< LabelSet >::generators ( ) const
inline

The generators. Meaningful for labelsets only.

Definition at line 265 of file nullableset.hh.

Referenced by vcsn::random_label().

template<typename LabelSet>
genset_ptr vcsn::nullableset< LabelSet >::genset ( ) const
inline

Definition at line 258 of file nullableset.hh.

template<typename LabelSet>
letter_t vcsn::nullableset< LabelSet >::get_letter ( std::istream &  i,
bool  quoted = true 
) const
inline

Definition at line 407 of file nullableset.hh.

template<typename LabelSet>
static constexpr bool vcsn::nullableset< LabelSet >::has_one ( )
inlinestatic

Definition at line 215 of file nullableset.hh.

template<typename LabelSet>
static size_t vcsn::nullableset< LabelSet >::hash ( const value_t v)
inlinestatic

Definition at line 400 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
static constexpr bool vcsn::nullableset< LabelSet >::is_expressionset ( )
inlinestatic

Definition at line 221 of file nullableset.hh.

template<typename LabelSet>
static constexpr bool vcsn::nullableset< LabelSet >::is_free ( )
inlinestatic

Definition at line 232 of file nullableset.hh.

template<typename LabelSet>
bool vcsn::nullableset< LabelSet >::is_letter ( const value_t v) const
inline

Definition at line 488 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
static constexpr bool vcsn::nullableset< LabelSet >::is_letterized ( )
inlinestatic

Definition at line 227 of file nullableset.hh.

References vcsn::detail::is_letterized().

Here is the call graph for this function:

template<typename LabelSet>
static bool vcsn::nullableset< LabelSet >::is_special ( const value_t v)
inlinestatic

Definition at line 389 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), and vcsn::detail::is_special().

Here is the call graph for this function:

template<typename LabelSet>
bool vcsn::nullableset< LabelSet >::is_valid ( value_t  v) const
inline

Definition at line 252 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
bool vcsn::nullableset< LabelSet >::is_zero ( const value_t v) const
inline

Definition at line 482 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
const labelset_ptr vcsn::nullableset< LabelSet >::labelset ( ) const
inline
template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::ldiv ( const value_t l,
const value_t r 
) const
inline

Compute l \ r = l^{-1}r.

Definition at line 369 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().

Here is the call graph for this function:

template<typename LabelSet>
static bool vcsn::nullableset< LabelSet >::less ( const value_t l,
const value_t r 
)
inlinestatic

Whether l < r.

Definition at line 347 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), and vcsn::nullableset< LabelSet >::is_one().

Here is the call graph for this function:

template<typename LabelSet>
static auto vcsn::nullableset< LabelSet >::letters_of ( const word_t v) -> decltype(labelset_t::letters_of(v))
inlinestatic

Prepare to iterate over the letters of v.

Definition at line 315 of file nullableset.hh.

References vcsn::detail::v.

template<typename LabelSet>
auto vcsn::nullableset< LabelSet >::letters_of_padded ( const word_t v,
letter_t  l 
) const -> decltype(ls_->letters_of_padded(v, l))
inline

Prepare to iterate over the letters of v.

This is for the padded case

Definition at line 324 of file nullableset.hh.

References vcsn::detail::v.

Referenced by vcsn::nullableset< LabelSet >::letters_of_padded().

template<typename LabelSet>
auto vcsn::nullableset< LabelSet >::letters_of_padded ( value_t  v,
letter_t  l 
) const -> decltype(this->letters_of_padded(this->word(v), l))
inline

Definition at line 331 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::letters_of_padded(), vcsn::detail::v, and vcsn::nullableset< LabelSet >::word().

Here is the call graph for this function:

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::lgcd ( const value_t l,
const value_t r 
) const
inline

The longest common prefix.

Definition at line 358 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().

Here is the call graph for this function:

template<typename LabelSet>
static nullableset vcsn::nullableset< LabelSet >::make ( std::istream &  is)
inlinestatic

Build from the description in is.

Definition at line 195 of file nullableset.hh.

References vcsn::eat().

Here is the call graph for this function:

template<typename LabelSet>
static ATTRIBUTE_PURE constexpr value_t vcsn::nullableset< LabelSet >::one ( )
inlinestatic

Definition at line 239 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().

Here is the call graph for this function:

template<typename LabelSet>
bool vcsn::nullableset< LabelSet >::open ( bool  o) const
inline

Whether unknown letters should be added, or rejected.

Parameters
owhether to accept unknown letters
Returns
the previous status.

Definition at line 209 of file nullableset.hh.

template<typename LabelSet>
std::ostream& vcsn::nullableset< LabelSet >::print ( const value_t l,
std::ostream &  o,
format  fmt = {} 
) const
inline

Print label to stream.

Definition at line 463 of file nullableset.hh.

template<typename LabelSet>
std::ostream& vcsn::nullableset< LabelSet >::print_set ( std::ostream &  o,
format  fmt = {} 
) const
inline

Print labelset description.

Definition at line 503 of file nullableset.hh.

template<typename LabelSet>
static size_t vcsn::nullableset< LabelSet >::size ( const value_t v)
inlinestatic

Definition at line 394 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::get_value(), vcsn::nullableset< LabelSet >::is_one(), and vcsn::rat::size().

Here is the call graph for this function:

template<typename LabelSet>
static symbol vcsn::nullableset< LabelSet >::sname ( )
inlinestatic

Definition at line 188 of file nullableset.hh.

References vcsn::sname().

Here is the call graph for this function:

template<typename LabelSet>
static value_t vcsn::nullableset< LabelSet >::special ( )
inlinestatic

Definition at line 383 of file nullableset.hh.

References vcsn::detail::nullable_helper< LabelSet >::special().

Here is the call graph for this function:

template<typename LabelSet>
template<typename Value >
Value vcsn::nullableset< LabelSet >::transpose ( const Value &  l) const
inline

Mirror label.

Definition at line 496 of file nullableset.hh.

References vcsn::detail::nullable_helper< LabelSet >::transpose().

Here is the call graph for this function:

template<typename LabelSet>
template<typename... Args>
value_t vcsn::nullableset< LabelSet >::value ( Args &&...  args) const
inline

Definition at line 299 of file nullableset.hh.

References vcsn::detail::nullable_helper< LabelSet >::value().

Referenced by vcsn::nullableset< LabelSet >::conv(), vcsn::nullableset< LabelSet >::convs(), vcsn::nullableset< LabelSet >::ldiv(), vcsn::nullableset< LabelSet >::lgcd(), vcsn::random_label(), and vcsn::nullableset< LabelSet >::zero().

Here is the call graph for this function:

template<typename LabelSet>
word_t vcsn::nullableset< LabelSet >::word ( const value_t l) const
inline

Definition at line 305 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().

Here is the call graph for this function:

template<typename LabelSet>
value_t vcsn::nullableset< LabelSet >::zero ( ) const
inline

Definition at line 476 of file nullableset.hh.

References vcsn::nullableset< LabelSet >::value().

Here is the call graph for this function:

Member Data Documentation

template<typename LabelSet>
labelset_ptr vcsn::nullableset< LabelSet >::ls_
private

The wrapped LabelSet.

Declared early to please decltype.

Definition at line 173 of file nullableset.hh.

Referenced by vcsn::nullableset< LabelSet >::labelset().


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