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