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_CORE_SITE_SET_P_N_FACES_PITER_HH
00027 # define MLN_CORE_SITE_SET_P_N_FACES_PITER_HH
00028
00032
00033 # include <mln/core/site_set/p_complex.hh>
00034 # include <mln/core/internal/p_complex_piter_base.hh>
00035 # include <mln/topo/n_face_iter.hh>
00036
00037
00038
00039
00040
00041 namespace mln
00042 {
00043
00044
00045
00046
00047
00050 template <unsigned D, typename P>
00051 class p_n_faces_fwd_piter
00052 : public internal::p_complex_piter_base_< topo::n_face_fwd_iter<D>,
00053 p_complex<D, P>,
00054 P,
00055 p_n_faces_fwd_piter<D, P> >
00056 {
00057 typedef p_n_faces_fwd_piter<D, P> self_;
00058 typedef internal::p_complex_piter_base_< topo::n_face_fwd_iter<D>,
00059 p_complex<D, P>,
00060 P,
00061 self_ > super_;
00062
00063 public:
00066 p_n_faces_fwd_piter();
00067 p_n_faces_fwd_piter(const p_complex<D, P>& pc, unsigned n);
00069
00074 unsigned n() const;
00075 void set_n (unsigned n);
00077 };
00078
00079
00080
00081
00082
00083
00086 template <unsigned D, typename P>
00087 class p_n_faces_bkd_piter
00088
00089
00090 : public internal::p_complex_piter_base_< topo::n_face_bkd_iter<D>,
00091 p_complex<D, P>,
00092 P,
00093 p_n_faces_bkd_piter<D, P> >
00094 {
00095 typedef p_n_faces_bkd_piter<D, P> self_;
00096 typedef internal::p_complex_piter_base_< topo::n_face_bkd_iter<D>,
00097 p_complex<D, P>,
00098 P,
00099 self_ > super_;
00100
00101 public:
00104 p_n_faces_bkd_piter();
00105 p_n_faces_bkd_piter(const p_complex<D, P>& pc, unsigned n);
00107
00112 unsigned n() const;
00113 void set_n (unsigned n);
00115 };
00116
00117
00118
00119 # ifndef MLN_INCLUDE_ONLY
00120
00121
00122
00123
00124
00125 template <unsigned D, typename P>
00126 inline
00127 p_n_faces_fwd_piter<D, P>::p_n_faces_fwd_piter()
00128 {
00129 }
00130
00131 template <unsigned D, typename P>
00132 inline
00133 p_n_faces_fwd_piter<D, P>::p_n_faces_fwd_piter(const p_complex<D, P>& pc,
00134 unsigned n)
00135 : super_(pc)
00136 {
00137 mln_precondition(n <= D);
00138 set_n(n);
00139 }
00140
00141 template <unsigned D, typename P>
00142 inline
00143 unsigned
00144 p_n_faces_fwd_piter<D, P>::n() const
00145 {
00146 return this->iter_.n();
00147 }
00148
00149 template <unsigned D, typename P>
00150 inline
00151 void
00152 p_n_faces_fwd_piter<D, P>::set_n (unsigned n)
00153 {
00154 this->iter_.set_n(n);
00155 }
00156
00157
00158
00159
00160
00161
00162 template <unsigned D, typename P>
00163 inline
00164 p_n_faces_bkd_piter<D, P>::p_n_faces_bkd_piter()
00165 {
00166 }
00167
00168 template <unsigned D, typename P>
00169 inline
00170 p_n_faces_bkd_piter<D, P>::p_n_faces_bkd_piter(const p_complex<D, P>& pc,
00171 unsigned n)
00172 : super_(pc)
00173 {
00174 mln_precondition(n <= D);
00175 set_n(n);
00176 }
00177
00178 template <unsigned D, typename P>
00179 inline
00180 unsigned
00181 p_n_faces_bkd_piter<D, P>::n() const
00182 {
00183 return this->iter_.n();
00184 }
00185
00186 template <unsigned D, typename P>
00187 inline
00188 void
00189 p_n_faces_bkd_piter<D, P>::set_n (unsigned n)
00190 {
00191 this->iter_.set_n(n);
00192 }
00193
00194 # endif // ! MLN_INCLUDE_ONLY
00195
00196 }
00197
00198 #endif // ! MLN_CORE_SITE_SET_P_N_FACES_PITER_HH