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
00027 #ifndef MLN_TOPO_CENTER_ONLY_ITER_HH
00028 # define MLN_TOPO_CENTER_ONLY_ITER_HH
00029
00036
00037 # include <mln/topo/internal/complex_relative_iterator_base.hh>
00038 # include <mln/topo/face.hh>
00039
00040
00041 namespace mln
00042 {
00043
00044 namespace topo
00045 {
00046
00047
00048 template <unsigned D> class face;
00049
00050
00051
00052
00053
00054
00073 template <unsigned D>
00074 class center_only_iter
00075 : public internal::forward_complex_relative_iterator_base< topo::face<D>,
00076 algebraic_face<D>,
00077 center_only_iter<D> >
00078 {
00079
00080 private:
00081 typedef center_only_iter<D> self_;
00082 typedef internal::forward_complex_relative_iterator_base< topo::face<D>,
00083 algebraic_face<D>,
00084 self_ > super_;
00085
00086 public:
00089 center_only_iter();
00090 template <typename Fref>
00091 center_only_iter(const Fref& f_ref);
00093
00095 void update_adj_faces_();
00096 };
00097
00098
00099
00100 # ifndef MLN_INCLUDE_ONLY
00101
00102
00103
00104
00105
00106 template <unsigned D>
00107 inline
00108 center_only_iter<D>::center_only_iter()
00109 {
00110 }
00111
00112 template <unsigned D>
00113 template <typename Fref>
00114 inline
00115 center_only_iter<D>::center_only_iter(const Fref& f_ref)
00116 : super_(f_ref)
00117 {
00118 }
00119
00120 template <unsigned D>
00121 inline
00122 void
00123 center_only_iter<D>::update_adj_faces_()
00124 {
00125 mln_precondition(this->c_);
00126 this->adj_faces_.clear();
00127 this->adj_faces_.push_back(make_algebraic_face(*this->c_, true));
00128 }
00129
00130 # endif // ! MLN_INCLUDE_ONLY
00131
00132 }
00133
00134 }
00135
00136 #endif // ! MLN_TOPO_CENTER_ONLY_ITER_HH