From af60fb015e5ba915e93733e5154b326cbcc9ca36 Mon Sep 17 00:00:00 2001 From: "Johnny C. Lam" Date: Sun, 13 Jul 2014 11:30:56 +0000 Subject: [PATCH] Add new queue method :At() to return the queue element at the given index. Also, tweak the internal indices so that in the best case usage, the queue simply uses array table size for the queued elements. Lastly, fix the documentation since queue = FIFO and stack = LIFO. git-svn-id: svn://svn.curseforge.net/wow/ovale/mainline/trunk@1538 d5049fe3-3747-40f7-a4b5-f36d6801af5f --- OvaleQueue.lua | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/OvaleQueue.lua b/OvaleQueue.lua index 3693a49..8661271 100644 --- a/OvaleQueue.lua +++ b/OvaleQueue.lua @@ -18,8 +18,8 @@ local setmetatable = setmetatable -- OvaleQueue.name = "OvaleQueue" -OvaleQueue.first = 0 -OvaleQueue.last = -1 +OvaleQueue.first = 1 +OvaleQueue.last = 0 OvaleQueue.__index = OvaleQueue -- @@ -78,6 +78,13 @@ function OvaleQueue:RemoveBack() return element end +function OvaleQueue:At(index) + if index > self:Size() then + return + end + return self[self.first + index - 1] +end + function OvaleQueue:Front() return self[self.first] end @@ -112,15 +119,15 @@ end -- -- --- Queue (LIFO) methods +-- Queue (FIFO) methods OvaleQueue.NewQueue = OvaleQueue.NewDeque OvaleQueue.Insert = OvaleQueue.InsertBack OvaleQueue.Remove = OvaleQueue.RemoveFront OvaleQueue.Iterator = OvaleQueue.FrontToBackIterator --- Stack (FIFO) methods +-- Stack (LIFO) methods OvaleQueue.NewStack = OvaleQueue.NewDeque -OvaleQueue.Push = OvaleQueue.InsertFront -OvaleQueue.Pop = OvaleQueue.RemoveFront -OvaleQueue.Top = OvaleQueue.Front +OvaleQueue.Push = OvaleQueue.InsertBack +OvaleQueue.Pop = OvaleQueue.RemoveBack +OvaleQueue.Top = OvaleQueue.Back -- -- 1.7.9.5