23 template <
typename LabelSet>
30 template <
typename LabelSet>
38 template <
typename LabelSet>
39 class label_wrapper final:
public label_base
44 using label_t =
typename labelset_t::value_t;
75 using label = std::shared_ptr<const detail::label_base>;
77 template <
typename LabelSet>
81 const typename LabelSet::value_t& l)
83 return std::make_shared<detail::label_wrapper<LabelSet>>(ls, l);
86 template <
typename LabelSet>
90 const typename LabelSet::value_t& l)
Aggregate a label and its labelset.
typename labelset_t::value_t label_t
label_wrapper(const labelset_t &ls, const label_t &l)
virtual symbol vname() const override
A description of the label type.
label make_label(const LabelSet &ls, const typename LabelSet::value_t &l)
To dyn_cast(From &&from)
A dynamic_cast in debug mode, static_cast with NDEBUG.
std::shared_ptr< const detail::label_base > label
label make_word(const LabelSet &ls, const typename LabelSet::value_t &l)
const labelset_t & labelset() const
boost::flyweight< std::string, boost::flyweights::no_tracking, boost::flyweights::intermodule_holder > symbol
An internalized string.
const label_t label() const
const label_t label_
The label.
const labelset_t labelset_
The label set.
auto & as() const
Extract wrapped typed label.
auto & as()
Extract wrapped typed label.
law_t< LabelSet > make_wordset(const LabelSet &ls)
The wordset of a labelset.