Milena (Olena)
User documentation 2.0a Id
Main Page
Related Pages
Modules
Namespaces
Classes
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerator
Groups
Pages
core/var.hh
1
// Copyright (C) 2008, 2009 EPITA Research and Development Laboratory (LRDE)
2
//
3
// This file is part of Olena.
4
//
5
// Olena is free software: you can redistribute it and/or modify it under
6
// the terms of the GNU General Public License as published by the Free
7
// Software Foundation, version 2 of the License.
8
//
9
// Olena is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
// General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Olena. If not, see <http://www.gnu.org/licenses/>.
16
//
17
// As a special exception, you may use this file as part of a free
18
// software project without restriction. Specifically, if other files
19
// instantiate templates or use macros or inline functions from this
20
// file, or you compile this file and link it with other files to produce
21
// an executable, this file does not by itself cause the resulting
22
// executable to be covered by the GNU General Public License. This
23
// exception does not however invalidate any other reasons why the
24
// executable file might be covered by the GNU General Public License.
25
26
#ifndef MLN_CORE_VAR_HH
27
# define MLN_CORE_VAR_HH
28
35
36
# include <mln/core/macros.hh>
37
41
#define mln_VAR(Var, Expr) \
42
\
43
typeof(Expr) Var = Expr; \
44
typedef typeof(Expr) Var##_t
45
46
#define mln_const_VAR(Var, Expr) \
47
\
48
const typeof(Expr) Var = Expr; \
49
typedef const typeof(Expr) Var##_t
50
51
52
// mln_PITER
53
56
#define mln_PITER(p, obj) \
57
typedef typeof(obj) p##__obj_type; \
58
mln_piter(p##__obj_type) p(obj)
59
60
#define mln_PITER_(p, obj) \
61
typedef typeof(obj) p##__obj_type; \
62
mln_piter_(p##__obj_type) p(obj)
63
64
67
#define mln_FWD_PITER(p, obj) \
68
typedef typeof(obj) p##__obj_type; \
69
mln_fwd_piter(p##__obj_type) p(obj)
70
71
#define mln_FWD_PITER_(p, obj) \
72
typedef typeof(obj) p##__obj_type; \
73
mln_fwd_piter_(p##__obj_type) p(obj)
74
75
78
#define mln_BKD_PITER(p, obj) \
79
typedef typeof(obj) p##__obj_type; \
80
mln_bkd_piter(p##__obj_type) p(obj)
81
82
#define mln_BKD_PITER_(p, obj) \
83
typedef typeof(obj) p##__obj_type; \
84
mln_bkd_piter_(p##__obj_type) p(obj)
85
86
87
88
// mln_NITER
89
92
#define mln_NITER(n, obj, p) \
93
typedef typeof(obj) n##__obj_type; \
94
mln_niter(n##__obj_type) n(obj, p)
95
96
#define mln_NITER_(n, obj, p) \
97
typedef typeof(obj) n##__obj_type; \
98
mln_niter_(n##__obj_type) n(obj, p)
99
100
103
#define mln_FWD_NITER(n, obj, p) \
104
typedef typeof(obj) n##__obj_type; \
105
mln_fwd_niter(n##__obj_type) n(obj, p)
106
107
#define mln_FWD_NITER_(n, obj, p) \
108
typedef typeof(obj) n##__obj_type; \
109
mln_fwd_niter_(n##__obj_type) n(obj, p)
110
111
114
#define mln_BKD_NITER(n, obj, p) \
115
typedef typeof(obj) n##__obj_type; \
116
mln_bkd_niter(n##__obj_type) n(obj, p)
117
118
#define mln_BKD_NITER_(n, obj, p) \
119
typedef typeof(obj) n##__obj_type; \
120
mln_bkd_niter_(n##__obj_type) n(obj, p)
121
122
123
124
// mln_QITER
125
128
#define mln_QITER(q, obj, p) \
129
typedef typeof(obj) q##__obj_type; \
130
mln_qiter(q##__obj_type) q(obj, p)
131
132
#define mln_QITER_(q, obj, p) \
133
typedef typeof(obj) q##__obj_type; \
134
mln_qiter_(q##__obj_type) q(obj, p)
135
136
139
#define mln_FWD_QITER(q, obj, p) \
140
typedef typeof(obj) q##__obj_type; \
141
mln_fwd_qiter(q##__obj_type) q(obj, p)
142
143
#define mln_FWD_QITER_(q, obj, p) \
144
typedef typeof(obj) q##__obj_type; \
145
mln_fwd_qiter_(q##__obj_type) q(obj, p)
146
147
150
#define mln_BKD_QITER(q, obj, p) \
151
typedef typeof(obj) q##__obj_type; \
152
mln_bkd_qiter(q##__obj_type) q(obj, p)
153
154
#define mln_BKD_QITER_(q, obj, p) \
155
typedef typeof(obj) q##__obj_type; \
156
mln_bkd_qiter_(q##__obj_type) q(obj, p)
157
158
159
160
// mln_EITER
161
164
#define mln_EITER(e, obj) \
165
typedef typeof(obj) e##__obj_type; \
166
mln_eiter(e##__obj_type) e(obj)
167
168
#define mln_EITER_(e, obj) \
169
typedef typeof(obj) e##__obj_type; \
170
mln_eiter_(e##__obj_type) e(obj)
171
172
175
#define mln_FWD_EITER(e, obj) \
176
typedef typeof(obj) e##__obj_type; \
177
mln_fwd_eiter(e##__obj_type) e(obj)
178
179
#define mln_FWD_EITER_(e, obj) \
180
typedef typeof(obj) e##__obj_type; \
181
mln_fwd_eiter_(e##__obj_type) e(obj)
182
183
186
#define mln_BKD_EITER(e, obj) \
187
typedef typeof(obj) e##__obj_type; \
188
mln_bkd_eiter(e##__obj_type) e(obj)
189
190
#define mln_BKD_EITER_(e, obj) \
191
typedef typeof(obj) e##__obj_type; \
192
mln_bkd_eiter_(e##__obj_type) e(obj)
193
194
195
196
// mln_VITER
197
200
#define mln_VITER(v, obj) \
201
typedef typeof(obj) v##__obj_type; \
202
mln_viter(v##__obj_type) v(obj)
203
204
#define mln_VITER_(v, obj) \
205
typedef typeof(obj) v##__obj_type; \
206
mln_viter_(v##__obj_type) v(obj)
207
208
211
#define mln_FWD_VITER(v, obj) \
212
typedef typeof(obj) v##__obj_type; \
213
mln_fwd_viter(v##__obj_type) v(obj)
214
215
#define mln_FWD_VITER_(v, obj) \
216
typedef typeof(obj) v##__obj_type; \
217
mln_fwd_viter_(v##__obj_type) v(obj)
218
219
222
#define mln_BKD_VITER(v, obj) \
223
typedef typeof(obj) v##__obj_type; \
224
mln_bkd_viter(v##__obj_type) v(obj)
225
226
#define mln_BKD_VITER_(v, obj) \
227
typedef typeof(obj) v##__obj_type; \
228
mln_bkd_viter_(v##__obj_type) v(obj)
229
230
231
232
#endif // ! MLN_CORE_VAR_HH
mln
core
var.hh
Generated on Thu Nov 8 2012 10:58:25 for Milena (Olena) by
1.8.2-20120930