6 #include <boost/optional.hpp> 7 #include <boost/range/algorithm/for_each.hpp> 18 template <
typename GenSet>
25 using word_t =
typename genset_t::word_t;
58 template <
typename Fun>
60 convs_(std::istream& i, Fun fun)
const 77 "invalid label: unexpected ",
str_escape(res));
82 # define DEFINE(Name, Attribute) \ 83 template <typename... Args> \ 86 Name(Args&&... args) const \ 87 -> decltype(this->genset()->Name(std::forward<Args>(args)...)) \ 89 return this->genset()->Name(std::forward<Args>(args)...); \
auto generators(Args &&... args) const -> decltype(this->genset() -> generators(std::forward< Args >(args)...))
auto end(Args &&... args) const -> decltype(this->genset() -> end(std::forward< Args >(args)...))
auto begin(Args &&... args) const -> decltype(this->genset() -> begin(std::forward< Args >(args)...))
auto mul(Args &&... args) const -> decltype(this->genset() -> mul(std::forward< Args >(args)...))
char eat(std::istream &is, char c)
Check lookahead character and advance.
typename genset_t::word_t word_t
#define DEFINE(Name, Attribute)
Use the implementation from genset.
std::ostream & str_escape(std::ostream &os, const std::string &str, const char *special=nullptr)
Output a string, escaping special characters.
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
auto delimit(Args &&... args) const -> decltype(this->genset() -> delimit(std::forward< Args >(args)...))
genset_labelset(const genset_t &gs={})
LabelSet::letters_t conv_label_class_(const LabelSet &ls, std::istream &i)
Read a set of letters (hence, guaranteed in order, and unique).
auto get_word(Args &&... args) const -> decltype(this->genset() -> get_word(std::forward< Args >(args)...))
This class has no modeling purpose, it only serves to factor code common to letterset and wordset...
ATTRIBUTE_PURE auto has(Args &&... args) const -> decltype(this->genset() -> has(std::forward< Args >(args)...))
genset_labelset(const genset_ptr &gs)
genset_ptr genset() const
typename genset_t::letter_t letter_t
ATTRIBUTE_PURE auto equal(Args &&... args) const -> decltype(this->genset() -> equal(std::forward< Args >(args)...))
letter_t get_letter(std::istream &i, bool quoted=true) const
Read one letter from i.
ATTRIBUTE_PURE auto transpose(Args &&... args) const -> decltype(this->genset() -> transpose(std::forward< Args >(args)...))
void convs_(std::istream &i, Fun fun) const
Read and process a class of letters.
Functor to compare Values of ValueSets.
auto undelimit(Args &&... args) const -> decltype(this->genset() -> undelimit(std::forward< Args >(args)...))
typename genset_t::letters_t letters_t
Functor to three-way comparison Values of ValueSets.
ATTRIBUTE_PURE auto is_letter(Args &&... args) const -> decltype(this->genset() -> is_letter(std::forward< Args >(args)...))
std::shared_ptr< const genset_t > genset_ptr
#define VCSN_REQUIRE(Cond,...)
A macro similar to require.
auto pregenerators(Args &&... args) const -> decltype(this->genset() -> pregenerators(std::forward< Args >(args)...))