Parent

Files

Class/Module Index [+]

Quicksearch

Concurrent::Collection::RubyNonConcurrentPriorityQueue

@!macro priority_queue

@!visibility private @!macro internal_implementation_note

Public Class Methods

from_list(list, opts = {}) click to toggle source

@!macro priority_queue_method_from_list

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 89
def self.from_list(list, opts = {})
  queue = new(opts)
  list.each{|item| queue << item }
  queue
end
new(opts = {}) click to toggle source

@!macro priority_queue_method_initialize

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 11
def initialize(opts = {})
  order = opts.fetch(:order, :max)
  @comparator = [:min, :low].include?(order) ? -1 : 1
  clear
end

Public Instance Methods

<<(item) click to toggle source
Alias for: push
clear() click to toggle source

@!macro priority_queue_method_clear

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 18
def clear
  @queue = [nil]
  @length = 0
  true
end
delete(item) click to toggle source

@!macro priority_queue_method_delete

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 25
def delete(item)
  return false if empty?
  original_length = @length
  k = 1
  while k <= @length
    if @queue[k] == item
      swap(k, @length)
      @length -= 1
      sink(k)
      @queue.pop
    else
      k += 1
    end
  end
  @length != original_length
end
deq() click to toggle source
Alias for: pop
empty?() click to toggle source

@!macro priority_queue_method_empty

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 43
def empty?
  size == 0
end
enq(item) click to toggle source
Alias for: push
has_priority?(item) click to toggle source
Alias for: include?
include?(item) click to toggle source

@!macro priority_queue_method_include

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 48
def include?(item)
  @queue.include?(item)
end
Also aliased as: has_priority?
length() click to toggle source

@!macro priority_queue_method_length

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 54
def length
  @length
end
Also aliased as: size
peek() click to toggle source

@!macro priority_queue_method_peek

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 60
def peek
  empty? ? nil : @queue[1]
end
pop() click to toggle source

@!macro priority_queue_method_pop

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 65
def pop
  return nil if empty?
  max = @queue[1]
  swap(1, @length)
  @length -= 1
  sink(1)
  @queue.pop
  max
end
Also aliased as: deq, shift
push(item) click to toggle source

@!macro priority_queue_method_push

# File lib/concurrent/collection/ruby_non_concurrent_priority_queue.rb, line 78
def push(item)
  raise ArgumentError.new('cannot enqueue nil') if item.nil?
  @length += 1
  @queue << item
  swim(@length)
  true
end
Also aliased as: <<, enq
shift() click to toggle source
Alias for: pop
size() click to toggle source
Alias for: length

[Validate]

Generated with the Darkfish Rdoc Generator 2.