00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef MLN_CORE_VAR_HH
00027 # define MLN_CORE_VAR_HH
00028
00035
00036 # include <mln/core/macros.hh>
00037
00041 #define mln_VAR(Var, Expr) \
00042 \
00043 typeof(Expr) Var = Expr; \
00044 typedef typeof(Expr) Var##_t
00045
00046 #define mln_const_VAR(Var, Expr) \
00047 \
00048 const typeof(Expr) Var = Expr; \
00049 typedef const typeof(Expr) Var##_t
00050
00051
00052
00053
00056 #define mln_PITER(p, obj) \
00057 typedef typeof(obj) p##__obj_type; \
00058 mln_piter(p##__obj_type) p(obj)
00059
00060 #define mln_PITER_(p, obj) \
00061 typedef typeof(obj) p##__obj_type; \
00062 mln_piter_(p##__obj_type) p(obj)
00064
00067 #define mln_FWD_PITER(p, obj) \
00068 typedef typeof(obj) p##__obj_type; \
00069 mln_fwd_piter(p##__obj_type) p(obj)
00070
00071 #define mln_FWD_PITER_(p, obj) \
00072 typedef typeof(obj) p##__obj_type; \
00073 mln_fwd_piter_(p##__obj_type) p(obj)
00075
00078 #define mln_BKD_PITER(p, obj) \
00079 typedef typeof(obj) p##__obj_type; \
00080 mln_bkd_piter(p##__obj_type) p(obj)
00081
00082 #define mln_BKD_PITER_(p, obj) \
00083 typedef typeof(obj) p##__obj_type; \
00084 mln_bkd_piter_(p##__obj_type) p(obj)
00086
00087
00088
00089
00092 #define mln_NITER(n, obj, p) \
00093 typedef typeof(obj) n##__obj_type; \
00094 mln_niter(n##__obj_type) n(obj, p)
00095
00096 #define mln_NITER_(n, obj, p) \
00097 typedef typeof(obj) n##__obj_type; \
00098 mln_niter_(n##__obj_type) n(obj, p)
00100
00103 #define mln_FWD_NITER(n, obj, p) \
00104 typedef typeof(obj) n##__obj_type; \
00105 mln_fwd_niter(n##__obj_type) n(obj, p)
00106
00107 #define mln_FWD_NITER_(n, obj, p) \
00108 typedef typeof(obj) n##__obj_type; \
00109 mln_fwd_niter_(n##__obj_type) n(obj, p)
00111
00114 #define mln_BKD_NITER(n, obj, p) \
00115 typedef typeof(obj) n##__obj_type; \
00116 mln_bkd_niter(n##__obj_type) n(obj, p)
00117
00118 #define mln_BKD_NITER_(n, obj, p) \
00119 typedef typeof(obj) n##__obj_type; \
00120 mln_bkd_niter_(n##__obj_type) n(obj, p)
00122
00123
00124
00125
00128 #define mln_QITER(q, obj, p) \
00129 typedef typeof(obj) q##__obj_type; \
00130 mln_qiter(q##__obj_type) q(obj, p)
00131
00132 #define mln_QITER_(q, obj, p) \
00133 typedef typeof(obj) q##__obj_type; \
00134 mln_qiter_(q##__obj_type) q(obj, p)
00136
00139 #define mln_FWD_QITER(q, obj, p) \
00140 typedef typeof(obj) q##__obj_type; \
00141 mln_fwd_qiter(q##__obj_type) q(obj, p)
00142
00143 #define mln_FWD_QITER_(q, obj, p) \
00144 typedef typeof(obj) q##__obj_type; \
00145 mln_fwd_qiter_(q##__obj_type) q(obj, p)
00147
00150 #define mln_BKD_QITER(q, obj, p) \
00151 typedef typeof(obj) q##__obj_type; \
00152 mln_bkd_qiter(q##__obj_type) q(obj, p)
00153
00154 #define mln_BKD_QITER_(q, obj, p) \
00155 typedef typeof(obj) q##__obj_type; \
00156 mln_bkd_qiter_(q##__obj_type) q(obj, p)
00158
00159
00160
00161
00164 #define mln_EITER(e, obj) \
00165 typedef typeof(obj) e##__obj_type; \
00166 mln_eiter(e##__obj_type) e(obj)
00167
00168 #define mln_EITER_(e, obj) \
00169 typedef typeof(obj) e##__obj_type; \
00170 mln_eiter_(e##__obj_type) e(obj)
00172
00175 #define mln_FWD_EITER(e, obj) \
00176 typedef typeof(obj) e##__obj_type; \
00177 mln_fwd_eiter(e##__obj_type) e(obj)
00178
00179 #define mln_FWD_EITER_(e, obj) \
00180 typedef typeof(obj) e##__obj_type; \
00181 mln_fwd_eiter_(e##__obj_type) e(obj)
00183
00186 #define mln_BKD_EITER(e, obj) \
00187 typedef typeof(obj) e##__obj_type; \
00188 mln_bkd_eiter(e##__obj_type) e(obj)
00189
00190 #define mln_BKD_EITER_(e, obj) \
00191 typedef typeof(obj) e##__obj_type; \
00192 mln_bkd_eiter_(e##__obj_type) e(obj)
00194
00195
00196
00197
00200 #define mln_VITER(v, obj) \
00201 typedef typeof(obj) v##__obj_type; \
00202 mln_viter(v##__obj_type) v(obj)
00203
00204 #define mln_VITER_(v, obj) \
00205 typedef typeof(obj) v##__obj_type; \
00206 mln_viter_(v##__obj_type) v(obj)
00208
00211 #define mln_FWD_VITER(v, obj) \
00212 typedef typeof(obj) v##__obj_type; \
00213 mln_fwd_viter(v##__obj_type) v(obj)
00214
00215 #define mln_FWD_VITER_(v, obj) \
00216 typedef typeof(obj) v##__obj_type; \
00217 mln_fwd_viter_(v##__obj_type) v(obj)
00219
00222 #define mln_BKD_VITER(v, obj) \
00223 typedef typeof(obj) v##__obj_type; \
00224 mln_bkd_viter(v##__obj_type) v(obj)
00225
00226 #define mln_BKD_VITER_(v, obj) \
00227 typedef typeof(obj) v##__obj_type; \
00228 mln_bkd_viter_(v##__obj_type) v(obj)
00230
00231
00232 #endif // ! MLN_CORE_VAR_HH