Changeset

7438:6bf4c227c8f3

Merge 0.10->trunk
author Matthew Wild <mwild1@gmail.com>
date Sun, 22 May 2016 20:07:20 +0100
parents 7437:ff74188488ab (current diff) 7435:8603b16e85c7 (diff)
children 7441:df1be36f87b1
files
diffstat 1 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/util/cache.lua	Sun May 22 20:06:51 2016 +0100
+++ b/util/cache.lua	Sun May 22 20:07:20 2016 +0100
@@ -116,6 +116,28 @@
 	return tail.key, tail.value;
 end
 
+function cache_methods:table()
+	if not self.proxy_table then
+		self.proxy_table = setmetatable({}, {
+			__index = function (t, k)
+				return self:get(k);
+			end;
+			__newindex = function (t, k, v)
+				if not self:set(k, v) then
+					error("failed to insert key into cache - full");
+				end
+			end;
+			__pairs = function (t)
+				return self:items();
+			end;
+			__len = function (t)
+				return self:count();
+			end;
+		});
+	end
+	return self.proxy_table;
+end
+
 local function new(size, on_evict)
 	size = assert(tonumber(size), "cache size must be a number");
 	size = math.floor(size);