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

adj_lower_higher_face_iter.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_TOPO_ADJ_LOWER_HIGHER_FACE_ITER_HH
00027 # define MLN_TOPO_ADJ_LOWER_HIGHER_FACE_ITER_HH
00028 
00034 
00035 # include <mln/topo/internal/complex_relative_iterator_sequence.hh>
00036 # include <mln/topo/adj_lower_face_iter.hh>
00037 # include <mln/topo/adj_higher_face_iter.hh>
00038 
00039 
00040 namespace mln
00041 {
00042 
00043   namespace topo
00044   {
00045 
00046     // Forward declaration.
00047     template <unsigned D> class complex;
00048     template <unsigned D> class adj_lower_face_fwd_iter;
00049     template <unsigned D> class adj_lower_face_bkd_iter;
00050     template <unsigned D> class adj_higher_face_fwd_iter;
00051     template <unsigned D> class adj_higher_face_bkd_iter;
00052 
00053     namespace internal
00054     {
00055 
00056       template <typename I1, typename I2, typename E>
00057       class complex_relative_iterator_sequence;
00058 
00059     } // end of namespace mln::topo::internal
00060 
00061 
00062     /*------------------------------------------.
00063     | topo::adj_lower_higher_face_fwd_iter<D>.  |
00064     `------------------------------------------*/
00065 
00070     template <unsigned D>
00071     class adj_lower_higher_face_fwd_iter
00072       : public internal::complex_relative_iterator_sequence<adj_lower_face_fwd_iter<D>,
00073                                                             adj_higher_face_fwd_iter<D>,
00074                                                             adj_lower_higher_face_fwd_iter<D> >
00075     {
00076       typedef adj_lower_higher_face_fwd_iter<D> self_;
00077       typedef adj_lower_face_fwd_iter<D> iter1_;
00078       typedef adj_higher_face_fwd_iter<D> iter2_;
00079       typedef internal::complex_relative_iterator_sequence< iter1_,
00080                                                             iter2_,
00081                                                             self_ > super_;
00082 
00083     public:
00086       adj_lower_higher_face_fwd_iter();
00087       template <typename Fref>
00088       adj_lower_higher_face_fwd_iter(const Fref& f_ref);
00090     };
00091 
00092 
00093     /*------------------------------------------.
00094     | topo::adj_lower_higher_face_bkd_iter<D>.  |
00095     `------------------------------------------*/
00096 
00101     template <unsigned D>
00102     class adj_lower_higher_face_bkd_iter
00103       : public internal::complex_relative_iterator_sequence<adj_higher_face_bkd_iter<D>,
00104                                                             adj_lower_face_bkd_iter<D>,
00105                                                             adj_lower_higher_face_bkd_iter<D> >
00106     {
00107       typedef adj_lower_higher_face_bkd_iter<D> self_;
00108       typedef adj_higher_face_bkd_iter<D> iter1_;
00109       typedef adj_lower_face_bkd_iter<D> iter2_;
00110       typedef internal::complex_relative_iterator_sequence< iter1_,
00111                                                             iter2_,
00112                                                             self_ > super_;
00113 
00114     public:
00117       adj_lower_higher_face_bkd_iter();
00118       template <typename Fref>
00119       adj_lower_higher_face_bkd_iter(const Fref& f_ref);
00121     };
00122 
00123 
00124 
00125 # ifndef MLN_INCLUDE_ONLY
00126 
00127     /*------------------------------------------.
00128     | topo::adj_lower_higher_face_fwd_iter<D>.  |
00129     `------------------------------------------*/
00130 
00131     template <unsigned D>
00132     inline
00133     adj_lower_higher_face_fwd_iter<D>::adj_lower_higher_face_fwd_iter()
00134     {
00135     }
00136 
00137     template <unsigned D>
00138     template <typename Fref>
00139     inline
00140     adj_lower_higher_face_fwd_iter<D>::adj_lower_higher_face_fwd_iter(const Fref& f_ref)
00141       : super_(f_ref)
00142     {
00143     }
00144 
00145 
00146     /*------------------------------------------.
00147     | topo::adj_lower_higher_face_bkd_iter<D>.  |
00148     `------------------------------------------*/
00149 
00150     template <unsigned D>
00151     inline
00152     adj_lower_higher_face_bkd_iter<D>::adj_lower_higher_face_bkd_iter()
00153     {
00154     }
00155 
00156     template <unsigned D>
00157     template <typename Fref>
00158     inline
00159     adj_lower_higher_face_bkd_iter<D>::adj_lower_higher_face_bkd_iter(const Fref& f_ref)
00160       : super_(f_ref)
00161     {
00162     }
00163 
00164 # endif // ! MLN_INCLUDE_ONLY
00165 
00166   } // end of namespace mln::topo
00167 
00168 } // end of namespace mln
00169 
00170 #endif // ! MLN_TOPO_ADJ_LOWER_HIGHER_FACE_ITER_HH

Generated on Fri Sep 16 2011 16:33:17 for Milena (Olena) by  doxygen 1.7.1