class TypeProf::Utils::Set

Attributes

tbl[R]

Public Class Methods

[](*values) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 23
def self.[](*values)
  tbl = {}
  values.each do |v|
    tbl[v] = true
  end
  new(tbl)
end
new(tbl) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 31
def initialize(tbl)
  @tbl = tbl
  @tbl.freeze
end

Public Instance Methods

add(new_val) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 52
def add(new_val)
  tbl = @tbl.dup
  tbl[new_val] = true
  Set.new(tbl)
end
each(&blk) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 36
def each(&blk)
  @tbl.each_key(&blk)
end
include?(elem) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 77
def include?(elem)
  @tbl[elem]
end
inspect() click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 71
def inspect
  s = []
  each {|v| s << v.inspect }
  "{#{ s.join(", ") }}"
end
intersection(other) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 81
def intersection(other)
  tbl = {}
  h = 0
  each do |elem|
    if other.include?(elem)
      tbl << elem
      h ^= elem.hash
    end
  end
  Set.new(tbl, h)
end
map() { |elem| ... } click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 62
def map(&blk)
  tbl = {}
  each do |elem|
    v = yield(elem)
    tbl[v] = true
  end
  Set.new(tbl)
end
size() click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 58
def size
  @tbl.size
end
sum(other) click to toggle source
# File typeprof-0.21.8/lib/typeprof/utils.rb, line 42
def sum(other)
  if @tbl.size == 0
    other
  elsif other.tbl.size == 0
    self
  else
    Set.new(@tbl.merge(other.tbl))
  end
end