core :: RandQueue :: defaultinit
private class RandQueue[E]
super Queue[E]
var seq: SimpleCollection[E]
redef fun add(e)
do
seq.add(e)
# Reset the cache to give the new element a chance!
peek_cached = false
end
redef fun take
do
var res = peek
peek_cached = false
seq.remove(res)
return res
end
redef fun peek do
if peek_cached then return peek_cache
var res = seq.rand
peek_cache = res
peek_cached = true
return res
end
var peek_cached = false
var peek_cache: E is noinit
redef fun length do return seq.length
redef fun is_empty do return seq.is_empty
redef fun iterator do return seq.iterator
redef fun remove(e) do seq.remove(e)
end
lib/core/queue.nit:177,1--206,3