28 static auto res =
symbol{
"lao"};
54 template <
typename... Args>
57 return value_t{std::forward<Args>(args)...};
150 template <
typename LabelSet>
153 typename LabelSet::value_t
v)
const
163 if (i.peek() ==
'\\')
168 "invalid label: unexpected \\", c);
174 template <
typename Fun>
175 static void convs(std::istream&, Fun)
177 raise(
"oneset: ranges not implemented");
186 o <<
"\\{\\varepsilon\\}";
static bool equal(const value_t l, const value_t r)
Whether l == r.
#define VCSN_REQUIRE(Cond,...)
A macro similar to require.
static bool is_special(const value_t v)
The special label is indistinguishable for the others.
Print as rich UTF-8 text, escaped.
auto hash_value(const T &v) -> decltype(std::hash< T >
Following the naming convention of Boost.
void require(Bool b, Args &&...args)
If b is not verified, raise an error with args as message.
std::string to_string(direction d)
Conversion to string.
static size_t size(value_t)
static bool less(const value_t l, const value_t r)
Whether l < r.
static constexpr bool is_expressionset()
std::ostream & print_set(std::ostream &o, format fmt={}) const
Print as is. For instance, don't try to escape labels.
static void convs(std::istream &, Fun)
weightset_mixin< detail::r_impl > r
An input/output format for valuesets.
Provide a variadic mul on top of a binary mul(), and one().
static constexpr bool has_one()
static value_t mul(value_t l, value_t r)
static value_t conv(self_t, value_t v)
static bool is_letter(const value_t)
static type value(oneset)
static value_t conv(std::istream &i, bool=true)
A structure that implements the computation of join(V1, V2).
bool open(bool o) const
Does not make a lot of sense.
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
auto meet(const expressionset< Ctx1 > &a, const expressionset< Ctx2 > &b) -> expressionset< meet_t< Ctx1, Ctx2 >>
The meet of two expressionsets.
Print as plain (ASCII) text, escaped.
static type join(const oneset &, const oneset &)
static std::ostream & print(const value_t, std::ostream &o, format={})
static type value(oneset)
static value_t transpose(const value_t v)
static oneset make(std::istream &is)
Build from the description in is.
static bool is_one(const value_t v)
std::istringstream is
The input stream: the specification to translate.
Print as a parsable type string.
static void make(std::istream &is)
Implementation of labels are ones: there is a single instance of label.
static size_t hash(value_t v)
The smallest nullableset which includes LabelSet.
value_t conv(const LabelSet &ls, typename LabelSet::value_t v) const
Convert from labelset to oneset.
value_t value(Args &&...args) const
Value constructor.
static constexpr bool is_free()
static constexpr bool is_letterized()