miduo_client/Assets/ManagedResources/~Lua/Base/Queue.lua

71 lines
1.3 KiB
Lua

Queue = {}
function Queue.New()
local o = {}
setmetatable(o, Queue)
Queue.__index = Queue
o.head = -1
o.rear = -1
o.list = {}
o.size = 0
return o
end
function Queue:Enqueue(e)
if self.size == 0 then
self.head = 0
self.rear = 1
self.size = 1
self.list[self.rear] = e
else
self.rear = self.rear + 1
self.list[self.rear] = e
self.size = self.size + 1
end
end
function Queue:Peek()
if self.size == 0 then
error("lua queue is isEmpty")
return nil
end
return self.list[self.head + 1]
end
function Queue:Dequeue()
if self.size == 0 then
error("lua queue is isEmpty")
return nil
end
self.size = self.size - 1
self.head = self.head + 1
return self.list[self.head]
end
function Queue:Clear()
--self.list = {}
self.size = 0
self.head = -1
self.rear = -1
end
function Queue:Count()
return self.size
end
function Queue:Foreach(func)
for i = self.head + 1, self.rear do
if func then
func(self.list[i])
end
end
end
function Queue:Contain(e)
for i = self.head + 1, self.rear do
if e == self.list[i] then
return true
end
end
return false
end