* mln/topo/internal/complex_iter_base.hh
(mln::topo::internal::complex_iter_base<F, E>::to_face): Remove.
(operator<<(std::ostream&, const complex_iter_base<F, E>&)):
Remove outdated FIXME.
(mln::topo::internal::complex_iter_base<F, E>::face_): Rename as...
(mln::topo::internal::complex_iter_base<F, E>::f_): ...this.
Adjust.
* mln/topo/face_iter.hh,
* mln/topo/n_face_iter.hh,
* mln/topo/static_n_face_iter.hh:
Adjust as well.
---
milena/ChangeLog | 16 +++++++
milena/mln/topo/face_iter.hh | 38 ++++++++--------
milena/mln/topo/internal/complex_iter_base.hh | 56 ++++++++-----------------
milena/mln/topo/n_face_iter.hh | 32 +++++++-------
milena/mln/topo/static_n_face_iter.hh | 30 +++++++-------
5 files changed, 84 insertions(+), 88 deletions(-)
diff --git a/milena/ChangeLog b/milena/ChangeLog
index 6ce4fb0..a9e0511 100644
--- a/milena/ChangeLog
+++ b/milena/ChangeLog
@@ -1,5 +1,21 @@
2008-09-30 Roland Levillain <roland(a)lrde.epita.fr>
+ Overhaul mln::topo::internal::complex_iter_base.
+
+ * mln/topo/internal/complex_iter_base.hh
+ (mln::topo::internal::complex_iter_base<F, E>::to_face): Remove.
+ (operator<<(std::ostream&, const complex_iter_base<F, E>&)):
+ Remove outdated FIXME.
+ (mln::topo::internal::complex_iter_base<F, E>::face_): Rename as...
+ (mln::topo::internal::complex_iter_base<F, E>::f_): ...this.
+ Adjust.
+ * mln/topo/face_iter.hh,
+ * mln/topo/n_face_iter.hh,
+ * mln/topo/static_n_face_iter.hh:
+ Adjust as well.
+
+2008-09-30 Roland Levillain <roland(a)lrde.epita.fr>
+
Improve accesses to adjacent faces to mln::topo::face<D>.
* mln/topo/face.hh
diff --git a/milena/mln/topo/face_iter.hh b/milena/mln/topo/face_iter.hh
index 4de87cc..a564831 100644
--- a/milena/mln/topo/face_iter.hh
+++ b/milena/mln/topo/face_iter.hh
@@ -84,7 +84,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -124,7 +124,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -156,8 +156,8 @@ namespace mln
void
face_fwd_iter<D>::start()
{
- face_.set_n(0u);
- face_.set_face_id(0u);
+ f_.set_n(0u);
+ f_.set_face_id(0u);
}
template <unsigned D>
@@ -167,27 +167,27 @@ namespace mln
{
if (is_valid())
{
- unsigned n = face_.n();
- unsigned face_id = face_.face_id();
+ unsigned n = f_.n();
+ unsigned face_id = f_.face_id();
- if (face_id + 1 < face_.cplx().nfaces(n))
+ if (face_id + 1 < f_.cplx().nfaces(n))
/* FIXME: Provide accessor face::face_id() returning
a mutable reference? This way, we could just write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id + 1);
+ f_.set_face_id(face_id + 1);
else
// Start to iterate on the faces of the next dimension if
// possible.
if (n <= D)
{
// FIXME: Same remark as above.
- face_.set_n(n + 1);
- face_.set_face_id(0u);
+ f_.set_n(n + 1);
+ f_.set_face_id(0u);
}
else
invalidate();
@@ -220,8 +220,8 @@ namespace mln
void
face_bkd_iter<D>::start()
{
- face_.set_n(D);
- face_.set_face_id(face_.cplx().template nfaces<D>() - 1);
+ f_.set_n(D);
+ f_.set_face_id(f_.cplx().template nfaces<D>() - 1);
}
template <unsigned D>
@@ -231,27 +231,27 @@ namespace mln
{
if (is_valid())
{
- unsigned n = face_.n();
- unsigned face_id = face_.face_id();
+ unsigned n = f_.n();
+ unsigned face_id = f_.face_id();
if (face_id > 0)
/* FIXME: Provide accessor face::face_id() returning
a mutable reference? This way, we could just write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id - 1);
+ f_.set_face_id(face_id - 1);
else
// Start to iterate on the faces of the previous dimension
// if it exists.
if (n > 0)
{
// FIXME: Same remark as above.
- face_.set_n(n - 1);
- face_.set_face_id(face_.cplx().nfaces(n - 1) - 1);
+ f_.set_n(n - 1);
+ f_.set_face_id(f_.cplx().nfaces(n - 1) - 1);
}
else
invalidate();
diff --git a/milena/mln/topo/internal/complex_iter_base.hh
b/milena/mln/topo/internal/complex_iter_base.hh
index dc479e2..06ffca2 100644
--- a/milena/mln/topo/internal/complex_iter_base.hh
+++ b/milena/mln/topo/internal/complex_iter_base.hh
@@ -39,6 +39,11 @@
# include <mln/core/concept/iterator.hh>
# include <mln/topo/complex.hh>
+// FIXME: Rename as something else?
+// - complex_iterator_base?
+// - complex_set_iterator_base?
+// - faces_set_iterator_base?
+
namespace mln
{
@@ -83,17 +88,15 @@ namespace mln
void invalidate();
/// \}
- /// Conversion and accessors.
+ /// Conversion.
/// \{
- /// Reference to the corresponding face handle.
- const face& to_face () const;
- /// Convert the iterator into an face handle.
- operator face() const;
+ /// Return a reference to the corresponding face handle.
+ operator const face&() const;
/// \}
protected:
/// The face handle this iterator is pointing to.
- face face_;
+ face f_;
};
@@ -124,8 +127,8 @@ namespace mln
// Ensure F and E are compatible.
mlc_equal(F, typename E::face)::check();
- face_.set_cplx(c);
- // Invalidate face_.
+ f_.set_cplx(c);
+ // Invalidate f_.
invalidate();
}
@@ -134,8 +137,8 @@ namespace mln
void
complex_iter_base<F, E>::set_cplx(complex_type& c)
{
- face_.set_cplx(c);
- // Invalidate face_.
+ f_.set_cplx(c);
+ // Invalidate f_.
invalidate();
}
@@ -144,7 +147,7 @@ namespace mln
bool
complex_iter_base<F, E>::is_valid() const
{
- return face_.is_valid();
+ return f_.is_valid();
}
template <typename F, typename E>
@@ -152,23 +155,14 @@ namespace mln
void
complex_iter_base<F, E>::invalidate()
{
- face_.invalidate();
- }
-
- template <typename F, typename E>
- inline
- const F&
- complex_iter_base<F, E>::to_face() const
- {
- return face_;
+ f_.invalidate();
}
template <typename F, typename E>
inline
- complex_iter_base<F, E>::operator F() const
+ complex_iter_base<F, E>::operator const F&() const
{
- mln_precondition(is_valid());
- return face_;
+ return f_;
}
@@ -177,21 +171,7 @@ namespace mln
std::ostream&
operator<<(std::ostream& ostr, const complex_iter_base<F, E>&
p)
{
- /* FIXME: We should use p.to_face() here, but as it lacks the
- precondition the conversion operator has, so we use the latter.
-
- We should
- - rename `to_face' as `to_face_';
- - write a new `to_face' routine checking the validity of the
- iterator;
- - have the conversion operator to face use this new `to_face'
- routine;
- - adjust former clients of `to_face'
-
- This is a general remark that applies to all iterators of
- Milena. */
- F f = p;
- return ostr << f;
+ return ostr << F(p);
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/topo/n_face_iter.hh b/milena/mln/topo/n_face_iter.hh
index c4291e2..2a499c2 100644
--- a/milena/mln/topo/n_face_iter.hh
+++ b/milena/mln/topo/n_face_iter.hh
@@ -95,7 +95,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -143,7 +143,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -177,7 +177,7 @@ namespace mln
void
n_face_fwd_iter<D>::start()
{
- face_.set_face_id(0u);
+ f_.set_face_id(0u);
}
template <unsigned D>
@@ -187,19 +187,19 @@ namespace mln
{
if (is_valid())
{
- unsigned face_id = face_.face_id();
+ unsigned face_id = f_.face_id();
// The number of faces of dimension N in cplx_.
- unsigned nn_faces = face_.cplx().nfaces(n());
+ unsigned nn_faces = f_.cplx().nfaces(n());
if (face_id + 1 < nn_faces)
/* FIXME: Provide accessor face::face_id() returning
a mutable reference? This way, we could just write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id + 1);
+ f_.set_face_id(face_id + 1);
else
invalidate();
}
@@ -210,7 +210,7 @@ namespace mln
unsigned
n_face_fwd_iter<D>::n() const
{
- return face_.n();
+ return f_.n();
}
template <unsigned D>
@@ -219,7 +219,7 @@ namespace mln
n_face_fwd_iter<D>::set_n(unsigned n)
{
mln_precondition(n <= D);
- face_.set_n(n);
+ f_.set_n(n);
}
@@ -250,8 +250,8 @@ namespace mln
void
n_face_bkd_iter<D>::start()
{
- face_.set_n(n());
- face_.set_face_id(face_.cplx().nfaces(n()) - 1);
+ f_.set_n(n());
+ f_.set_face_id(f_.cplx().nfaces(n()) - 1);
}
template <unsigned D>
@@ -261,17 +261,17 @@ namespace mln
{
if (is_valid())
{
- unsigned face_id = face_.face_id();
+ unsigned face_id = f_.face_id();
if (face_id > 0)
/* FIXME: Provide accessor face::face_id() returning
a mutable reference? This way, we could just write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id - 1);
+ f_.set_face_id(face_id - 1);
else
invalidate();
}
@@ -282,7 +282,7 @@ namespace mln
unsigned
n_face_bkd_iter<D>::n() const
{
- return face_.n();
+ return f_.n();
}
template <unsigned D>
@@ -291,7 +291,7 @@ namespace mln
n_face_bkd_iter<D>::set_n(unsigned n)
{
mln_precondition(n <= D);
- face_.set_n(n);
+ f_.set_n(n);
}
# endif // ! MLN_INCLUDE_ONLY
diff --git a/milena/mln/topo/static_n_face_iter.hh
b/milena/mln/topo/static_n_face_iter.hh
index 291b699..f29c4e4 100644
--- a/milena/mln/topo/static_n_face_iter.hh
+++ b/milena/mln/topo/static_n_face_iter.hh
@@ -81,7 +81,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -124,7 +124,7 @@ namespace mln
/// \}
private:
- using super_::face_;
+ using super_::f_;
};
@@ -142,7 +142,7 @@ namespace mln
{
// Ensure N is compatible with D.
metal::bool_< N <= D >::check();
- face_.set_n(N);
+ f_.set_n(N);
mln_postcondition(!is_valid());
}
@@ -153,7 +153,7 @@ namespace mln
{
// Ensure N is compatible with D.
metal::bool_< N <= D >::check();
- face_.set_n(N);
+ f_.set_n(N);
mln_postcondition(!is_valid());
}
@@ -162,7 +162,7 @@ namespace mln
void
static_n_face_fwd_iter<N, D>::start()
{
- face_.set_face_id(0u);
+ f_.set_face_id(0u);
}
template <unsigned N, unsigned D>
@@ -172,20 +172,20 @@ namespace mln
{
if (is_valid())
{
- unsigned face_id = face_.face_id();
+ unsigned face_id = f_.face_id();
// The number of faces of dimension N in cplx_.
- unsigned nn_faces = face_.cplx().template nfaces<N>();
+ unsigned nn_faces = f_.cplx().template nfaces<N>();
if (face_id + 1 < nn_faces)
/* FIXME: Provide accessor face::face_id()
returning a mutable reference? This way, we could just
write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id + 1);
+ f_.set_face_id(face_id + 1);
else
invalidate();
}
@@ -203,7 +203,7 @@ namespace mln
{
// Ensure N is compatible with D.
metal::bool_< N <= D >::check();
- face_.set_n(N);
+ f_.set_n(N);
mln_postcondition(!is_valid());
}
@@ -214,7 +214,7 @@ namespace mln
{
// Ensure N is compatible with D.
metal::bool_< N <= D >::check();
- face_.set_n(N);
+ f_.set_n(N);
mln_postcondition(!is_valid());
}
@@ -223,7 +223,7 @@ namespace mln
void
static_n_face_bkd_iter<N, D>::start()
{
- face_.set_face_id(face_.cplx().template nfaces<N>() - 1);
+ f_.set_face_id(f_.cplx().template nfaces<N>() - 1);
}
template <unsigned N, unsigned D>
@@ -233,18 +233,18 @@ namespace mln
{
if (is_valid())
{
- unsigned face_id = face_.face_id();
+ unsigned face_id = f_.face_id();
if (face_id > 0)
/* FIXME: Provide accessor face::face_id()
returning a mutable reference? This way, we could just
write
- ++face_.face_id();
+ ++f_.face_id();
instead of the following.
Or add {inc,add}_face_id() services. */
- face_.set_face_id(face_id - 1);
+ f_.set_face_id(face_id - 1);
else
invalidate();
}
--
1.6.0.1