1 #ifndef VCSN_DYN_LABEL_HH
2 # define VCSN_DYN_LABEL_HH
23 virtual std::string
vname(
bool full =
true)
const = 0;
26 template <
typename LabelSet>
33 template <
typename LabelSet>
41 template <
typename LabelSet>
42 class label_wrapper:
public label_base
47 using label_t =
typename labelset_t::value_t;
53 virtual std::string
vname(
bool full =
true)
const override
77 using label = std::shared_ptr<const detail::label_base>;
79 template <
typename LabelSet>
83 const typename LabelSet::value_t& l)
85 return std::make_shared<detail::label_wrapper<LabelSet>>(l, ls);
88 template <
typename LabelSet>
92 const typename LabelSet::value_t& l)
99 #endif // !VCSN_DYN_LABEL_HH
const label_t label_
The label.
typename labelset_t::value_t label_t
label_wrapper< LabelSet > & as()
Extract wrapped typed label.
label make_word(const LabelSet &ls, const typename LabelSet::value_t &l)
virtual std::string vname(bool full=true) const override
A description of the label type.
label_wrapper(const label_t &l, const labelset_t &ls)
const labelset_t & labelset() const
const label_wrapper< LabelSet > & as() const
Extract wrapped typed label.
law_t< LabelSet > make_wordset(const LabelSet &ls)
The wordset of a labelset.
const label_t label() const
std::shared_ptr< const detail::label_base > label
const labelset_t labelset_
The label set.
Aggregate a label and its labelset.
label make_label(const LabelSet &ls, const typename LabelSet::value_t &l)