From cb7c8031ced6e9a393e8bdc3f409687741ef9feb Mon Sep 17 00:00:00 2001 From: Pixel Date: Sun, 20 Dec 2009 03:02:33 -0800 Subject: Factorizing some bits of code. --- dalos-limiter.lua | 48 ++++++------------------------------------------ 1 file changed, 6 insertions(+), 42 deletions(-) (limited to 'dalos-limiter.lua') diff --git a/dalos-limiter.lua b/dalos-limiter.lua index 8f1a863..b423d7a 100644 --- a/dalos-limiter.lua +++ b/dalos-limiter.lua @@ -15,51 +15,16 @@ Limit: %i{The actual size this limiter is going to produce} self.color = cd.GREEN local obj = { h = h, - offset = 0, size = math.max(h:getsize(), self.limit), - canread = function (self) return true end, - canwrite = function (self) return false end, - canseek = function (self) return true end, - canwatch = function (self) return false end, - getname = function (self) return end, - tell = function (self) return self.offset end, - getsize = function (self) return self.size end, - getmodif = function (self) return 0 end, - flush = function (self) return true end, - seek = function (self, offset, wheel) - if wheel == SEEK_SET then - self.offset = offset - elseif wheel == SEEK_CUR then - self.offset = self.offset + offset - elseif wheel == SEEK_END then - self.offset = self.size + offset - else - error "Unknown wheel" - end - if self.offset < 0 then self.offset = 0 end - if self.offset >= self.size then self.offset = self.size end - self.h:seek(self.offset) - return self.offset + getname = function () return self.name end, + do_read = function (self, userdata, count) + return self.h:read(count, userdata) end, - read = function (self, userdata, count) - count = math.min(count, self.size - self.offset) - - if count == 0 then - if self.got_eof then self.lh:close() end - self.got_eof = true - return 0 - end - - self.got_eof = false - - local r = self.h:read(count, userdata) - self.offset = self.offset + r - return r + do_seek = function (self) + self.h:seek(self.offset, SEEK_SET) end, } - local newh = HandleLua(obj) - obj.lh = newh - self:set_houtput(newh) + self:set_houtput(dalos.luahandle(obj)) self.dcanvas:draw() else self.color = cd.YELLOW @@ -68,7 +33,6 @@ Limit: %i{The actual size this limiter is going to produce} end end, - create = function (d, tab) tab.ninputs = 1 tab.noutputs = 1 -- cgit v1.2.3