From 05528dfaabb8932478e0da95613242a2e7a828ab Mon Sep 17 00:00:00 2001 From: "p.kosyh" Date: Fri, 23 Oct 2009 12:39:21 +0000 Subject: [PATCH] ppush/ppop --- stead/stead.lua | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/stead/stead.lua b/stead/stead.lua index 7261955..671fc34 100644 --- a/stead/stead.lua +++ b/stead/stead.lua @@ -8,15 +8,23 @@ stead = { txt = {}, } -function pstart() +function ppush() stead.txt_top = stead.txt_top + 1; +end + +function ppop() + stead.txt_top = stead.txt_top - 1; + if stead.txt_top < 0 then + error "pstart/pend mismatch" + end +end + +function pstart() stead.txt[stead.txt_top] = nil end function pend() - local r = stead.txt[stead.txt_top] - stead.txt_top = stead.txt_top - 1; - return r + return stead.txt[stead.txt_top] end function p(...) @@ -558,13 +566,14 @@ function call(v, n, ...) return v[n]; end if type(v[n]) == 'function' then + ppush() pstart() local a,b = v[n](v, unpack(arg)); if a == nil and b == nil then - return pend(); - else - pend(); + a = pend(); + b = nil; end + ppop() return a,b end error ("Method not string nor function:"..tostring(n));