added some more fixes
This commit is contained in:
60
reframework/autorun/utility/Statics.lua
Normal file
60
reframework/autorun/utility/Statics.lua
Normal file
@@ -0,0 +1,60 @@
|
||||
local Statics = {}
|
||||
|
||||
function Statics.generate(typename, double_ended)
|
||||
local double_ended = double_ended or false
|
||||
|
||||
local t = sdk.find_type_definition(typename)
|
||||
if not t then return {} end
|
||||
|
||||
local fields = t:get_fields()
|
||||
local enum = {}
|
||||
|
||||
for i, field in ipairs(fields) do
|
||||
if field:is_static() then
|
||||
local name = field:get_name()
|
||||
local raw_value = field:get_data(nil)
|
||||
|
||||
log.info(name .. " = " .. tostring(raw_value))
|
||||
|
||||
enum[name] = raw_value
|
||||
|
||||
if double_ended then
|
||||
enum[raw_value] = name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return enum
|
||||
end
|
||||
|
||||
function Statics.generate_global(typename)
|
||||
-- split the . in the string so we get separate tables for each
|
||||
-- lua has no built in split function
|
||||
local parts = {}
|
||||
|
||||
for part in typename:gmatch("[^%.]+") do
|
||||
table.insert(parts, part)
|
||||
end
|
||||
|
||||
local global = _G
|
||||
for i, part in ipairs(parts) do
|
||||
if not global[part] then
|
||||
global[part] = {}
|
||||
end
|
||||
|
||||
global = global[part]
|
||||
end
|
||||
|
||||
if global ~= _G then
|
||||
local static_class = Statics.generate(typename)
|
||||
|
||||
for k, v in pairs(static_class) do
|
||||
global[k] = v
|
||||
global[v] = k
|
||||
end
|
||||
end
|
||||
|
||||
return global
|
||||
end
|
||||
|
||||
return Statics
|
Reference in New Issue
Block a user