mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-25 11:15:00 +00:00
293bf95c01
svn-id: r53188
169 lines
2.6 KiB
Lua
169 lines
2.6 KiB
Lua
-- $Id$
|
|
|
|
require "pluto"
|
|
|
|
permtable = { 1234 }
|
|
|
|
perms = { [coroutine.yield] = 1, [permtable] = 2 }
|
|
|
|
twithmt = {}
|
|
setmetatable( twithmt, { __call = function() return 21 end } )
|
|
|
|
function testfenv()
|
|
return abc
|
|
end
|
|
|
|
setfenv(testfenv, { abc = 456 })
|
|
|
|
function fa(i)
|
|
local ia = i + 1
|
|
return fb(ia)
|
|
end
|
|
|
|
function fb(i)
|
|
local ib = i + 1
|
|
ib = ib + fc(ib)
|
|
return ib
|
|
end
|
|
|
|
function fc(i)
|
|
local ic = i + 1
|
|
coroutine.yield()
|
|
return ic*2
|
|
end
|
|
|
|
function func()
|
|
return 4
|
|
end
|
|
|
|
thr = coroutine.create(fa)
|
|
coroutine.resume(thr, 2)
|
|
|
|
testtbl = { a = 2, [2] = 4 }
|
|
|
|
function funcreturningclosure(n)
|
|
return function()
|
|
return n
|
|
end
|
|
end
|
|
|
|
function nestedfunc(n)
|
|
return (function(m) return m+2 end)(n+3)
|
|
end
|
|
|
|
testloopa = {}
|
|
testloopb = { testloopa = testloopa }
|
|
testloopa.testloopb = testloopb
|
|
|
|
sharedref = {}
|
|
refa = {sharedref = sharedref}
|
|
refb = {sharedref = sharedref}
|
|
|
|
sptable = { a = 3 }
|
|
|
|
setmetatable(sptable, {
|
|
__persist = function(tbl)
|
|
local a = tbl.a
|
|
return function()
|
|
return { a = a+3 }
|
|
end
|
|
end
|
|
})
|
|
|
|
literaludata = boxinteger(71)
|
|
|
|
function booleanpersist(udata)
|
|
local b = unboxboolean(udata)
|
|
return function()
|
|
return boxboolean(b)
|
|
end
|
|
end
|
|
|
|
function makecounter()
|
|
local a = 0
|
|
return {
|
|
inc = function() a = a + 1 end,
|
|
cur = function() return a end
|
|
}
|
|
end
|
|
|
|
function uvinthreadfunc()
|
|
local a = 1
|
|
local b = function()
|
|
a = a+1
|
|
coroutine.yield()
|
|
a = a+1
|
|
end
|
|
a = a+1
|
|
b()
|
|
a = a+1
|
|
return a
|
|
end
|
|
|
|
uvinthread = coroutine.create(uvinthreadfunc)
|
|
coroutine.resume(uvinthread)
|
|
|
|
niinmt = { a = 3 }
|
|
setmetatable(niinmt, {__newindex = function(key, val) end })
|
|
|
|
|
|
|
|
|
|
local function GenerateObjects()
|
|
local Table = {}
|
|
|
|
function Table:Func()
|
|
return { Table, self }
|
|
end
|
|
|
|
function uvcycle()
|
|
return Table:Func()
|
|
end
|
|
end
|
|
|
|
GenerateObjects()
|
|
|
|
|
|
|
|
function debuginfo(foo)
|
|
foo = foo + foo
|
|
return debug.getlocal(1,1)
|
|
end
|
|
|
|
rootobj = {
|
|
testfalse = false,
|
|
testtrue = true,
|
|
testseven = 7,
|
|
testfoobar = "foobar",
|
|
testfuncreturnsfour = func,
|
|
testnil = nil,
|
|
testthread = thr,
|
|
testperm = permtable,
|
|
testmt = twithmt,
|
|
testtbl = testtbl,
|
|
testfenv = testfenv,
|
|
testclosure = funcreturningclosure(11),
|
|
testnilclosure = funcreturningclosure(nil),
|
|
testnest = nestedfunc,
|
|
testludata = createludata(),
|
|
testlooptable = testloopa,
|
|
testsharedrefa = refa,
|
|
testsharedrefb = refb,
|
|
testsptable = sptable,
|
|
testliteraludata = literaludata,
|
|
testspudata1 = boxboolean(true),
|
|
testspudata2 = boxboolean(false),
|
|
testsharedupval = makecounter(),
|
|
testuvinthread = uvinthread,
|
|
testniinmt = niinmt,
|
|
testuvcycle = uvcycle,
|
|
testdebuginfo = debuginfo
|
|
}
|
|
|
|
buf = pluto.persist(perms, rootobj)
|
|
|
|
onerror()
|
|
outfile = io.open("test.plh", "wb")
|
|
outfile:write(buf)
|
|
outfile:close()
|