• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List

var.hh

00001 // Copyright (C) 2008, 2009 EPITA Research and Development Laboratory (LRDE)
00002 //
00003 // This file is part of Olena.
00004 //
00005 // Olena is free software: you can redistribute it and/or modify it under
00006 // the terms of the GNU General Public License as published by the Free
00007 // Software Foundation, version 2 of the License.
00008 //
00009 // Olena is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License
00015 // along with Olena.  If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 // As a special exception, you may use this file as part of a free
00018 // software project without restriction.  Specifically, if other files
00019 // instantiate templates or use macros or inline functions from this
00020 // file, or you compile this file and link it with other files to produce
00021 // an executable, this file does not by itself cause the resulting
00022 // executable to be covered by the GNU General Public License.  This
00023 // exception does not however invalidate any other reasons why the
00024 // executable file might be covered by the GNU General Public License.
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 // mln_PITER
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)
00063 
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)
00074 
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)
00085 
00086 
00087 
00088 // mln_NITER
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)
00099 
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)
00110 
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)
00121 
00122 
00123 
00124 // mln_QITER
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)
00135 
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)
00146 
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)
00157 
00158 
00159 
00160 // mln_EITER
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)
00171 
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)
00182 
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)
00193 
00194 
00195 
00196 // mln_VITER
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)
00207 
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)
00218 
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)
00229 
00230 
00231 
00232 #endif // ! MLN_CORE_VAR_HH

Generated on Tue Oct 4 2011 15:25:05 for Milena (Olena) by  doxygen 1.7.1