From 3cc1287dc482d8b52e0dceae2eb753c586819e55 Mon Sep 17 00:00:00 2001 From: Kistaro Windrider Date: Sun, 3 Aug 2025 15:48:18 -0700 Subject: [PATCH] implement t, the last simple type --- splubp.p8 | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/splubp.p8 b/splubp.p8 index 68b6d26..40f5162 100644 --- a/splubp.p8 +++ b/splubp.p8 @@ -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