
* mln/topo/face.hh (mln::topo::face_handle<N, D>): Rename as... (mln::topo::n_face<N, D>): ...this. Adjust. * mln/topo/complex.hh, * mln/topo/faces_iter.hh, * tests/topo/complex.cc: Adjust. * mln/core/faces_psite.hh, * tests/core/image/complex_image.cc: Likewise. --- milena/ChangeLog | 16 +++++ milena/mln/core/faces_psite.hh | 10 ++-- milena/mln/topo/complex.hh | 28 ++++---- milena/mln/topo/face.hh | 102 +++++++++++++++--------------- milena/mln/topo/faces_iter.hh | 12 ++-- milena/tests/core/image/complex_image.cc | 22 +++--- milena/tests/topo/complex.cc | 28 ++++---- 7 files changed, 117 insertions(+), 101 deletions(-) diff --git a/milena/ChangeLog b/milena/ChangeLog index fb69e22..dfdd15b 100644 --- a/milena/ChangeLog +++ b/milena/ChangeLog @@ -1,5 +1,21 @@ 2008-09-26 Roland Levillain <roland@lrde.epita.fr> + Rename mln::topo::face_handle as mln::topo::n_face. + + * mln/topo/face.hh (mln::topo::face_handle<N, D>): Rename as... + (mln::topo::n_face<N, D>): ...this. + Adjust. + * mln/topo/complex.hh, + * mln/topo/faces_iter.hh, + * tests/topo/complex.cc: + Adjust. + + * mln/core/faces_psite.hh, + * tests/core/image/complex_image.cc: + Likewise. + +2008-09-26 Roland Levillain <roland@lrde.epita.fr> + Rename mln::topo::face as mln::topo::face_data. * mln/topo/face.hh (mln::topo::face<N, D>): Rename as... diff --git a/milena/mln/core/faces_psite.hh b/milena/mln/core/faces_psite.hh index dd213b6..0e4d635 100644 --- a/milena/mln/core/faces_psite.hh +++ b/milena/mln/core/faces_psite.hh @@ -66,7 +66,7 @@ namespace mln /// \{ faces_psite(); /// \pre pf.cplx() == face.cplx(). - faces_psite(const p_faces<N, D, P>& pf, const topo::face_handle<N, D>& face); + faces_psite(const p_faces<N, D, P>& pf, const topo::n_face<N, D>& face); faces_psite(const p_faces<N, D, P>& pf, unsigned face_id); /// \} @@ -100,7 +100,7 @@ namespace mln /// Face handle manipulators. /// \{ /// Return the face handle of this point site. - topo::face_handle<N, D> face() const; + topo::n_face<N, D> face() const; /// Return the dimension of the face of this psite. unsigned n() const; @@ -134,7 +134,7 @@ namespace mln /// The mln::p_faces this point site belongs to. const target* pf_; /// The handle of the face this psite is pointing towards. - topo::face_handle<N, D> face_; + topo::n_face<N, D> face_; /// \} }; @@ -199,7 +199,7 @@ namespace mln template <unsigned N, unsigned D, typename P> inline faces_psite<N, D, P>::faces_psite(const p_faces<N, D, P>& pf, - const topo::face_handle<N, D>& face) + const topo::n_face<N, D>& face) : pf_(&pf), face_(face) { @@ -285,7 +285,7 @@ namespace mln template <unsigned N, unsigned D, typename P> inline - topo::face_handle<N, D> + topo::n_face<N, D> faces_psite<N, D, P>::face() const { return face_; diff --git a/milena/mln/topo/complex.hh b/milena/mln/topo/complex.hh index 52c43a9..021e788 100644 --- a/milena/mln/topo/complex.hh +++ b/milena/mln/topo/complex.hh @@ -98,14 +98,14 @@ namespace mln complex(); /// \brief Add a 0-face to the complex. - face_handle<0u, D> add_face(); + n_face<0u, D> add_face(); /// \brief Add a \p (N+1)-face to the complex (with \p N >= 0). /// /// \param adjacent_faces The (\p N-1)-faces adjacent to the new /// \p N-face. template <unsigned N> - face_handle<N + 1, D> add_face(const faces_set<N, D>& adjacent_faces); + n_face<N + 1, D> add_face(const faces_set<N, D>& adjacent_faces); /// \} /// \brief Static manipulators. @@ -152,7 +152,7 @@ namespace mln /// Accessors. /// \{ - template <unsigned N, unsigned D_> friend class face_handle; + template <unsigned N, unsigned D_> friend class n_face; template <unsigned D_> friend class any_face_handle; template <unsigned N> @@ -195,8 +195,8 @@ namespace mln /// /// \pre \p N must be lower or equal to \p D. template <unsigned N> - void connect_(const face_handle<N, D>& f1, - const face_handle<N + 1, D>& f2); + void connect_(const n_face<N, D>& f1, + const n_face<N + 1, D>& f2); }; @@ -406,7 +406,7 @@ namespace mln } template <unsigned D> - face_handle<0u, D> + n_face<0u, D> complex<D>::add_face() { /* FIXME: This is not thread-proof (these two lines should @@ -414,15 +414,15 @@ namespace mln data_->internal::faces_set_mixin<0u, D>::faces_.push_back(face_data<0u, D>()); unsigned id = nfaces<0u>() - 1; - return face_handle<0u, D>(*this, id); + return n_face<0u, D>(*this, id); } template <unsigned D> template <unsigned N> - face_handle<N + 1, D> + n_face<N + 1, D> complex<D>::add_face(const faces_set<N, D>& adjacent_faces) { - typedef typename std::vector< face_handle<N, D> >::const_iterator iter_t; + typedef typename std::vector< n_face<N, D> >::const_iterator iter_t; // Ensure ADJACENT_FACES are already part of the complex. if (!HAS_NDEBUG) @@ -439,7 +439,7 @@ namespace mln data_->internal::faces_set_mixin<N + 1, D>::faces_.push_back(f); unsigned id = nfaces<N + 1>() - 1; - face_handle<N + 1, D> fh(*this, id); + n_face<N + 1, D> fh(*this, id); // Connect F and its ADJACENT_FACES. for (iter_t a = adjacent_faces.faces().begin(); a != adjacent_faces.faces().end(); ++a) @@ -551,8 +551,8 @@ namespace mln template <unsigned D> template <unsigned N> void - complex<D>::connect_(const face_handle<N, D>& f1, - const face_handle<N + 1, D>& f2) + complex<D>::connect_(const n_face<N, D>& f1, + const n_face<N + 1, D>& f2) { // Ensure N is compatible with D. metal::bool_< N <= D >::check(); @@ -703,7 +703,7 @@ namespace mln lower_dim_faces_set_mixin<N, D>::print(std::ostream& ostr, const face_data<N, D>& f) const { - for (typename std::vector< face_handle<N - 1, D> >::const_iterator l = + for (typename std::vector< n_face<N - 1, D> >::const_iterator l = f.lower_dim_faces_.begin(); l != f.lower_dim_faces_.end(); ++l) ostr << l->face_id() << " "; } @@ -713,7 +713,7 @@ namespace mln higher_dim_faces_set_mixin<N, D>::print(std::ostream& ostr, const face_data<N, D>& f) const { - for (typename std::vector< face_handle<N + 1, D> >::const_iterator h = + for (typename std::vector< n_face<N + 1, D> >::const_iterator h = f.higher_dim_faces_.begin(); h != f.higher_dim_faces_.end(); ++h) ostr << h->face_id() << " "; } diff --git a/milena/mln/topo/face.hh b/milena/mln/topo/face.hh index 689f7e6..4aab366 100644 --- a/milena/mln/topo/face.hh +++ b/milena/mln/topo/face.hh @@ -69,7 +69,7 @@ namespace mln } // Forward declarations (internal). - template <unsigned N, unsigned D> class face_handle; + template <unsigned N, unsigned D> class n_face; namespace internal { template <unsigned N, unsigned D> class lower_dim_faces_data_mixin; @@ -121,20 +121,20 @@ namespace mln class lower_dim_faces_data_mixin { public: - void connect_lower_dim_face (const face_handle<N - 1, D>& f); + void connect_lower_dim_face (const n_face<N - 1, D>& f); private: friend class mln::topo::internal::lower_dim_faces_set_mixin<N, D>; - std::vector< face_handle<N - 1, D> > lower_dim_faces_; + std::vector< n_face<N - 1, D> > lower_dim_faces_; }; template <unsigned N, unsigned D> class higher_dim_faces_data_mixin { public: - void connect_higher_dim_face(const face_handle<N + 1, D>& f); + void connect_higher_dim_face(const n_face<N + 1, D>& f); private: friend class mln::topo::internal::higher_dim_faces_set_mixin<N, D>; - std::vector< face_handle<N + 1, D> > higher_dim_faces_; + std::vector< n_face<N + 1, D> > higher_dim_faces_; }; /// \} @@ -142,26 +142,26 @@ namespace mln - /*--------------. - | Face handle. | - `--------------*/ + /*---------. + | n-Face. | + `---------*/ - // Face handle in a complex. + // \p N-face handle in a complex. template <unsigned N, unsigned D> - struct face_handle + struct n_face { // The type of the complex this handle points to. typedef complex<D> complex_type; /// Build a non-initialized face handle. - face_handle(); + n_face(); /// Build a face handle from \a complex and \a face_id. - face_handle(complex<D>& complex, unsigned face_id); + n_face(complex<D>& complex, unsigned face_id); /// Copy and assignment. /// \{ - face_handle(const face_handle<N, D>& rhs); - face_handle<N, D>& operator=(const face_handle<N, D>& rhs); + n_face(const n_face<N, D>& rhs); + n_face<N, D>& operator=(const n_face<N, D>& rhs); /// \} /// Is this handle valid? @@ -192,7 +192,7 @@ namespace mln private: /// \brief The complex the face belongs to. /// - /// A const face_handle can be used to modify a complex. + /// A const mln::topo::n_face can be used to modify a complex. mutable complex<D>* cplx_; /// \brief The id of the face. // FIXME: Rename as `id_'? @@ -202,11 +202,11 @@ namespace mln /// Create a handle for \p N-face of a \p D-complex. template <unsigned N, unsigned D> - face_handle<N, D> - make_face_handle(const complex<D>& c, unsigned face_id); + n_face<N, D> + make_n_face(const complex<D>& c, unsigned face_id); - /// Comparison of two instances of mln::topo::face_handle. + /// Comparison of two instances of mln::topo::n_face. /// \{ /// \brief Is \a lhs equal to \a rhs? /// @@ -214,7 +214,7 @@ namespace mln /// mln::topo::complex. template <unsigned N, unsigned D> bool - operator==(const face_handle<N, D>& lhs, const face_handle<N, D>& rhs); + operator==(const n_face<N, D>& lhs, const n_face<N, D>& rhs); /// \brief Is \a lhs ``less'' than \a rhs? /// @@ -224,7 +224,7 @@ namespace mln /// mln::topo::complex. template <unsigned N, unsigned D> bool - operator< (const face_handle<N, D>& lhs, const face_handle<N, D>& rhs); + operator< (const n_face<N, D>& lhs, const n_face<N, D>& rhs); /// \} @@ -237,20 +237,20 @@ namespace mln class faces_set { public: - void add(const face_handle<N, D>& f); + void add(const n_face<N, D>& f); /// \brief Accessors. /// /// Return the set of handles. /// \{ - const std::vector< face_handle<N, D> >& faces() const; + const std::vector< n_face<N, D> >& faces() const; /// \} private: friend class complex<D>; // FIXME: Rename this as `handles_'? - std::vector< face_handle<N, D> > faces_; + std::vector< n_face<N, D> > faces_; }; @@ -258,11 +258,11 @@ namespace mln /// \{ template <unsigned N, unsigned D> faces_set<N, D> - operator+(const face_handle<N, D>& f1, const face_handle<N, D>& f2); + operator+(const n_face<N, D>& f1, const n_face<N, D>& f2); template <unsigned N, unsigned D> faces_set<N, D> - operator+(const faces_set<N, D>& fs, const face_handle<N, D>& f); + operator+(const faces_set<N, D>& fs, const n_face<N, D>& f); /// \} @@ -284,7 +284,7 @@ namespace mln /// Build a face handle from a face_handle. template <unsigned N> - any_face_handle(const face_handle<N, D>& f); + any_face_handle(const n_face<N, D>& f); /// Copy and assignment. /// \{ @@ -369,7 +369,7 @@ namespace mln template <unsigned N, unsigned D> inline void - lower_dim_faces_data_mixin<N, D>::connect_lower_dim_face(const face_handle<N - 1, D>& f) + lower_dim_faces_data_mixin<N, D>::connect_lower_dim_face(const n_face<N - 1, D>& f) { lower_dim_faces_.push_back(f); } @@ -377,7 +377,7 @@ namespace mln template <unsigned N, unsigned D> inline void - higher_dim_faces_data_mixin<N, D>::connect_higher_dim_face(const face_handle<N + 1, D>& f) + higher_dim_faces_data_mixin<N, D>::connect_higher_dim_face(const n_face<N + 1, D>& f) { higher_dim_faces_.push_back(f); } @@ -391,7 +391,7 @@ namespace mln template <unsigned N, unsigned D> inline - face_handle<N, D>::face_handle() + n_face<N, D>::n_face() : cplx_(0), face_id_(std::numeric_limits<unsigned>::max()) { // Ensure N is compatible with D. @@ -400,7 +400,7 @@ namespace mln template <unsigned N, unsigned D> inline - face_handle<N, D>::face_handle(complex<D>& c, unsigned face_id) + n_face<N, D>::n_face(complex<D>& c, unsigned face_id) : cplx_(&c), face_id_(face_id) { // Ensure N is compatible with D. @@ -409,7 +409,7 @@ namespace mln template <unsigned N, unsigned D> inline - face_handle<N, D>::face_handle(const face_handle<N, D>& rhs) + n_face<N, D>::n_face(const n_face<N, D>& rhs) : cplx_(rhs.cplx_), face_id_(rhs.face_id_) { // Ensure N is compatible with D. @@ -418,8 +418,8 @@ namespace mln template <unsigned N, unsigned D> inline - face_handle<N, D>& - face_handle<N, D>::operator=(const face_handle<N, D>& rhs) + n_face<N, D>& + n_face<N, D>::operator=(const n_face<N, D>& rhs) { if (&rhs != this) { @@ -432,7 +432,7 @@ namespace mln template <unsigned N, unsigned D> inline bool - face_handle<N, D>::is_valid() const + n_face<N, D>::is_valid() const { return cplx_ != 0 && face_id_ < cplx_->template nfaces<N>(); } @@ -440,7 +440,7 @@ namespace mln template <unsigned N, unsigned D> inline void - face_handle<N, D>::invalidate() + n_face<N, D>::invalidate() { set_face_id(std::numeric_limits<unsigned>::max()); } @@ -448,7 +448,7 @@ namespace mln template <unsigned N, unsigned D> inline complex<D>& - face_handle<N, D>::cplx() const + n_face<N, D>::cplx() const { mln_precondition(cplx_); return *cplx_; @@ -457,7 +457,7 @@ namespace mln template <unsigned N, unsigned D> inline unsigned - face_handle<N, D>::n() const + n_face<N, D>::n() const { return N; } @@ -465,7 +465,7 @@ namespace mln template <unsigned N, unsigned D> inline unsigned - face_handle<N, D>::face_id() const + n_face<N, D>::face_id() const { return face_id_; } @@ -473,7 +473,7 @@ namespace mln template <unsigned N, unsigned D> inline void - face_handle<N, D>::set_cplx(complex<D>& cplx) + n_face<N, D>::set_cplx(complex<D>& cplx) { cplx_ = &cplx; } @@ -481,7 +481,7 @@ namespace mln template <unsigned N, unsigned D> inline void - face_handle<N, D>::set_face_id(unsigned face_id) + n_face<N, D>::set_face_id(unsigned face_id) { face_id_ = face_id; } @@ -489,7 +489,7 @@ namespace mln template <unsigned N, unsigned D> inline face_data<N, D>& - face_handle<N, D>::face_data() const + n_face<N, D>::face_data() const { mln_precondition(is_valid()); return cplx_->template face_data_<N>(face_id_); @@ -498,17 +498,17 @@ namespace mln template <unsigned N, unsigned D> inline - face_handle<N, D> - make_face_handle(const complex<D>& c, unsigned face_id) + n_face<N, D> + make_n_face(const complex<D>& c, unsigned face_id) { - return face_handle<N, D>(&c, face_id); + return n_face<N, D>(&c, face_id); } template <unsigned N, unsigned D> inline bool - operator==(const face_handle<N, D>& lhs, const face_handle<N, D>& rhs) + operator==(const n_face<N, D>& lhs, const n_face<N, D>& rhs) { // Ensure LHS and RHS belong to the same complex. mln_precondition(&lhs.face.cplx() == &rhs.face.cplx()); @@ -518,7 +518,7 @@ namespace mln template <unsigned N, unsigned D> inline bool - operator< (const face_handle<N, D>& lhs, const face_handle<N, D>& rhs) + operator< (const n_face<N, D>& lhs, const n_face<N, D>& rhs) { // Ensure LHS and RHS belong to the same complex. mln_precondition(&lhs.face.cplx() == &rhs.face.cplx()); @@ -533,7 +533,7 @@ namespace mln template <unsigned N, unsigned D> inline void - faces_set<N, D>::add(const face_handle<N, D>& f) + faces_set<N, D>::add(const n_face<N, D>& f) { // Check consistency. if (!faces_.empty()) @@ -543,7 +543,7 @@ namespace mln template <unsigned N, unsigned D> inline - const std::vector< face_handle<N, D> >& + const std::vector< n_face<N, D> >& faces_set<N, D>::faces() const { return faces_; @@ -553,7 +553,7 @@ namespace mln template <unsigned N, unsigned D> inline faces_set<N, D> - operator+(const face_handle<N, D>& f1, const face_handle<N, D>& f2) + operator+(const n_face<N, D>& f1, const n_face<N, D>& f2) { faces_set<N, D> fs; fs.add(f1); @@ -564,7 +564,7 @@ namespace mln template <unsigned N, unsigned D> inline faces_set<N, D> - operator+(const faces_set<N, D>& fs, const face_handle<N, D>& f) + operator+(const faces_set<N, D>& fs, const n_face<N, D>& f) { faces_set<N, D> fs2(fs); fs2.add(f); @@ -598,7 +598,7 @@ namespace mln template <unsigned D> template <unsigned N> inline - any_face_handle<D>::any_face_handle(const face_handle<N, D>& f) + any_face_handle<D>::any_face_handle(const n_face<N, D>& f) : cplx_(&f.cplx()), n_(N), face_id_(f.face_id()) { // Ensure N is compatible with D. diff --git a/milena/mln/topo/faces_iter.hh b/milena/mln/topo/faces_iter.hh index 8f444c7..1ad756b 100644 --- a/milena/mln/topo/faces_iter.hh +++ b/milena/mln/topo/faces_iter.hh @@ -50,12 +50,12 @@ namespace mln /// \arg \p D The dimension of the complex this iterator belongs to. template <unsigned N, unsigned D> class faces_fwd_iter_ - : public internal::complex_iter_base_< face_handle<N, D>, + : public internal::complex_iter_base_< n_face<N, D>, faces_fwd_iter_<N, D> > { public: /// Type of associated face. - typedef face_handle<N, D> face; + typedef n_face<N, D> face; private: typedef faces_fwd_iter_<N, D> self_; @@ -96,12 +96,12 @@ namespace mln /// \arg \p D The dimension of the complex this iterator belongs to. template <unsigned N, unsigned D> class faces_bkd_iter_ - : public internal::complex_iter_base_< face_handle<N, D>, + : public internal::complex_iter_base_< n_face<N, D>, faces_bkd_iter_<N, D> > { public: /// Type of associated face. - typedef face_handle<N, D> face; + typedef n_face<N, D> face; private: typedef faces_bkd_iter_<N, D> self_; @@ -176,7 +176,7 @@ namespace mln { unsigned face_id = face_.face_id(); if (face_id + 1 < face_.cplx().template nfaces<N>()) - /* FIXME: Provide accessor face_handle::n() returning + /* FIXME: Provide accessor n_face::n() returning a mutable reference? This way, we could just write ++face_.face_id(); @@ -230,7 +230,7 @@ namespace mln { unsigned face_id = face_.face_id(); if (face_id > 0) - /* FIXME: Provide accessor face_handle::n() returning + /* FIXME: Provide accessor n_face::n() returning a mutable reference? This way, we could just write ++face_.face_id(); diff --git a/milena/tests/core/image/complex_image.cc b/milena/tests/core/image/complex_image.cc index 3b40fba..b8e4c8a 100644 --- a/milena/tests/core/image/complex_image.cc +++ b/milena/tests/core/image/complex_image.cc @@ -68,21 +68,21 @@ int main() topo::complex<D> c; // 0-faces (points). - topo::face_handle<0, D> v0 = c.add_face(); - topo::face_handle<0, D> v1 = c.add_face(); - topo::face_handle<0, D> v2 = c.add_face(); - topo::face_handle<0, D> v3 = c.add_face(); + topo::n_face<0, D> v0 = c.add_face(); + topo::n_face<0, D> v1 = c.add_face(); + topo::n_face<0, D> v2 = c.add_face(); + topo::n_face<0, D> v3 = c.add_face(); // 1-faces (segments). - topo::face_handle<1, D> e0 = c.add_face(v0 + v1); - topo::face_handle<1, D> e1 = c.add_face(v0 + v2); - topo::face_handle<1, D> e2 = c.add_face(v1 + v2); - topo::face_handle<1, D> e3 = c.add_face(v0 + v3); - topo::face_handle<1, D> e4 = c.add_face(v2 + v3); + topo::n_face<1, D> e0 = c.add_face(v0 + v1); + topo::n_face<1, D> e1 = c.add_face(v0 + v2); + topo::n_face<1, D> e2 = c.add_face(v1 + v2); + topo::n_face<1, D> e3 = c.add_face(v0 + v3); + topo::n_face<1, D> e4 = c.add_face(v2 + v3); // 2-faces (triangles). - topo::face_handle<2, D> t0 = c.add_face(e0 + e1 + e2); - topo::face_handle<2, D> t1 = c.add_face(e1 + e3 + e4); + topo::n_face<2, D> t0 = c.add_face(e0 + e1 + e2); + topo::n_face<2, D> t1 = c.add_face(e1 + e3 + e4); /*---------------------. diff --git a/milena/tests/topo/complex.cc b/milena/tests/topo/complex.cc index 43143c5..e10721f 100644 --- a/milena/tests/topo/complex.cc +++ b/milena/tests/topo/complex.cc @@ -69,21 +69,21 @@ int main() topo::complex<D> c; // 0-faces (points). - topo::face_handle<0, D> v0 = c.add_face(); - topo::face_handle<0, D> v1 = c.add_face(); - topo::face_handle<0, D> v2 = c.add_face(); - topo::face_handle<0, D> v3 = c.add_face(); + topo::n_face<0, D> v0 = c.add_face(); + topo::n_face<0, D> v1 = c.add_face(); + topo::n_face<0, D> v2 = c.add_face(); + topo::n_face<0, D> v3 = c.add_face(); // 1-faces (segments). - topo::face_handle<1, D> e0 = c.add_face(v0 + v1); - topo::face_handle<1, D> e1 = c.add_face(v0 + v2); - topo::face_handle<1, D> e2 = c.add_face(v1 + v2); - topo::face_handle<1, D> e3 = c.add_face(v0 + v3); - topo::face_handle<1, D> e4 = c.add_face(v2 + v3); + topo::n_face<1, D> e0 = c.add_face(v0 + v1); + topo::n_face<1, D> e1 = c.add_face(v0 + v2); + topo::n_face<1, D> e2 = c.add_face(v1 + v2); + topo::n_face<1, D> e3 = c.add_face(v0 + v3); + topo::n_face<1, D> e4 = c.add_face(v2 + v3); // 2-faces (triangles). - topo::face_handle<2, D> t0 = c.add_face(e0 + e1 + e2); - topo::face_handle<2, D> t1 = c.add_face(e1 + e3 + e4); + topo::n_face<2, D> t0 = c.add_face(e0 + e1 + e2); + topo::n_face<2, D> t1 = c.add_face(e1 + e3 + e4); std::cout << c << std::endl; @@ -144,7 +144,7 @@ int main() but I'm not sure. */ /* Using faces_{fwd,bkd}_iter_<N, D>, which are proxies to - face_handles<N, D>. */ + n_faces<N, D>. */ test_faces_iter<0>(c); test_faces_iter<1>(c); test_faces_iter<2>(c); @@ -189,7 +189,7 @@ int main() But first, we need to clarify (existing) names. ----------------------------------------------------------------- - Current name New name Definition + Current/old name New name Definition ----------------------------------------------------------------- complex<D> (n/a) General complex @@ -274,7 +274,7 @@ int main() ----------------------------------------------------------------- complex_faces_fwd_iter_<N, D> Iterators on N-faces, N being complex_faces_fwd_iter_<N, D> static, acting as proxies of - face_handle<N, D>'s. + n_face<N, D>'s. faces_fwd_iter_<N, D> Iterators on N-faces, N being faces_fwd_iter_<N, D> static, acting as proxies of -- 1.6.0.1