linux: shared memory interface - link with librt
[supercollider.git] / HelpSource / Classes / PriorityQueue.schelp
blobcd8bb5ef13696a5fdbea81b24c74bf192bd3a4fa
1 CLASS::PriorityQueue
2 summary:: Priority queue data structure
3 categories:: Collections>Ordered
5 DESCRIPTION::
6 PriorityQueue implements a priority queue data structure, which is used to build schedulers. It allows you to put in items at some arbitrary time and pop them in
7 time order.
9 INSTANCEMETHODS::
10 private::prInternalArray
13 method::put
14 Puts the item in the queue at the given time.
16 method::topPriority
17 Returns the time of the earliest item in the queue.
19 method::pop
20 Returns the earliest item in the queue.
22 method::clear
23 Empty the queue.
25 method::isEmpty
26 Return a link::Classes/Boolean:: whether the queue is empty.
28 method::notEmpty
29 Return a link::Classes/Boolean:: whether the queue is not empty.
31 method::removeValue
32 Remove all instances of value from the queue.
35 EXAMPLES::
37 code::
39 var p;
40 p = PriorityQueue.new;
42 p.put(0.1, \a);
43 p.put(2.0, \b);
44 p.put(0.5, \c);
45 p.put(0.2, \d);
46 p.put(1.0, \e);
48 while ({ p.notEmpty },{
49         [p.topPriority, p.pop].postln;
50 });
53 p.pop.postln;
54 p.pop.postln;
55 p.pop.postln;
59 [ 0.1, a ]
60 [ 0.2, d ]
61 [ 0.5, c ]
62 [ 1, e ]
63 [ 2, b ]
64 nil
65 nil
66 nil