27 #ifndef MLN_GEOM_PMIN_PMAX_HH
28 # define MLN_GEOM_PMIN_PMAX_HH
37 # include <mln/core/concept/site_set.hh>
38 # include <mln/core/concept/box.hh>
55 std::pair<mln_site(S), mln_site(S)>
66 pmin_pmax(
const Site_Set<S>& s, mln_site(S)& pmin, mln_site(S)& pmax);
75 std::pair<mln_site(I), mln_site(I)>
86 pmin_pmax(
const Site_Iterator<I>&
p, mln_site(I)& pmin, mln_site(I)& pmax);
90 # ifndef MLN_INCLUDE_ONLY
98 pmin_pmax(
const Site_Iterator<I>& p_, mln_site(I)& pmin, mln_site(I)& pmax)
104 mln_precondition(p.is_valid());
108 typedef mln_site(I) P;
110 for (
unsigned i = 0; i < P::dim; ++i)
113 else if (p[i] > pmax[i])
117 template <typename I>
119 std::pair<mln_site(I), mln_site(I)>
122 typedef mln_site(I) P;
136 template <
typename S>
139 pmin_pmax_(
const Site_Set<S>& s, mln_site(S)& pmin, mln_site(S)& pmax)
141 mln_piter(S) it(
exact(s));
147 template <typename B>
150 pmin_pmax_(const Box<B>& b, mln_site(B)& pmin, mln_site(B)& pmax)
152 pmin =
exact(b).pmin();
153 pmax =
exact(b).pmax();
159 template <
typename S>
162 pmin_pmax(
const Site_Set<S>& s, mln_site(S)& pmin, mln_site(S)& pmax)
165 impl::pmin_pmax_(
exact(s), pmin, pmax);
168 template <
typename S>
170 std::pair<mln_site(S), mln_site(S)>
174 typedef mln_site(S) P;
180 # endif // ! MLN_INCLUDE_ONLY
187 #endif // ! MLN_GEOM_PMIN_PMAX_HH