Commit 393d0fc1 authored by Thierry Geraud's avatar Thierry Geraud
Browse files

Turn take_as_init as a 'template method' pattern.

	* mln/core/concept/accumulator.hh
	(take_as_init): Rename as...
	(take_as_init_): ...this.  This is default implementation.
	(take_as_init): New.  Dispatch to take_as_init_.
	Now, we have the "template method" method pattern.  It is
	cleaner since we do not have any overriding for the
	client-side method.
	(take_n_times, take_n_times_): New.
	
	* mln/accu/nil.hh,
	* mln/accu/tuple.hh,
	* mln/accu/pair.hh,
	* mln/accu/lor.hh,
	* mln/accu/sum.hh,
	* mln/accu/inf.hh,
	* mln/accu/land_basic.hh,
	* mln/accu/min.hh,
	* mln/accu/max.hh,
	* mln/accu/bbox.hh,
	* mln/accu/min_h.hh,
	* mln/accu/max_h.hh,
	* mln/accu/lor_basic.hh,
	* mln/accu/p.hh,
	* mln/accu/rms.hh,
	* mln/accu/rank_high_quant.hh,
	* mln/accu/v.hh,
	* mln/accu/rank_bool.hh,
	* mln/accu/sup.hh,
	* mln/accu/land.hh,
	* mln/morpho/attribute/sum.hh,
	* mln/morpho/attribute/count_adjacent_vertices.hh,
	* mln/morpho/attribute/sharpness.hh,
	* mln/morpho/attribute/volume.hh,
	* mln/morpho/attribute/height.hh,
	* mln/morpho/attribute/card.hh (take_as_init): Update.
	Rename as...
	(take_as_init_): ...this overriding name.
	
	* tests/accu/count.cc: Update.


git-svn-id: https://svn.lrde.epita.fr/svn/oln/trunk@3727 4aad255d-cdde-0310-9447-f3009e2ae8c0
parent 9a765fde
2009-04-29 Thierry Geraud <thierry.geraud@lrde.epita.fr>
Turn take_as_init as a 'template method' pattern.
* mln/core/concept/accumulator.hh
(take_as_init): Rename as...
(take_as_init_): ...this. This is default implementation.
(take_as_init): New. Dispatch to take_as_init_.
Now, we have the "template method" method pattern. It is
cleaner since we do not have any overriding for the
client-side method.
(take_n_times, take_n_times_): New.
* mln/accu/nil.hh,
* mln/accu/tuple.hh,
* mln/accu/pair.hh,
* mln/accu/lor.hh,
* mln/accu/sum.hh,
* mln/accu/inf.hh,
* mln/accu/land_basic.hh,
* mln/accu/min.hh,
* mln/accu/max.hh,
* mln/accu/bbox.hh,
* mln/accu/min_h.hh,
* mln/accu/max_h.hh,
* mln/accu/lor_basic.hh,
* mln/accu/p.hh,
* mln/accu/rms.hh,
* mln/accu/rank_high_quant.hh,
* mln/accu/v.hh,
* mln/accu/rank_bool.hh,
* mln/accu/sup.hh,
* mln/accu/land.hh,
* mln/morpho/attribute/sum.hh,
* mln/morpho/attribute/count_adjacent_vertices.hh,
* mln/morpho/attribute/sharpness.hh,
* mln/morpho/attribute/volume.hh,
* mln/morpho/attribute/height.hh,
* mln/morpho/attribute/card.hh (take_as_init): Update.
Rename as...
(take_as_init_): ...this overriding name.
* tests/accu/count.cc: Update.
2009-04-29 Thierry Geraud <thierry.geraud@lrde.epita.fr>
 
Start cleaning up linear gaussian filters.
......@@ -58,7 +58,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const P& p);
void take_as_init_(const P& p);
void take(const P& p);
void take(const bbox<P>& other);
void take(const box<P>& b);
......@@ -114,7 +114,7 @@ namespace mln
template <typename P>
inline
void
bbox<P>::take_as_init(const P& p)
bbox<P>::take_as_init_(const P& p)
{
b_.pmin() = p;
b_.pmax() = p;
......
......@@ -60,7 +60,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const inf<T>& other);
/// \}
......@@ -120,7 +120,7 @@ namespace mln
template <typename T>
inline
void inf<T>::take_as_init(const argument& t)
void inf<T>::take_as_init_(const argument& t)
{
t_ = t;
}
......
......@@ -55,7 +55,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const land& other);
......@@ -110,7 +110,7 @@ namespace mln
}
inline
void land::take_as_init(const argument& t)
void land::take_as_init_(const argument& t)
{
nfalse_ = t ? 0 : 1;
}
......
......@@ -57,7 +57,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const land_basic& other);
......@@ -114,7 +114,7 @@ namespace mln
}
inline
void land_basic::take_as_init(const argument& t)
void land_basic::take_as_init_(const argument& t)
{
res_ = t;
}
......
......@@ -55,7 +55,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const lor& other);
......@@ -110,7 +110,7 @@ namespace mln
}
inline
void lor::take_as_init(const argument& t)
void lor::take_as_init_(const argument& t)
{
ntrue_ = t ? 1 : 0;
}
......
......@@ -57,7 +57,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const lor_basic& other);
......@@ -114,7 +114,7 @@ namespace mln
}
inline
void lor_basic::take_as_init(const argument& t)
void lor_basic::take_as_init_(const argument& t)
{
res_ = t;
}
......
......@@ -58,7 +58,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const max<T>& other);
/// \}
......@@ -117,7 +117,7 @@ namespace mln
template <typename T>
inline
void
max<T>::take_as_init(const argument& t)
max<T>::take_as_init_(const argument& t)
{
t_ = t;
}
......
......@@ -57,7 +57,7 @@ namespace mln
/// \{
void init();
void take(const argument& t);
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const max_h<V>& other);
void untake(const argument& t);
/// \}
......@@ -131,7 +131,7 @@ namespace mln
{
if (h_.sum() == 0)
{
this->take_as_init(t);
this->take_as_init_(t);
return;
}
h_.take(t);
......@@ -232,7 +232,7 @@ namespace mln
template <typename V>
inline
void
max_h<V>::take_as_init(const argument& t)
max_h<V>::take_as_init_(const argument& t)
{
h_.take(t);
sum_ = 0;
......
......@@ -60,7 +60,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const min<T>& other);
/// \}
......@@ -119,7 +119,7 @@ namespace mln
template <typename T>
inline
void min<T>::take_as_init(const argument& t)
void min<T>::take_as_init_(const argument& t)
{
t_ = t;
}
......
......@@ -58,7 +58,7 @@ namespace mln
/// \{
void init();
void take(const argument& t);
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const min_h<V>& other);
void untake(const argument& t);
/// \}
......@@ -132,7 +132,7 @@ namespace mln
{
if (h_.sum() == 0)
{
this->take_as_init(t);
this->take_as_init_(t);
return;
}
h_.take(t);
......@@ -233,7 +233,7 @@ namespace mln
template <typename V>
inline
void
min_h<V>::take_as_init(const argument& t)
min_h<V>::take_as_init_(const argument& t)
{
h_.take(t);
sum_ = 0;
......
......@@ -58,7 +58,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument&);
void take_as_init_(const argument&);
void take(const argument&);
void take(const nil<T>&);
/// \}
......@@ -114,7 +114,7 @@ namespace mln
template <typename T>
inline
void
nil<T>::take_as_init(const argument&)
nil<T>::take_as_init_(const argument&)
{
}
......
......@@ -60,7 +60,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const p<A>& other);
/// \}
......@@ -123,9 +123,9 @@ namespace mln
template <typename A>
inline
void
p<A>::take_as_init(const argument& t)
p<A>::take_as_init_(const argument& t)
{
a_.take_as_init(t.p()); // FIXME: Generalize with "psite(t)".
a_.take_as_init_(t.p()); // FIXME: Generalize with "psite(t)".
}
template <typename A>
......
......@@ -70,7 +70,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const pair<A1,A2,T>& other);
/// \}
......@@ -135,10 +135,10 @@ namespace mln
template <typename A1, typename A2, typename T>
inline
void
pair<A1,A2,T>::take_as_init(const argument& t)
pair<A1,A2,T>::take_as_init_(const argument& t)
{
a1_.take_as_init(t);
a2_.take_as_init(t);
a1_.take_as_init_(t);
a2_.take_as_init_(t);
}
template <typename A1, typename A2, typename T>
......
......@@ -62,7 +62,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const rank<bool>& other);
void untake(const argument& t);
......@@ -105,7 +105,7 @@ namespace mln
}
inline
void rank<bool>::take_as_init(const argument& t)
void rank<bool>::take_as_init_(const argument& t)
{
nfalse_ = t ? 0 : 1;
}
......
......@@ -61,7 +61,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const rank<T>& other);
void sort();
......@@ -139,7 +139,7 @@ namespace mln
template <typename T>
inline
void rank<T>::take_as_init(const argument& t)
void rank<T>::take_as_init_(const argument& t)
{
elts_.push_back(t);
is_sorted_ = false;
......
......@@ -58,7 +58,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const T& p);
void take_as_init_(const T& p);
void take(const T& p);
void take(const rms<T,V>& other);
/// \}
......@@ -118,7 +118,7 @@ namespace mln
template <typename T, typename V>
inline
void
rms<T,V>::take_as_init(const T& t)
rms<T,V>::take_as_init_(const T& t)
{
v_ += t * t;
++count_;
......
......@@ -67,7 +67,7 @@ namespace mln
/// \{
void init();
void take(const argument& t);
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const sum<T,S>& other);
/// \}
......@@ -129,7 +129,7 @@ namespace mln
template <typename T, typename S>
inline
void sum<T,S>::take_as_init(const argument& t)
void sum<T,S>::take_as_init_(const argument& t)
{
s_ = static_cast<S>(t);
}
......
......@@ -60,7 +60,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const sup<T>& other);
/// \}
......@@ -120,7 +120,7 @@ namespace mln
template <typename T>
inline
void sup<T>::take_as_init(const argument& t)
void sup<T>::take_as_init_(const argument& t)
{
t_ = t;
}
......
......@@ -85,7 +85,7 @@ namespace mln
/// Manipulators.
/// \{
void init();
void take_as_init(const argument& t);
void take_as_init_(const argument& t);
void take(const argument& t);
void take(const tuple<A, n, BOOST_PP_ENUM_PARAMS(10, T)>& other);
/// \}
......@@ -148,10 +148,10 @@ namespace mln
tuplehelper<n - 1, T>::init(a);
}
static void take_as_init(typename T::intern& a, const typename T::argument& argument)
static void take_as_init_(typename T::intern& a, const typename T::argument& argument)
{
boost::get<n - 1>(a).take_as_init(argument);
tuplehelper<n - 1, T>::take_as_init(a, argument);
boost::get<n - 1>(a).take_as_init_(argument);
tuplehelper<n - 1, T>::take_as_init_(a, argument);
}
static void take(typename T::intern& a, const typename T::argument& argument)
......@@ -177,7 +177,7 @@ namespace mln
struct tuplehelper<0, T>
{
static void init(typename T::intern&) {}
static void take_as_init(typename T::intern&, const typename T::argument&) {}
static void take_as_init_(typename T::intern&, const typename T::argument&) {}
static void take(typename T::intern&, const typename T::argument) {}
static void take(typename T::intern&, const typename T::intern&) {}
static void to_result(const typename T::intern&, typename T::result&) {}
......@@ -202,9 +202,9 @@ namespace mln
template <typename A, unsigned n, BOOST_PP_ENUM_PARAMS(10, typename T)>
inline
void
tuple<A,n,BOOST_PP_ENUM_PARAMS(10,T) >::take_as_init(const argument& t)
tuple<A,n,BOOST_PP_ENUM_PARAMS(10,T) >::take_as_init_(const argument& t)
{
internal::tuplehelper<n, self>::take_as_init(this->a_, t);
internal::tuplehelper<n, self>::take_as_init_(this->a_, t);
}
template <typename A, unsigned n, BOOST_PP_ENUM_PARAMS(10, typename T)>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment