Vcsn
2.2
Be Rational
Main Page
Namespaces
Classes
Files
File List
File Members
kind.hh
Go to the documentation of this file.
1
#pragma once
2
3
#include <istream>
4
5
#include <
vcsn/misc/stream.hh
>
// eat
6
#include <
vcsn/misc/symbol.hh
>
7
#include <
vcsn/misc/type_traits.hh
>
// std::is_same_t
8
9
namespace
vcsn
10
{
11
25
26
#define DEFINE(Abbrev, Name) \
27
struct labels_are_ ## Name \
28
{ \
29
static symbol sname() \
30
{ \
31
static auto res = symbol{#Abbrev}; \
32
return res; \
33
} \
34
\
35
static void make(std::istream& is) \
36
{ \
37
eat(is, sname()); \
38
} \
39
\
40
}; \
41
\
42
template <typename Kinded> \
43
struct is_ ## Abbrev \
44
: std::is_same<typename Kinded::kind_t, labels_are_ ## Name> \
45
{}
46
47
DEFINE
(lal, letters);
48
DEFINE
(lan, nullable);
49
DEFINE
(lao, one);
50
DEFINE
(lar, expressions);
51
DEFINE
(lat, tuples);
52
DEFINE
(law, words);
53
54
#undef DEFINE
55
}
symbol.hh
vcsn
Definition:
a-star.hh:8
stream.hh
type_traits.hh
DEFINE
#define DEFINE(Abbrev, Name)
Define the kinds, and auxiliary tools.
Definition:
kind.hh:26
vcsn
core
kind.hh
Generated by
1.8.10