forked from minetest-mods/MoreMesecons
Merge pull request #2 from Positive07/patch-1
Use BitOp or Bit32 libraries where available
This commit is contained in:
commit
b56a8a1e93
21
md5.lua
21
md5.lua
@ -33,7 +33,15 @@ local md5 = {
|
|||||||
local floor, abs, max = math.floor, math.abs, math.max
|
local floor, abs, max = math.floor, math.abs, math.max
|
||||||
local char, byte, format, rep, sub =
|
local char, byte, format, rep, sub =
|
||||||
string.char, string.byte, string.format, string.rep, string.sub
|
string.char, string.byte, string.format, string.rep, string.sub
|
||||||
|
local bit_or, bit_and, bit_not, bit_xor, bit_rshift, bit_lshift
|
||||||
|
|
||||||
|
local ok, bit = pcall(require, 'bit')
|
||||||
|
if not ok then ok, bit = pcall(require, 'bit32') end
|
||||||
|
|
||||||
|
if ok then
|
||||||
|
bit_or, bit_and, bit_not, bit_xor = bit.bor, bit.band, bit.bnot, bit.bxor
|
||||||
|
bit_rshift, bit_lshift = bit.rshift, bit.lshift
|
||||||
|
else
|
||||||
local function check_int(n)
|
local function check_int(n)
|
||||||
-- checking not float
|
-- checking not float
|
||||||
if(n - floor(n) > 0) then
|
if(n - floor(n) > 0) then
|
||||||
@ -73,7 +81,7 @@ end
|
|||||||
|
|
||||||
local to_bits -- needs to be declared before bit_not
|
local to_bits -- needs to be declared before bit_not
|
||||||
|
|
||||||
local function bit_not(n)
|
function bit_not(n)
|
||||||
local tbl = to_bits(n)
|
local tbl = to_bits(n)
|
||||||
local size = max(#tbl, 32)
|
local size = max(#tbl, 32)
|
||||||
for i = 1, size do
|
for i = 1, size do
|
||||||
@ -110,7 +118,7 @@ to_bits = function (n)
|
|||||||
return tbl
|
return tbl
|
||||||
end
|
end
|
||||||
|
|
||||||
local function bit_or(m, n)
|
function bit_or(m, n)
|
||||||
local tbl_m = to_bits(m)
|
local tbl_m = to_bits(m)
|
||||||
local tbl_n = to_bits(n)
|
local tbl_n = to_bits(n)
|
||||||
expand(tbl_m, tbl_n)
|
expand(tbl_m, tbl_n)
|
||||||
@ -128,7 +136,7 @@ local function bit_or(m, n)
|
|||||||
return tbl2number(tbl)
|
return tbl2number(tbl)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function bit_and(m, n)
|
function bit_and(m, n)
|
||||||
local tbl_m = to_bits(m)
|
local tbl_m = to_bits(m)
|
||||||
local tbl_n = to_bits(n)
|
local tbl_n = to_bits(n)
|
||||||
expand(tbl_m, tbl_n)
|
expand(tbl_m, tbl_n)
|
||||||
@ -146,7 +154,7 @@ local function bit_and(m, n)
|
|||||||
return tbl2number(tbl)
|
return tbl2number(tbl)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function bit_xor(m, n)
|
function bit_xor(m, n)
|
||||||
local tbl_m = to_bits(m)
|
local tbl_m = to_bits(m)
|
||||||
local tbl_n = to_bits(n)
|
local tbl_n = to_bits(n)
|
||||||
expand(tbl_m, tbl_n)
|
expand(tbl_m, tbl_n)
|
||||||
@ -164,7 +172,7 @@ local function bit_xor(m, n)
|
|||||||
return tbl2number(tbl)
|
return tbl2number(tbl)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function bit_rshift(n, bits)
|
function bit_rshift(n, bits)
|
||||||
check_int(n)
|
check_int(n)
|
||||||
|
|
||||||
local high_bit = 0
|
local high_bit = 0
|
||||||
@ -181,7 +189,7 @@ local function bit_rshift(n, bits)
|
|||||||
return floor(n)
|
return floor(n)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function bit_lshift(n, bits)
|
function bit_lshift(n, bits)
|
||||||
check_int(n)
|
check_int(n)
|
||||||
|
|
||||||
if(n < 0) then
|
if(n < 0) then
|
||||||
@ -194,6 +202,7 @@ local function bit_lshift(n, bits)
|
|||||||
end
|
end
|
||||||
return bit_and(n, 4294967295) -- 0xFFFFFFFF
|
return bit_and(n, 4294967295) -- 0xFFFFFFFF
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- convert little-endian 32-bit int to a 4-char string
|
-- convert little-endian 32-bit int to a 4-char string
|
||||||
local function lei2str(i)
|
local function lei2str(i)
|
||||||
|
Loading…
Reference in New Issue
Block a user