Software /
code /
prosody
Annotate
util/bit53.lua @ 13556:d3649ae194ab
mod_s2s: Clone queued outgoing stanzas to prevent changes
This clone call was lost in 902d25cd0557
Affects e.g. presence broadcasts, where the same stanza is sent many
times while mutating the 'to' attribute.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 10 Nov 2024 15:10:26 +0100 |
parent | 13449:9912baa541c0 |
rev | line source |
---|---|
10241
48f7cda4174d
util.bitops: Library to find appropriate bitwise library (closes #1395)
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 -- Only the operators needed by net.websocket.frames are provided at this point |
48f7cda4174d
util.bitops: Library to find appropriate bitwise library (closes #1395)
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 return { |
12365
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
3 band = function (a, b, ...) |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
4 local ret = a & b; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
5 if ... then |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
6 for i = 1, select("#", ...) do |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
7 ret = ret & (select(i, ...)); |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
8 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
9 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
10 return ret; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
11 end; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
12 bor = function (a, b, ...) |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
13 local ret = a | b; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
14 if ... then |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
15 for i = 1, select("#", ...) do |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
16 ret = ret | (select(i, ...)); |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
17 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
18 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
19 return ret; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
20 end; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
21 bxor = function (a, b, ...) |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
22 local ret = a ~ b; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
23 if ... then |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
24 for i = 1, select("#", ...) do |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
25 ret = ret ~ (select(i, ...)); |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
26 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
27 end |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
28 return ret; |
af02b033bd7f
util.bit53: Support for more than 2 arguments, for compat with bit32
Matthew Wild <mwild1@gmail.com>
parents:
12358
diff
changeset
|
29 end; |
13449
9912baa541c0
util.bit53: Add bnot() method
Matthew Wild <mwild1@gmail.com>
parents:
12365
diff
changeset
|
30 bnot = function (x) |
9912baa541c0
util.bit53: Add bnot() method
Matthew Wild <mwild1@gmail.com>
parents:
12365
diff
changeset
|
31 return ~x; |
9912baa541c0
util.bit53: Add bnot() method
Matthew Wild <mwild1@gmail.com>
parents:
12365
diff
changeset
|
32 end; |
12358
d77d8fba44ad
util.bit53: Add left- and right shift operations
Kim Alvefur <zash@zash.se>
parents:
10241
diff
changeset
|
33 rshift = function (a, n) return a >> n end; |
d77d8fba44ad
util.bit53: Add left- and right shift operations
Kim Alvefur <zash@zash.se>
parents:
10241
diff
changeset
|
34 lshift = function (a, n) return a << n end; |
10241
48f7cda4174d
util.bitops: Library to find appropriate bitwise library (closes #1395)
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
35 }; |
48f7cda4174d
util.bitops: Library to find appropriate bitwise library (closes #1395)
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 |