File: PriorityQueue.schelp

package info (click to toggle)
supercollider 1%3A3.13.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 80,292 kB
  • sloc: cpp: 476,363; lisp: 84,680; ansic: 77,685; sh: 25,509; python: 7,909; makefile: 3,440; perl: 1,964; javascript: 974; xml: 826; java: 677; yacc: 314; lex: 175; objc: 152; ruby: 136
file content (67 lines) | stat: -rw-r--r-- 1,082 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
CLASS::PriorityQueue
summary:: Priority queue data structure
categories:: Collections>Ordered

DESCRIPTION::
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
time order.

INSTANCEMETHODS::
private::prInternalArray


method::put
Puts the item in the queue at the given time.

method::topPriority
Returns the time of the earliest item in the queue.

method::pop
Returns the earliest item in the queue.

method::clear
Empty the queue.

method::isEmpty
Return a link::Classes/Boolean:: whether the queue is empty.

method::notEmpty
Return a link::Classes/Boolean:: whether the queue is not empty.

method::removeValue
Remove all instances of value from the queue.


EXAMPLES::

code::
(
var p;
p = PriorityQueue.new;

p.put(0.1, \a);
p.put(2.0, \b);
p.put(0.5, \c);
p.put(0.2, \d);
p.put(1.0, \e);

while ({ p.notEmpty },{
	[p.topPriority, p.pop].postln;
});


p.pop.postln;
p.pop.postln;
p.pop.postln;

)

[ 0.1, a ]
[ 0.2, d ]
[ 0.5, c ]
[ 1, e ]
[ 2, b ]
nil
nil
nil
::