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

p_faces_piter.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_SITE_SET_ATTIC_P_FACES_PITER_HH
00027 # define MLN_CORE_SITE_SET_ATTIC_P_FACES_PITER_HH
00028 
00034 
00035 # include <mln/core/site_set/p_faces.hh>
00036 # include <mln/core/internal/p_complex_piter_base.hh>
00037 # include <mln/topo/attic/faces_iter.hh>
00038 
00039 
00040 namespace mln
00041 {
00042 
00043   // Forward declarations.
00044   template <unsigned N, unsigned D, typename P> class p_faces;
00045 
00046   template <unsigned N, unsigned D> class faces_fwd_iter_;
00047   template <unsigned N, unsigned D> class faces_bkd_iter_;
00048 
00049 
00050   /*------------------------------.
00051   | p_faces_fwd_piter_<N, D, P>.  |
00052   `------------------------------*/
00053 
00056   template <unsigned N, unsigned D, typename P>
00057   class p_faces_fwd_piter_
00058     : public internal::p_complex_piter_base_< topo::faces_fwd_iter_<N, D>,
00059                                               p_faces<N, D, P>,
00060                                               P,
00061                                               p_faces_fwd_piter_<N, D, P> >
00062   {
00063     typedef p_faces_fwd_piter_<N, D, P> self_;
00064     typedef internal::p_complex_piter_base_< topo::faces_fwd_iter_<N, D>,
00065                                              p_faces<N, D, P>,
00066                                              P,
00067                                              self_ > super_;
00068 
00069   public:
00072     p_faces_fwd_piter_();
00073     p_faces_fwd_piter_(const p_faces<N, D, P>& pc);
00075   };
00076 
00077 
00078   /*------------------------------.
00079   | p_faces_bkd_piter_<N, D, P>.  |
00080   `------------------------------*/
00081 
00084   template <unsigned N, unsigned D, typename P>
00085   class p_faces_bkd_piter_
00086   /* FIXME: Rename internal::p_complex_piter_base_ to something else,
00087      as it is also used for p_faces piters! */
00088     : public internal::p_complex_piter_base_< topo::faces_bkd_iter_<N, D>,
00089                                               p_faces<N, D, P>,
00090                                               P,
00091                                               p_faces_bkd_piter_<N, D, P> >
00092   {
00093     typedef p_faces_bkd_piter_<N, D, P> self_;
00094     typedef internal::p_complex_piter_base_< topo::faces_bkd_iter_<N, D>,
00095                                              p_faces<N, D, P>,
00096                                              P,
00097                                              self_ > super_;
00098 
00099   public:
00102     p_faces_bkd_piter_();
00103     p_faces_bkd_piter_(const p_faces<N, D, P>& pc);
00105   };
00106 
00107 
00108 
00109 # ifndef MLN_INCLUDE_ONLY
00110 
00111   /*------------------------------.
00112   | p_faces_fwd_piter_<N, D, P>.  |
00113   `------------------------------*/
00114 
00115   template <unsigned N, unsigned D, typename P>
00116   inline
00117   p_faces_fwd_piter_<N, D, P>::p_faces_fwd_piter_()
00118   {
00119   }
00120 
00121   template <unsigned N, unsigned D, typename P>
00122   inline
00123   p_faces_fwd_piter_<N, D, P>::p_faces_fwd_piter_(const p_faces<N, D, P>& pc)
00124     : super_(pc)
00125   {
00126   }
00127 
00128 
00129   /*------------------------------.
00130   | p_faces_bkd_piter_<N, D, P>.  |
00131   `------------------------------*/
00132 
00133   template <unsigned N, unsigned D, typename P>
00134   inline
00135   p_faces_bkd_piter_<N, D, P>::p_faces_bkd_piter_()
00136   {
00137   }
00138 
00139   template <unsigned N, unsigned D, typename P>
00140   inline
00141   p_faces_bkd_piter_<N, D, P>::p_faces_bkd_piter_(const p_faces<N, D, P>& pc)
00142     : super_(pc)
00143   {
00144   }
00145 
00146 # endif // ! MLN_INCLUDE_ONLY
00147 
00148 } // end of mln
00149 
00150 #endif // ! MLN_CORE_SITE_SET_ATTIC_P_FACES_PITER_HH

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