class Rinda::TupleBag::DataTupleBin

DataTupleBin is a set of domains.

Public Class Methods

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

Public Instance Methods

add(tuple) click to toggle source

Adds the tuple. @param [Array] tuple

the tuple

@return [void]

# File lib/pione/patch/rinda-patch.rb, line 236
def add(tuple)
  prepare_table(domain(tuple))
  @bin[domain(tuple)][name(tuple)] = tuple
end
delete(tuple) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 241
def delete(tuple)
  prepare_table(domain(tuple))
  @bin[domain(tuple)].delete(name(tuple))
end
delete_if() { |val| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 246
def delete_if
  if block_given?
    @bin.values.each do |table|
      table.delete_if {|_, val| yield(val)}
    end
  end
  return @bin
end
each(*args) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 296
def each(*args)
  @bin.values.map{|table| table.values}.flatten.each(*args)
end
elements() click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 228
def elements
  @bin.values.map{|val| val.values}.flatten
end
find(template) { |tuple| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 255
def find(template, &b)
  domain = domain(template)
  name = name(template)
  prepare_table(domain)

  if domain
    @bin[domain].values.each do |tuple|
      return tuple if yield(tuple)
    end
  else
    @bin.values.each do |table|
      table.values.each do |tuple|
        return tuple if yield(tuple)
      end
    end
  end
  return nil
end
find_all(template) { |tuple| ... } click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 274
def find_all(template, &b)
  domain = domain(template)
  name = name(template)
  prepare_table(domain)

  if domain
    if block_given?
      return @bin[domain].values.select {|tuple| yield(tuple)}
    else
      return @bin[domain].values
    end
  else
    if block_given?
      return @bin.values.map{|table| table.values}.flatten.select{|tuple|
        yield(tuple)
      }
    else
      return @bin.values.map{|table| table.values}.flatten
    end
  end
end

Private Instance Methods

domain(tuple) click to toggle source

Returns the domain.

# File lib/pione/patch/rinda-patch.rb, line 309
def domain(tuple)
  return tuple.value[1]
end
name(tuple) click to toggle source

Returns the name.

# File lib/pione/patch/rinda-patch.rb, line 314
def name(tuple)
  return tuple.value[2]
end
prepare_table(domain) click to toggle source
# File lib/pione/patch/rinda-patch.rb, line 302
def prepare_table(domain)
  if domain
    @bin[domain] = {} unless @bin[domain]
  end
end