26 #ifndef MLN_CORE_SITE_SET_P_QUEUE_HH
27 # define MLN_CORE_SITE_SET_P_QUEUE_HH
41 # include <mln/core/site_set/p_array.hh>
48 template <
typename P>
class p_queue;
55 struct site_set_< p_queue<P> >
57 typedef trait::site_set::nsites::known
nsites;
58 typedef trait::site_set::bbox::unknown
bbox;
59 typedef trait::site_set::contents::growing
contents;
60 typedef trait::site_set::arity::multiple
arity;
115 void push(
const P&
p);
130 const P&
front()
const;
159 # ifndef MLN_INCLUDE_ONLY
161 template <
typename P>
167 template <
typename P>
172 mln_precondition(p.target_() ==
this);
176 mln_invariant(p.to_site() == (*this)[p.index()]);
180 template <
typename P>
188 template <
typename P>
196 template <
typename P>
204 template <
typename P>
212 template <
typename P>
217 mln_precondition(! this->is_empty());
221 template <
typename P>
226 mln_precondition(! this->is_empty());
230 template <
typename P>
235 mln_precondition(! this->is_empty());
236 P res = this->front();
241 template <
typename P>
249 template <
typename P>
254 mln_precondition(i <
nsites());
258 template <
typename P>
266 template <
typename P>
274 template <
typename P>
279 return sizeof(q_) +
nsites() *
sizeof(P);
282 # endif // ! MLN_INCLUDE_ONLY
287 #endif // ! MLN_CORE_SITE_SET_P_QUEUE_HH