implement t, the last simple type

This commit is contained in:
2025-08-03 15:48:18 -07:00
parent fbd75700d5
commit 3cc1287dc4

View File

@@ -138,7 +138,9 @@ function splubp:wnx(...)
end
function splubp:emit_item(obj, filename)
debug_last_emit = obj -- global debug
if DEBUG then
--[[global]] splubp_last_emit = obj
end
filename = filename or obj._file
obj._addr = self.ptr
self:write_s(filename)
@@ -196,6 +198,7 @@ function splubp:write_shr(n)
end
function splubp:write_a(tbl)
if (DEBUG) assert(#tbl <= 255, "'a' can't write array of length "..#tbl)
self:write_c(#tbl)
local rpt = self.cri
for item in all(tbl) do
@@ -203,6 +206,17 @@ function splubp:write_a(tbl)
self:wnx(item)
end
end
function splubp:write_t(tbl)
if DEBUG then
local want_len = self.row[self.cri]
assert(#tbl == want_len, "'t' wants "..tostr(want_len).." items, but got "..#tbl..": "..tostr(tbl))
end
for i=1,self:op() do
self:wnx(tbl[i])
end
end
-->8
-- loader
@@ -234,3 +248,11 @@ function splubp:a()
end
return ret
end
function splubp:t()
local ret = {}
for i=1,self:op() do
add(ret, self:rnx())
end
return ret
end