ring-buffers-0.1.0.1: mutable ring buffers with atomic updates in GHC Haskell

Safe HaskellNone
LanguageHaskell2010

RingBuffers.Unboxed

Synopsis

Documentation

data RingBuffer a Source #

A concurrent, mutable ring buffer that supports atomic updates.

new Source #

Arguments

:: Prim a 
=> Int

capacity of buffer

-> IO (RingBuffer a) 

Return a new ring buffer of the specified size.

clear Source #

Arguments

:: Prim a 
=> RingBuffer a

buffer to clear

-> IO () 

Reset the buffer to its empty state.

append :: Prim a => a -> RingBuffer a -> IO () Source #

Add an item to the end of the buffer.

capacity :: Prim a => RingBuffer a -> IO Int Source #

Get the maximum number of items the ring can contain

filledLength :: Prim a => RingBuffer a -> IO Int Source #

Get the current filled length of the ring

latest :: Prim a => RingBuffer a -> Int -> IO (Maybe a) Source #

Retrieve the \(n\)th most-recently added item of the ring

foldMap :: (Prim a, Monoid b) => RingBuffer a -> (a -> IO b) -> IO b Source #

Execute the given action with the items of the ring, accumulating its results.