summaryrefslogtreecommitdiff
path: root/dalos-limiter.lua
diff options
context:
space:
mode:
authorPixel <pixel@nobis-crew.org>2009-12-20 03:02:33 -0800
committerPixel <pixel@nobis-crew.org>2009-12-20 03:02:33 -0800
commitcb7c8031ced6e9a393e8bdc3f409687741ef9feb (patch)
treea0390aaf2dd7749ca1a20095ef85a20f9d717790 /dalos-limiter.lua
parent1eef19bf7577799096f9133f38e8a9c8f0d65248 (diff)
Factorizing some bits of code.
Diffstat (limited to 'dalos-limiter.lua')
-rw-r--r--dalos-limiter.lua48
1 files changed, 6 insertions, 42 deletions
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