Sha256: cb88dbd2298e7af157db67458cb61223b4ec9ff6108665f7ad5baea513eee514

Contents?: true

Size: 870 Bytes

Versions: 396

Compression:

Stored size: 870 Bytes

Contents

local CircularBuffer = {}
CircularBuffer.__index = CircularBuffer

function CircularBuffer:read()
  if self.head == self.tail then error('buffer is empty') end
  self.tail = self.tail + 1
  return self.items[self.tail - 1]
end

function CircularBuffer:write(item)
  if item == nil then return end
  if (self.head - self.tail) == self.capacity then error('buffer is full') end
  table.insert(self.items, self.head, item)
  self.head = self.head + 1
end

function CircularBuffer:forceWrite(item)
  if item == nil then return end
  if (self.head - self.tail) == self.capacity then self.tail = self.tail + 1 end
  self:write(item)
end

function CircularBuffer:clear()
  self.items = {}
  self.head = 1
  self.tail = 1
end

return {
  new = function(_, capacity)
    local self = setmetatable({ capacity = capacity }, CircularBuffer)
    self:clear()
    return self
  end
}

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.0.6.40 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.39 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.38 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.37 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.36 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.35 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.34 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.33 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.32 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.31 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.30 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.29 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.28 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.27 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.26 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.25 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.24 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.23 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.22 tracks/lua/exercises/circular-buffer/example.lua
trackler-2.0.6.21 tracks/lua/exercises/circular-buffer/example.lua