![]() |
Vcsn
2.1
Be Rational
|
#include <istream>#include <vcsn/misc/stream.hh>#include <vcsn/misc/symbol.hh>#include <vcsn/misc/type_traits.hh>Go to the source code of this file.
Classes | |
| struct | vcsn::labels_are_letters |
| struct | vcsn::is_lal< Kinded > |
| struct | vcsn::labels_are_nullable |
| struct | vcsn::is_lan< Kinded > |
| struct | vcsn::labels_are_one |
| struct | vcsn::is_lao< Kinded > |
| struct | vcsn::labels_are_expressions |
| struct | vcsn::is_lar< Kinded > |
| struct | vcsn::labels_are_tuples |
| struct | vcsn::is_lat< Kinded > |
| struct | vcsn::labels_are_words |
| struct | vcsn::is_law< Kinded > |
Namespaces | |
| vcsn | |
Macros | |
| #define | DEFINE(Abbrev, Name) |
| Define the kinds, and auxiliary tools. More... | |
| #define DEFINE | ( | Abbrev, | |
| Name | |||
| ) |
Define the kinds, and auxiliary tools.
is_ABBREV<Kinded>: Whether Kinded has a specific kind_t
if_ABBREV<Kinded, R = Kinded>: Provide "overloading" on parameter types, for instance to require letter_t when labels_are_letters, and word_t when labels_are_words. See expressionset::atom and expressionset::atom_ for an example.
It is very tempting to turn these guys into members of context, but then, instead of "(if_lal<Ctx, letter_t> v)", one must write "(typename Cxx::template if_lal<letter_t> v)".