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

macros.hh

00001 // Copyright (C) 2007, 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_MACROS_HH
00027 # define MLN_CORE_MACROS_HH
00028 
00032 
00033 
00034 # define mln_deduce(T, A1, A2) typename T::A1::A2
00035 
00036 
00037 // a
00038 
00041 # define mln_argument(T)      typename T::argument
00042 # define mln_argument_(T)     T::argument
00043 
00044 
00045 
00046 // b
00047 
00051 # define mln_bkd_eiter(T)   typename T::bkd_eiter
00052 # define mln_bkd_eiter_(T)           T::bkd_eiter
00053 
00054 
00057 # define mln_bkd_niter(T)  typename T::bkd_niter
00058 # define mln_bkd_niter_(T)          T::bkd_niter
00059 
00060 
00063 # define mln_bkd_piter(T)  typename T::bkd_piter
00064 # define mln_bkd_piter_(T)          T::bkd_piter
00065 
00066 
00069 # define mln_bkd_qiter(T)  typename T::bkd_qiter
00070 # define mln_bkd_qiter_(T)          T::bkd_qiter
00071 
00072 
00075 # define mln_bkd_viter(T)  typename T::bkd_viter
00076 # define mln_bkd_viter_(T)          T::bkd_viter
00077 
00078 
00081 # define mln_box(T)        typename mln::box<mln_psite(T)>
00082 # define mln_box_(T)                mln::box<mln_psite(T)>
00083 
00084 
00085 
00086 // c
00087 
00090 # define mln_coord(T)      typename T::coord
00091 # define mln_coord_(T)              T::coord
00092 
00093 
00094 
00095 // d
00096 
00099 # define mln_delta(T)      typename T::delta
00100 # define mln_delta_(T)              T::delta
00101 
00102 
00105 # define mln_dpoint(T)     typename T::dpoint
00106 # define mln_dpoint_(T)             T::dpoint
00107 
00108 
00111 # define mln_dpsite(T)     typename T::dpsite
00112 # define mln_dpsite_(T)             T::dpsite
00113 
00114 
00115 
00116 // e
00117 
00120 # define mln_eiter(T)      typename T::eiter
00121 # define mln_eiter_(T)              T::eiter
00122 
00123 
00126 # define mln_graph(T)         typename T::graph_t
00127 # define mln_graph_(T)                 T::graph_t
00128 
00129 
00132 # define mln_element(T)        typename T::element
00133 # define mln_element_(T)                T::element
00134 
00135 
00138 # define mln_graph_element(T)        typename T::graph_element
00139 # define mln_graph_element_(T)                T::graph_element
00140 
00141 
00144 # define mln_enc(T)        typename T::enc
00145 # define mln_enc_(T)                T::enc
00146 
00147 
00150 # define mln_equiv(T)      typename T::equiv
00151 # define mln_equiv_(T)              T::equiv
00152 
00153 
00154 
00155 // f
00156 
00160 # define mln_fwd_eiter(T)   typename T::fwd_eiter
00161 # define mln_fwd_eiter_(T)           T::fwd_eiter
00162 
00163 
00166 # define mln_fwd_niter(T)  typename T::fwd_niter
00167 # define mln_fwd_niter_(T)          T::fwd_niter
00168 
00169 
00172 # define mln_fwd_piter(T)  typename T::fwd_piter
00173 # define mln_fwd_piter_(T)          T::fwd_piter
00174 
00175 
00178 # define mln_fwd_qiter(T)  typename T::fwd_qiter
00179 # define mln_fwd_qiter_(T)          T::fwd_qiter
00180 
00181 
00184 # define mln_fwd_viter(T)  typename T::fwd_viter
00185 # define mln_fwd_viter_(T)          T::fwd_viter
00186 
00187 
00188 
00189 // g
00190 
00193 # define mln_geom(T)      typename T::geom
00194 # define mln_geom_(T)              T::geom
00195 
00196 
00199 # define mln_grid(T)      typename T::grid
00200 # define mln_grid_(T)              T::grid
00201 
00202 
00203 
00204 // i
00205 
00208 # define mln_i_element(T)  typename T::i_element
00209 # define mln_i_element_(T)          T::i_element
00210 
00211 
00214 # define mln_image(T)      typename T::image
00215 # define mln_image_(T)              T::image
00216 
00217 
00220 # define mln_invert(T)     typename T::invert
00221 # define mln_invert_(T)             T::invert
00222 
00223 
00224 
00225 // l
00226 
00229 # define mln_lvalue(T)     typename T::lvalue
00230 # define mln_lvalue_(T)             T::lvalue
00231 
00232 
00233 
00234 // m
00235 
00238 # define mln_mesh(T)     typename T::mesh
00239 # define mln_mesh_(T)             T::mesh
00240 
00241 
00242 
00243 // p
00244 
00247 # define mln_piter(T)      typename T::piter
00248 # define mln_piter_(T)              T::piter
00249 
00250 
00254 # define mln_line_piter(T) typename T::line_piter
00255 # define mln_line_piter_(T)         T::line_piter
00256 
00257 
00260 # define mln_domain(T)       typename T::domain_t
00261 # define mln_domain_(T)               T::domain_t
00262 
00263 
00266 # define mln_pset(T)       typename T::pset
00267 # define mln_pset_(T)               T::pset
00268 
00269 
00272 # define mln_psite(T)      typename T::psite
00273 # define mln_psite_(T)              T::psite
00274 
00275 
00278 # define mln_point(T)      typename T::point
00279 # define mln_point_(T)              T::point
00280 
00281 
00282 
00283 // q
00284 
00288 # define mln_qlf_value(T)      typename mln::trait::qlf_value< T >::ret
00289 # define mln_qlf_value_(T)              mln::trait::qlf_value< T >::ret
00290 
00291 
00294 # define mln_qiter(T)      typename T::fwd_qiter
00295 # define mln_qiter_(T)              T::fwd_qiter
00296 
00297 
00300 # define mln_q_result(T)     typename T::q_result
00301 # define mln_q_result_(T)    T::q_result
00302 
00303 
00306 # define mln_q_subject(T)      typename T::q_subject
00307 # define mln_q_subject_(T)              T::q_subject
00308 
00309 
00310 
00311 // n
00312 
00315 # define mln_niter(T)      typename T::fwd_niter
00316 # define mln_niter_(T)              T::fwd_niter
00317 
00318 
00319 
00320 // r
00321 
00324 # define mln_r_element(T)  typename T::r_element
00325 # define mln_r_element_(T)          T::r_element
00326 
00327 
00330 # define mln_regular(T)     typename T::regular
00331 # define mln_regular_(T)    T::regular
00332 
00333 
00336 # define mln_result(T)     typename T::result
00337 # define mln_result_(T)    T::result
00338 
00339 
00342 # define mln_rvalue(T)     typename T::rvalue
00343 # define mln_rvalue_(T)             T::rvalue
00344 
00345 
00346 
00347 // s
00348 
00351 # define mln_site(T)      typename T::site
00352 # define mln_site_(T)              T::site
00353 
00354 
00355 // /// Shortcuts to access the subject type associated to T.
00356 // /// \{
00357 // # define mln_subject(T)      typename T::subject
00358 // # define mln_subject_(T)              T::subject
00359 // /// \}
00360 
00361 
00362 // t
00363 
00366 # define mln_target(T)      typename T::target
00367 # define mln_target_(T)              T::target
00368 
00369 
00370 
00371 
00372 // u
00373 
00376 # define mln_unmorph(T)      typename T::unmorph
00377 # define mln_unmorph_(T)              T::unmorph
00378 
00379 
00380 
00381 
00382 // v
00383 
00386 # define mln_value(T)      typename T::value
00387 # define mln_value_(T)              T::value
00388 
00389 
00392 # define mln_vec(T)        typename T::vec
00393 # define mln_vec_(T)                T::vec
00394 
00395 
00398 # define mln_vset(T)       typename T::t_eligible_values_set
00399 # define mln_vset_(T)               T::t_eligible_values_set
00400 
00401 
00404 # define mln_viter(T)      typename T::fwd_viter
00405 # define mln_viter_(T)              T::fwd_viter
00406 
00407 
00408 
00409 // w
00410 
00413 # define mln_weight(T)     typename T::weight
00414 # define mln_weight_(T)             T::weight
00415 
00416 
00419 # define mln_window(T)     typename T::window
00420 # define mln_window_(T)             T::window
00421 
00422 
00423 
00424 
00425 
00426 // FIXME: Just include trait/all.hh !!!
00427 
00428 # define mln_fwd_pixter(I)  typename mln::trait::fwd_pixter< I >::ret
00429 # define mln_fwd_pixter_(I)          mln::trait::fwd_pixter< I >::ret
00430 
00431 # define mln_bkd_pixter(I) typename mln::trait::bkd_pixter< I >::ret
00432 # define mln_bkd_pixter_(I)         mln::trait::bkd_pixter< I >::ret
00433 
00434 # define mln_pixter(I)  mln_fwd_pixter(I)
00435 # define mln_pixter_(I) mln_fwd_pixter_(I)
00436 
00437 
00438 # define mln_fwd_qixter(I, W) typename mln::trait::fwd_qixter< I, W >::ret
00439 # define mln_fwd_qixter_(I, W)         mln::trait::fwd_qixter< I, W >::ret
00440 
00441 # define mln_bkd_qixter(I, W) typename mln::trait::bkd_qixter< I, W >::ret
00442 # define mln_bkd_qixter_(I, W)         mln::trait::bkd_qixter< I, W >::ret
00443 
00444 # define mln_qixter(I, W)  mln_fwd_qixter(I, W)
00445 # define mln_qixter_(I, W) mln_fwd_qixter_(I, W)
00446 
00447 
00448 # define mln_fwd_nixter(I, N) typename mln::trait::fwd_nixter< I, N >::ret
00449 # define mln_fwd_nixter_(I, N)         mln::trait::fwd_nixter< I, N >::ret
00450 
00451 # define mln_bkd_nixter(I, N) typename mln::trait::bkd_nixter< I, N >::ret
00452 # define mln_bkd_nixter_(I, N)         mln::trait::bkd_nixter< I, N >::ret
00453 
00454 # define mln_nixter(I, N)  mln_fwd_nixter(I, N)
00455 # define mln_nixter_(I, N) mln_fwd_nixter_(I, N)
00456 
00459 # define mln_vertex_iter(G)         typename G::vertex_iter
00460 # define mln_vertex_iter_(G)                 G::vertex_iter
00461 # define mln_vertex_fwd_iter(G)     typename G::vertex_fwd_iter
00462 # define mln_vertex_fwd_iter_(G)             G::vertex_fwd_iter
00463 # define mln_vertex_bkd_iter(G)     typename G::vertex_bkd_iter
00464 # define mln_vertex_bkd_iter_(G)             G::vertex_bkd_iter
00465 
00466 
00469 # define mln_edge_iter(G)         typename G::edge_iter
00470 # define mln_edge_iter_(G)                 G::edge_iter
00471 # define mln_edge_fwd_iter(G)     typename G::edge_fwd_iter
00472 # define mln_edge_fwd_iter_(G)             G::edge_fwd_iter
00473 # define mln_edge_bkd_iter(G)     typename G::edge_bkd_iter
00474 # define mln_edge_bkd_iter_(G)             G::edge_bkd_iter
00475 
00476 
00480 # define mln_vertex_nbh_vertex_iter(G)         typename G::vertex_nbh_vertex_iter
00481 # define mln_vertex_nbh_vertex_iter_(G)                 G::vertex_nbh_vertex_iter
00482 # define mln_vertex_nbh_vertex_fwd_iter(G)     typename G::vertex_nbh_vertex_fwd_iter
00483 # define mln_vertex_nbh_vertex_fwd_iter_(G)             G::vertex_nbh_vertex_fwd_iter
00484 # define mln_vertex_nbh_vertex_bkd_iter(G)     typename G::vertex_nbh_vertex_bkd_iter
00485 # define mln_vertex_nbh_vertex_bkd_iter_(G)             G::vertex_nbh_vertex_bkd_iter
00486 
00487 
00491 # define mln_vertex_nbh_edge_iter(G)         typename G::vertex_nbh_edge_iter
00492 # define mln_vertex_nbh_edge_iter_(G)                 G::vertex_nbh_edge_iter
00493 # define mln_vertex_nbh_edge_fwd_iter(G)     typename G::vertex_nbh_edge_fwd_iter
00494 # define mln_vertex_nbh_edge_fwd_iter_(G)             G::vertex_nbh_edge_fwd_iter
00495 # define mln_vertex_nbh_edge_bkd_iter(G)     typename G::vertex_nbh_edge_bkd_iter
00496 # define mln_vertex_nbh_edge_bkd_iter_(G)             G::vertex_nbh_edge_bkd_iter
00497 
00498 
00502 # define mln_edge_nbh_edge_iter(G)       typename G::edge_nbh_edge_iter
00503 # define mln_edge_nbh_edge_iter_(G)               G::edge_nbh_edge_iter
00504 # define mln_edge_nbh_edge_fwd_iter(G)   typename G::edge_nbh_edge_fwd_iter
00505 # define mln_edge_nbh_edge_fwd_iter_(G)           G::edge_nbh_edge_fwd_iter
00506 # define mln_edge_nbh_edge_bkd_iter(G)   typename G::edge_nbh_edge_bkd_iter
00507 # define mln_edge_nbh_edge_bkd_iter_(G)           G::edge_nbh_edge_bkd_iter
00508 
00509 
00510 #endif // ! MLN_CORE_MACROS_HH

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