27 #ifndef MLN_CORE_SITE_SET_P_SET_HH
28 # define MLN_CORE_SITE_SET_P_SET_HH
35 # include <mln/core/site_set/p_array.hh>
36 # include <mln/util/set.hh>
43 template <
typename P>
class p_set;
50 struct site_set_< p_set<P> >
52 typedef trait::site_set::nsites::known
nsites;
53 typedef trait::site_set::bbox::unknown
bbox;
54 typedef trait::site_set::contents::free
contents;
55 typedef trait::site_set::arity::unique
arity;
100 bool has(
const P&
p)
const;
126 void remove(
const P&
p);
152 # ifndef MLN_INCLUDE_ONLY
154 template <
typename P>
160 template <
typename P>
168 template <
typename P>
173 mln_precondition(p.target_() ==
this);
174 if (!
has(p.index()))
176 mln_invariant(p.to_site() == (*this)[p.index()]);
180 template <
typename P>
188 template <
typename P>
196 template <
typename P>
201 return s_.nelements();
204 template <
typename P>
209 return s_.is_empty();
212 template <
typename P>
220 template <
typename P>
228 template <
typename P>
236 template <
typename P>
241 mln_precondition(i <
nsites());
245 template <
typename P>
250 return s_.memory_size();
253 template <
typename P>
255 const std::vector<P>&
258 return s_.std_vector();
261 template <
typename P>
269 # endif // ! MLN_INCLUDE_ONLY
274 #endif // ! MLN_CORE_SITE_SET_P_SET_HH