class Rinda::TupleBag::HashTupleBin

HashTupleBin is a hash based bin class.

Public Class Methods

new() click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 321
def initialize
  @bin = {}
end

Public Instance Methods

add(tuple) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 329
def add(tuple)
  unless @bin[key(tuple)]
    @bin[key(tuple)] = tuple
  else
    raise RedundantErrorTuple.new(tuple)
  end
end
delete(tuple) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 337
def delete(tuple)
  @bin.delete(key(tuple))
end
delete_if() { |val| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 341
def delete_if
  if block_given?
    @bin.delete_if {|_, val| yield(val)}
  end
  return @bin
end
each(*args) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 371
def each(*args)
  @bin.values.each(*args)
end
elements() click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 325
def elements
  @bin.values
end
find(template) { |tuple| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 348
def find(template, &b)
  if key(template) && @bin.has_key?(key(template))
    tuple = @bin[key(template)]
    return tuple if yield(tuple)
  else
    @bin.values.each do |tuple|
      return tuple if yield(tuple)
    end
  end
  return nil
end
find_all(template) { |tuple| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 360
def find_all(template, &b)
  if key(template) && @bin.has_key?(key(template))
    tuple = @bin[key(template)]
    return tuple if yield(tuple)
  else
    return @bin.values.find_all {|tuple|
      yield(tuple)
    }
  end
end

Private Instance Methods

key(tuple) click to toggle source

Returns the key.

# File lib/pione/patch/rinda-patch.rb, line 378
def key(tuple)
  # 0:identifier, 1:key, 2:value
  return tuple.value[1]
end