Changeset

12365:af02b033bd7f

util.bit53: Support for more than 2 arguments, for compat with bit32
author Matthew Wild <mwild1@gmail.com>
date Fri, 04 Mar 2022 19:37:59 +0000
parents 12364:261ce358e436
children 12366:c640717e01ca
files util/bit53.lua
diffstat 1 files changed, 27 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/util/bit53.lua	Fri Mar 04 17:46:33 2022 +0100
+++ b/util/bit53.lua	Fri Mar 04 19:37:59 2022 +0000
@@ -1,8 +1,32 @@
 -- Only the operators needed by net.websocket.frames are provided at this point
 return {
-	band   = function (a, b) return a & b end;
-	bor    = function (a, b) return a | b end;
-	bxor   = function (a, b) return a ~ b end;
+	band   = function (a, b, ...)
+		local ret = a & b;
+		if ... then
+			for i = 1, select("#", ...) do
+				ret = ret & (select(i, ...));
+			end
+		end
+		return ret;
+	end;
+	bor    = function (a, b, ...)
+		local ret = a | b;
+		if ... then
+			for i = 1, select("#", ...) do
+				ret = ret | (select(i, ...));
+			end
+		end
+		return ret;
+	end;
+	bxor   = function (a, b, ...)
+		local ret = a ~ b;
+		if ... then
+			for i = 1, select("#", ...) do
+				ret = ret ~ (select(i, ...));
+			end
+		end
+		return ret;
+	end;
 	rshift = function (a, n) return a >> n end;
 	lshift = function (a, n) return a << n end;
 };