$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
mln/core/macros.hh
1 // Copyright (C) 2007, 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_MACROS_HH
27 # define MLN_CORE_MACROS_HH
28 
32 
33 
34 # define mln_deduce(T, A1, A2) typename T::A1::A2
35 
36 
37 // a
38 
41 # define mln_argument(T) typename T::argument
42 # define mln_argument_(T) T::argument
43 
44 
45 
46 // b
47 
51 # define mln_bkd_eiter(T) typename T::bkd_eiter
52 # define mln_bkd_eiter_(T) T::bkd_eiter
53 
54 
57 # define mln_bkd_niter(T) typename T::bkd_niter
58 # define mln_bkd_niter_(T) T::bkd_niter
59 
60 
63 # define mln_bkd_piter(T) typename T::bkd_piter
64 # define mln_bkd_piter_(T) T::bkd_piter
65 
66 
69 # define mln_bkd_qiter(T) typename T::bkd_qiter
70 # define mln_bkd_qiter_(T) T::bkd_qiter
71 
72 
75 # define mln_bkd_viter(T) typename T::bkd_viter
76 # define mln_bkd_viter_(T) T::bkd_viter
77 
78 
81 # define mln_box(T) typename mln::box<mln_psite(T)>
82 # define mln_box_(T) mln::box<mln_psite(T)>
83 
84 
85 
86 // c
87 
90 # define mln_coord(T) typename T::coord
91 # define mln_coord_(T) T::coord
92 
93 
94 
95 // d
96 
99 # define mln_delta(T) typename T::delta
100 # define mln_delta_(T) T::delta
101 
102 
105 # define mln_dpoint(T) typename T::dpoint
106 # define mln_dpoint_(T) T::dpoint
107 
108 
111 # define mln_dpsite(T) typename T::dpsite
112 # define mln_dpsite_(T) T::dpsite
113 
114 
115 
116 // e
117 
120 # define mln_eiter(T) typename T::eiter
121 # define mln_eiter_(T) T::eiter
122 
123 
126 # define mln_graph(T) typename T::graph_t
127 # define mln_graph_(T) T::graph_t
128 
129 
132 # define mln_element(T) typename T::element
133 # define mln_element_(T) T::element
134 
135 
138 # define mln_graph_element(T) typename T::graph_element
139 # define mln_graph_element_(T) T::graph_element
140 
141 
144 # define mln_enc(T) typename T::enc
145 # define mln_enc_(T) T::enc
146 
147 
150 # define mln_equiv(T) typename T::equiv
151 # define mln_equiv_(T) T::equiv
152 
153 
154 
155 // f
156 
160 # define mln_fwd_eiter(T) typename T::fwd_eiter
161 # define mln_fwd_eiter_(T) T::fwd_eiter
162 
163 
166 # define mln_fwd_niter(T) typename T::fwd_niter
167 # define mln_fwd_niter_(T) T::fwd_niter
168 
169 
172 # define mln_fwd_piter(T) typename T::fwd_piter
173 # define mln_fwd_piter_(T) T::fwd_piter
174 
175 
178 # define mln_fwd_qiter(T) typename T::fwd_qiter
179 # define mln_fwd_qiter_(T) T::fwd_qiter
180 
181 
184 # define mln_fwd_viter(T) typename T::fwd_viter
185 # define mln_fwd_viter_(T) T::fwd_viter
186 
187 
188 
189 // g
190 
193 # define mln_geom(T) typename T::geom
194 # define mln_geom_(T) T::geom
195 
196 
199 # define mln_grid(T) typename T::grid
200 # define mln_grid_(T) T::grid
201 
202 
203 
204 // i
205 
208 # define mln_i_element(T) typename T::i_element
209 # define mln_i_element_(T) T::i_element
210 
211 
214 # define mln_image(T) typename T::image
215 # define mln_image_(T) T::image
216 
217 
220 # define mln_invert(T) typename T::invert
221 # define mln_invert_(T) T::invert
222 
223 
224 
225 // l
226 
229 # define mln_lvalue(T) typename T::lvalue
230 # define mln_lvalue_(T) T::lvalue
231 
232 
233 
234 // m
235 
238 # define mln_mesh(T) typename T::mesh
239 # define mln_mesh_(T) T::mesh
240 
241 
242 
243 // p
244 
247 # define mln_piter(T) typename T::piter
248 # define mln_piter_(T) T::piter
249 
250 
254 # define mln_line_piter(T) typename T::line_piter
255 # define mln_line_piter_(T) T::line_piter
256 
257 
260 # define mln_domain(T) typename T::domain_t
261 # define mln_domain_(T) T::domain_t
262 
263 
266 # define mln_pset(T) typename T::pset
267 # define mln_pset_(T) T::pset
268 
269 
272 # define mln_psite(T) typename T::psite
273 # define mln_psite_(T) T::psite
274 
275 
278 # define mln_point(T) typename T::point
279 # define mln_point_(T) T::point
280 
281 
282 
283 // q
284 
288 # define mln_qlf_value(T) typename mln::trait::qlf_value< T >::ret
289 # define mln_qlf_value_(T) mln::trait::qlf_value< T >::ret
290 
291 
294 # define mln_qiter(T) typename T::fwd_qiter
295 # define mln_qiter_(T) T::fwd_qiter
296 
297 
300 # define mln_q_result(T) typename T::q_result
301 # define mln_q_result_(T) T::q_result
302 
303 
306 # define mln_q_subject(T) typename T::q_subject
307 # define mln_q_subject_(T) T::q_subject
308 
309 
310 
311 // n
312 
315 # define mln_niter(T) typename T::fwd_niter
316 # define mln_niter_(T) T::fwd_niter
317 
318 
319 
320 // r
321 
324 # define mln_r_element(T) typename T::r_element
325 # define mln_r_element_(T) T::r_element
326 
327 
330 # define mln_regular(T) typename T::regular
331 # define mln_regular_(T) T::regular
332 
333 
336 # define mln_result(T) typename T::result
337 # define mln_result_(T) T::result
338 
339 
342 # define mln_rvalue(T) typename T::rvalue
343 # define mln_rvalue_(T) T::rvalue
344 
345 
346 
347 // s
348 
351 # define mln_site(T) typename T::site
352 # define mln_site_(T) T::site
353 
354 
355 // /// Shortcuts to access the subject type associated to T.
356 // /// \{
357 // # define mln_subject(T) typename T::subject
358 // # define mln_subject_(T) T::subject
359 // /// \}
360 
361 
362 // t
363 
366 # define mln_target(T) typename T::target
367 # define mln_target_(T) T::target
368 
369 
370 
371 
372 // u
373 
376 # define mln_unmorph(T) typename T::unmorph
377 # define mln_unmorph_(T) T::unmorph
378 
379 
380 
381 
382 // v
383 
386 # define mln_value(T) typename T::value
387 # define mln_value_(T) T::value
388 
389 
392 # define mln_vec(T) typename T::vec
393 # define mln_vec_(T) T::vec
394 
395 
398 # define mln_vset(T) typename T::t_eligible_values_set
399 # define mln_vset_(T) T::t_eligible_values_set
400 
401 
404 # define mln_viter(T) typename T::fwd_viter
405 # define mln_viter_(T) T::fwd_viter
406 
407 
408 
409 // w
410 
413 # define mln_weight(T) typename T::weight
414 # define mln_weight_(T) T::weight
415 
416 
419 # define mln_window(T) typename T::window
420 # define mln_window_(T) T::window
421 
422 
423 
424 
425 
426 // FIXME: Just include trait/all.hh !!!
427 
428 # define mln_fwd_pixter(I) typename mln::trait::fwd_pixter< I >::ret
429 # define mln_fwd_pixter_(I) mln::trait::fwd_pixter< I >::ret
430 
431 # define mln_bkd_pixter(I) typename mln::trait::bkd_pixter< I >::ret
432 # define mln_bkd_pixter_(I) mln::trait::bkd_pixter< I >::ret
433 
434 # define mln_pixter(I) mln_fwd_pixter(I)
435 # define mln_pixter_(I) mln_fwd_pixter_(I)
436 
437 
438 # define mln_fwd_qixter(I, W) typename mln::trait::fwd_qixter< I, W >::ret
439 # define mln_fwd_qixter_(I, W) mln::trait::fwd_qixter< I, W >::ret
440 
441 # define mln_bkd_qixter(I, W) typename mln::trait::bkd_qixter< I, W >::ret
442 # define mln_bkd_qixter_(I, W) mln::trait::bkd_qixter< I, W >::ret
443 
444 # define mln_qixter(I, W) mln_fwd_qixter(I, W)
445 # define mln_qixter_(I, W) mln_fwd_qixter_(I, W)
446 
447 
448 # define mln_fwd_nixter(I, N) typename mln::trait::fwd_nixter< I, N >::ret
449 # define mln_fwd_nixter_(I, N) mln::trait::fwd_nixter< I, N >::ret
450 
451 # define mln_bkd_nixter(I, N) typename mln::trait::bkd_nixter< I, N >::ret
452 # define mln_bkd_nixter_(I, N) mln::trait::bkd_nixter< I, N >::ret
453 
454 # define mln_nixter(I, N) mln_fwd_nixter(I, N)
455 # define mln_nixter_(I, N) mln_fwd_nixter_(I, N)
456 
459 # define mln_vertex_iter(G) typename G::vertex_iter
460 # define mln_vertex_iter_(G) G::vertex_iter
461 # define mln_vertex_fwd_iter(G) typename G::vertex_fwd_iter
462 # define mln_vertex_fwd_iter_(G) G::vertex_fwd_iter
463 # define mln_vertex_bkd_iter(G) typename G::vertex_bkd_iter
464 # define mln_vertex_bkd_iter_(G) G::vertex_bkd_iter
465 
466 
469 # define mln_edge_iter(G) typename G::edge_iter
470 # define mln_edge_iter_(G) G::edge_iter
471 # define mln_edge_fwd_iter(G) typename G::edge_fwd_iter
472 # define mln_edge_fwd_iter_(G) G::edge_fwd_iter
473 # define mln_edge_bkd_iter(G) typename G::edge_bkd_iter
474 # define mln_edge_bkd_iter_(G) G::edge_bkd_iter
475 
476 
480 # define mln_vertex_nbh_vertex_iter(G) typename G::vertex_nbh_vertex_iter
481 # define mln_vertex_nbh_vertex_iter_(G) G::vertex_nbh_vertex_iter
482 # define mln_vertex_nbh_vertex_fwd_iter(G) typename G::vertex_nbh_vertex_fwd_iter
483 # define mln_vertex_nbh_vertex_fwd_iter_(G) G::vertex_nbh_vertex_fwd_iter
484 # define mln_vertex_nbh_vertex_bkd_iter(G) typename G::vertex_nbh_vertex_bkd_iter
485 # define mln_vertex_nbh_vertex_bkd_iter_(G) G::vertex_nbh_vertex_bkd_iter
486 
487 
491 # define mln_vertex_nbh_edge_iter(G) typename G::vertex_nbh_edge_iter
492 # define mln_vertex_nbh_edge_iter_(G) G::vertex_nbh_edge_iter
493 # define mln_vertex_nbh_edge_fwd_iter(G) typename G::vertex_nbh_edge_fwd_iter
494 # define mln_vertex_nbh_edge_fwd_iter_(G) G::vertex_nbh_edge_fwd_iter
495 # define mln_vertex_nbh_edge_bkd_iter(G) typename G::vertex_nbh_edge_bkd_iter
496 # define mln_vertex_nbh_edge_bkd_iter_(G) G::vertex_nbh_edge_bkd_iter
497 
498 
502 # define mln_edge_nbh_edge_iter(G) typename G::edge_nbh_edge_iter
503 # define mln_edge_nbh_edge_iter_(G) G::edge_nbh_edge_iter
504 # define mln_edge_nbh_edge_fwd_iter(G) typename G::edge_nbh_edge_fwd_iter
505 # define mln_edge_nbh_edge_fwd_iter_(G) G::edge_nbh_edge_fwd_iter
506 # define mln_edge_nbh_edge_bkd_iter(G) typename G::edge_nbh_edge_bkd_iter
507 # define mln_edge_nbh_edge_bkd_iter_(G) G::edge_nbh_edge_bkd_iter
508 
509 
510 #endif // ! MLN_CORE_MACROS_HH