class PIM::LRUCache

Constants

DEFAULT_MAX_SIZE

Attributes

max_size[R]

Public Class Methods

new(max_size = DEFAULT_MAX_SIZE) click to toggle source
# File pim.rb, line 3040
def initialize max_size = DEFAULT_MAX_SIZE
  @max_size = max_size
  @data = {}
end

Public Instance Methods

[](key) click to toggle source
# File pim.rb, line 3066
def [](key)
  found = true
  value = @data.delete(key) { found = false }
  if found
    @data[key] = value
  else
    nil
  end
end
[]=(key, val) click to toggle source
# File pim.rb, line 3076
def []=(key, val)
  @data.delete key
  @data[key] = val
  @data.shift if @data.length > @max_size
  val
end
clear() click to toggle source
# File pim.rb, line 3109
def clear
  @data.clear
end
count() click to toggle source
# File pim.rb, line 3113
def count
  @data.count
end
delete(k) click to toggle source
# File pim.rb, line 3105
def delete k
  @data.delete k
end
each() { |pair| ... } click to toggle source
# File pim.rb, line 3087
def each
  @data.to_a.reverse!.each do |pair|
    yield pair
  end
end
ensure_capacity(size) click to toggle source

Grow max_size to at least size entries. Does not shrink the cache.

# File pim.rb, line 3046
def ensure_capacity size
  size = size.ceil if size.is_a?(Float)
  raise ArgumentError.new(:ensure_capacity) if size < 1
  return @max_size if size <= @max_size
  self.max_size = size
end
Also aliased as: min_size=
include?(key) click to toggle source
# File pim.rb, line 3083
def include? key
  @data.include? key
end
max_size=(size) click to toggle source
# File pim.rb, line 3058
def max_size= size
  size = size.ceil if size.is_a?(Float)
  raise ArgumentError.new(:max_size) if size < 1
  @max_size = size
  @data.shift while @data.size > @max_size
  @max_size
end
min_size=(size)

Prefer {#ensure_capacity}. Kept for backward compatibility with data models that may still call min_size=. @deprecated Use {#ensure_capacity} instead.

Alias for: ensure_capacity
to_a() click to toggle source
# File pim.rb, line 3093
def to_a
  @data.to_a.reverse!
end
to_h() click to toggle source
# File pim.rb, line 3097
def to_h
  Hash[to_a]
end
to_s() click to toggle source
# File pim.rb, line 3101
def to_s
  to_h.to_s
end