Class: TypeProf::Utils::WorkList
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/typeprof/utils.rb |
Class Method Summary
- .new ⇒ WorkList constructor
Instance Attribute Summary
- #empty? ⇒ Boolean readonly
Instance Method Summary
Constructor Details
.new ⇒ WorkList
# File 'lib/typeprof/utils.rb', line 144
def initialize @heap = [] @set = MutableSet.new end
Instance Attribute Details
#empty? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/typeprof/utils.rb', line 186
def empty? @heap.empty? end
Instance Method Details
#deletemin
[ GitHub ]# File 'lib/typeprof/utils.rb', line 163
def deletemin return nil if @heap.empty? val = @heap[0][1] @set.delete(val) if @heap.size == 1 @heap.pop return val end @heap[0] = @heap.pop i = 0 while (j = i * 2 + 1) < @heap.size j += 1 if j + 1 < @heap.size && (@heap[j][0] <=> @heap[j + 1][0]) >= 0 break if (@heap[i][0] <=> @heap[j][0]) < 0 @heap[i], @heap[j] = @heap[j], @heap[i] i = j end return val end
#insert(key, val)
[ GitHub ]# File 'lib/typeprof/utils.rb', line 149
def insert(key, val) i = @heap.size @heap << [key, val] while i > 0 && (@heap[i][0] <=> @heap[i / 2][0]) < 0 @heap[i], @heap[i / 2] = @heap[i / 2], @heap[i] i /= 2 end @set << val end
#inspect
[ GitHub ]# File 'lib/typeprof/utils.rb', line 190
def inspect "#<#{ self.class }:#{ @heap.map {|_key, val| val }.inspect }>" end
#member?(val) ⇒ Boolean
# File 'lib/typeprof/utils.rb', line 159
def member?(val) @set[val] end
#size
[ GitHub ]# File 'lib/typeprof/utils.rb', line 182
def size @heap.size end