2025-10-16 12:18:57 +08:00
|
|
|
-- --------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
local visited = {}
|
|
|
|
|
local function tdump(o, level)
|
|
|
|
|
local level = level or 1
|
|
|
|
|
if(level == 0) then visited = {} end
|
|
|
|
|
if type(o) == 'table' then
|
|
|
|
|
local s = ' {\n'
|
|
|
|
|
for k,v in pairs(o) do
|
|
|
|
|
if type(k) ~= 'number' then k = '"'..tostring(k)..'"' end
|
|
|
|
|
if(visited[v] == nil) then
|
|
|
|
|
visited[v] = true
|
|
|
|
|
s = s .. string.rep(" ", level)..'['..k..'] = ' .. tdump(v, level+1)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return s .. string.rep(" ", level-1)..'}\n'
|
|
|
|
|
else
|
|
|
|
|
return tostring(o).."\n"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2025-10-18 20:16:35 +08:00
|
|
|
|
|
|
|
|
-- --------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
local function ffi_string( data, str )
|
|
|
|
|
|
|
|
|
|
data.ffi = ffi.new("char[?]", #str, str)
|
|
|
|
|
data.len_ffi = ffi.new("int[1]", { #str} )
|
|
|
|
|
return data
|
|
|
|
|
end
|
|
|
|
|
|
2025-10-16 12:18:57 +08:00
|
|
|
-- --------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
tdump = tdump,
|
2025-10-18 20:16:35 +08:00
|
|
|
|
|
|
|
|
ffi_string = ffi_string,
|
2025-10-16 12:18:57 +08:00
|
|
|
}
|
|
|
|
|
|
2024-11-17 21:00:11 +08:00
|
|
|
-- --------------------------------------------------------------------------------------
|