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