Current File : //usr/share/texlive/texmf-dist/tex/generic/pgf/graphdrawing/lua/pgf/gd/planar/List.lua |
local List = {}
List.__index = List
function List.new()
local t = {first = 0, last = -1}
setmetatable(t, List)
return t
end
function List:pushleft(value)
local first = self.first - 1
self.first = first
self[first] = value
end
function List:pushright(value)
local last = self.last + 1
self.last = last
self[last] = value
end
function List:popleft()
local first = self.first
if first > self.last then error("List is empty") end
local value = self[first]
self[first] = nil
self.first = first + 1
return value
end
function List:popright()
local last = self.last
if self.first > last then error("List is empty") end
local value = self[last]
self[last] = nil
self.last = last - 1
return value
end
function List:size()
return self.last - self.first + 1
end
function List:empty()
return self.last < self.first
end
return List