Merge 0.10->trunk
authorMatthew Wild <mwild1@gmail.com>
Sun, 22 May 2016 20:07:20 +0100
changeset 7441 6bf4c227c8f3
parent 7440 ff74188488ab (current diff)
parent 7438 8603b16e85c7 (diff)
child 7444 df1be36f87b1
Merge 0.10->trunk
--- 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);