util.set: Add is_set() to test if an object is a set 0.11
authorMatthew Wild <mwild1@gmail.com>
Mon, 10 May 2021 16:41:56 +0100
branch0.11
changeset 11546 c358537c0878
parent 11545 13b84682518e
child 11547 63fd4c8465fb
util.set: Add is_set() to test if an object is a set
util/set.lua
--- a/util/set.lua	Mon May 10 16:24:54 2021 +0100
+++ b/util/set.lua	Mon May 10 16:41:56 2021 +0100
@@ -6,8 +6,8 @@
 -- COPYING file in the source package for more information.
 --
 
-local ipairs, pairs, setmetatable, next, tostring =
-      ipairs, pairs, setmetatable, next, tostring;
+local ipairs, pairs, getmetatable, setmetatable, next, tostring =
+      ipairs, pairs, getmetatable, setmetatable, next, tostring;
 local t_concat = table.concat;
 
 local _ENV = nil;
@@ -31,6 +31,11 @@
 	return a;
 end
 
+local function is_set(o)
+	local mt = getmetatable(o);
+	return mt == set_mt;
+end
+
 local function new(list)
 	local items = setmetatable({}, items_mt);
 	local set = { _items = items };
@@ -171,6 +176,7 @@
 
 return {
 	new = new;
+	is_set = is_set;
 	union = union;
 	difference = difference;
 	intersection = intersection;