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