CircularBuffer (CircularBuffer v0.4.1) View Source
Circular Buffer
When creating a circular buffer you must specify the max size:
cb = CircularBuffer.new(10)
CircularBuffers are implemented as Okasaki queues like Erlang's :queue
module, but with additional optimizations thanks to the reduced set
of operations.
Link to this section Summary
Functions
Checks the buffer to see if its empty
Inserts a new item into the next location of the circular buffer
Creates a new circular buffer with a given size.
Returns the newest element in the buffer
Returns the oldest element in the buffer
Converts a circular buffer to a list. The list is ordered from oldest to newest elements based on their insertion order.
Link to this section Types
Specs
t()
A circular buffer
Link to this section Functions
Specs
Checks the buffer to see if its empty
Returns true
if the given circular buffer is empty, otherwise false
.
Examples
iex> cb = CircularBuffer.new(1)
iex> CircularBuffer.empty?(cb)
true
iex> cb |> CircularBuffer.insert(1) |> CircularBuffer.empty?()
false
Specs
Inserts a new item into the next location of the circular buffer
Specs
new(pos_integer()) :: t()
Creates a new circular buffer with a given size.
Specs
Returns the newest element in the buffer
Examples
iex> cb = CircularBuffer.new(3)
iex> CircularBuffer.newest(cb)
nil
iex> cb = Enum.reduce(1..4, cb, fn n, cb -> CircularBuffer.insert(cb, n) end)
iex> CircularBuffer.newest(cb)
4
Specs
Returns the oldest element in the buffer
Specs
Converts a circular buffer to a list. The list is ordered from oldest to newest elements based on their insertion order.