__finalizeLuaBindings
Definition
-- @/lua/common/luaBinding.lua:195
function __finalizeLuaBindings(classes, luaVMname)
if luaVMname ~= 'vlua' then
for k, classtable in pairs(classes) do
-- search for SimObject's metatables
if k:byte(1) == 100 and classtable.isSubClassOf then -- d
flattenObjectMetatable(classtable)
-- create simobject metatable
rawset(rawget(classtable, 1), "className", classtable.getClassName)
if next(rawget(classtable, 2)) == nil and rawget(classtable, 3) == nil then
rawset(rawget(classtable, 2), 1, 0) -- disable newindex optimization when newindex table is empty
end
rawset(classtable, 4, classtable.getStaticDataFieldbyName)
rawset(classtable, 5, classtable.getDynDataFieldbyName)
rawset(classtable, 6, classtable.setStaticDataFieldbyName)
rawset(classtable, 7, classtable.setDynDataFieldbyName)
rawset(classtable, '__index', __simObjectIndex) -- new getter
rawset(classtable, '__newindex', __simObjectNewIndex) -- new setter
end
end
end
for k, v in pairs(classes) do
-- optimize metatables
if rawget(v, 3) == nil then -- no super
if next(rawget(v, 2)) == nil then -- no setters
rawset(v, 2, nil)
rawset(v, '__newindex', nil)
end
if next(rawget(v, 1)) == nil and rawget(v, '__index') ~= rawget(v, 1) then -- no getters
local plainGetters = rawget(v, 1)
if rawget(v, '__newindex') == nil then
for f, getter in pairs(v) do
if type(f) ~= 'number' then
rawset(plainGetters, f, getter)
if string.byte(f, 1) ~= 95 then
rawset(v, f, nil)
end
end
end
plainGetters.__type = v.__type
else
for f, getter in pairs(v) do
if type(f) ~= 'number' then
rawset(plainGetters, f, getter)
end
end
end
rawset(v, '__index', plainGetters)
end
end
end
end
Callers