diff options
Diffstat (limited to 'awesome/lib/gears/cache.lua')
-rw-r--r-- | awesome/lib/gears/cache.lua | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/awesome/lib/gears/cache.lua b/awesome/lib/gears/cache.lua deleted file mode 100644 index dc5add5..0000000 --- a/awesome/lib/gears/cache.lua +++ /dev/null @@ -1,51 +0,0 @@ ---------------------------------------------------------------------------- --- @author Uli Schlachter --- @copyright 2015 Uli Schlachter --- @classmod gears.cache ---------------------------------------------------------------------------- - -local select = select -local setmetatable = setmetatable -local unpack = unpack or table.unpack -- luacheck: globals unpack (compatibility with Lua 5.1) - -local cache = {} - ---- Get an entry from the cache, creating it if it's missing. --- @param ... Arguments for the creation callback. These are checked against the --- cache contents for equality. --- @return The entry from the cache -function cache:get(...) - local result = self._cache - for i = 1, select("#", ...) do - local arg = select(i, ...) - local next = result[arg] - if not next then - next = {} - result[arg] = next - end - result = next - end - local ret = result._entry - if not ret then - ret = { self._creation_cb(...) } - result._entry = ret - end - return unpack(ret) -end - ---- Create a new cache object. A cache keeps some data that can be --- garbage-collected at any time, but might be useful to keep. --- @param creation_cb Callback that is used for creating missing cache entries. --- @return A new cache object. -function cache.new(creation_cb) - return setmetatable({ - _cache = setmetatable({}, { __mode = "v" }), - _creation_cb = creation_cb - }, { - __index = cache - }) -end - -return setmetatable(cache, { __call = function(_, ...) return cache.new(...) end }) - --- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80 |