aboutsummaryrefslogtreecommitdiffstats
path: root/util/bit53.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/bit53.lua')
-rw-r--r--util/bit53.lua33
1 files changed, 33 insertions, 0 deletions
diff --git a/util/bit53.lua b/util/bit53.lua
new file mode 100644
index 00000000..b5c473a3
--- /dev/null
+++ b/util/bit53.lua
@@ -0,0 +1,33 @@
+-- Only the operators needed by net.websocket.frames are provided at this point
+return {
+ 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;
+};
+