27 #ifndef MLN_CORE_SITE_SET_P_FACES_HH
28 # define MLN_CORE_SITE_SET_P_FACES_HH
35 # include <mln/core/internal/site_set_base.hh>
37 # include <mln/topo/complex.hh>
39 # include <mln/core/faces_psite.hh>
43 # include <mln/core/site_set/p_faces_piter.hh>
46 # include <mln/core/site_set/p_complex.hh>
53 template <
unsigned N,
unsigned D,
typename P>
struct p_faces;
55 template <
unsigned N,
unsigned D,
typename P>
class p_faces_fwd_piter_;
56 template <
unsigned N,
unsigned D,
typename P>
class p_faces_bkd_piter_;
61 template <
unsigned N,
unsigned D,
typename P>
62 struct site_set_< p_faces<N, D, P> >
64 typedef trait::site_set::nsites::known
nsites;
66 typedef trait::site_set::bbox::unknown
bbox;
67 typedef trait::site_set::contents::fixed
contents;
68 typedef trait::site_set::arity::unique
arity;
77 template <
unsigned N,
unsigned D,
typename P>
132 bool has(const psite&
p) const;
143 topo::complex<D>&
cplx() const;
146 topo::complex<D>&
cplx();
163 mutable topo::complex<D> cplx_;
172 template <
unsigned N,
unsigned D, typename P>
185 template <
unsigned N,
unsigned D, typename P>
187 operator<=(const
p_faces<N, D, P>& lhs, const
p_faces<N, D, P>& rhs);
191 # ifndef MLN_INCLUDE_ONLY
193 template <
unsigned N,
unsigned D,
typename P>
199 metal::bool_< N <= D >::check();
202 template <
unsigned N,
unsigned D,
typename P>
208 metal::bool_< N <= D >::check();
211 template <
unsigned N,
unsigned D,
typename P>
219 template <
unsigned N,
unsigned D,
typename P>
224 return cplx_.template nfaces_of_static_dim<N>();
227 template <
unsigned N,
unsigned D,
typename P>
235 template <
unsigned N,
unsigned D,
typename P>
240 mln_precondition(is_valid());
243 (p.site_set() == *
this) &&
248 template <
unsigned N,
unsigned D,
typename P>
258 template <
unsigned N,
unsigned D,
typename P>
262 mln_precondition(is_valid());
266 template <
unsigned N,
unsigned D,
typename P>
270 mln_precondition(is_valid());
279 template <
unsigned N,
unsigned D,
typename P>
281 operator==(
const p_faces<N, D, P>& lhs,
const p_faces<N, D, P>& rhs)
285 return lhs.cplx() == rhs.cplx();
288 template <
unsigned N,
unsigned D,
typename P>
290 operator<=(const p_faces<N, D, P>& lhs,
const p_faces<N, D, P>&
rhs)
297 # endif // ! MLN_INCLUDE_ONLY
301 #endif // ! MLN_CORE_SITE_SET_P_FACES_HH