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_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     
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     } 
00060 
00061 
00062     
00063 
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 
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 
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 
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   } 
00167 
00168 } 
00169 
00170 #endif // ! MLN_TOPO_ADJ_LOWER_HIGHER_FACE_ITER_HH