-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Efficiently build a bytestring from smaller chunks
--
-- Efficiently (both fast and memory efficient) build a bytestring from
-- smaller chunks
@package superbuffer
@version 0.1.0.0
module Data.ByteString.SuperBuffer
-- | The buffer. Internally only a pointer to a C struct. Don't worry, this
-- module attempts to make usage of the SuperBuffer as safe as possible
-- in terms of memory leaks (with exceptions).
data SuperBuffer
-- | Allocate a new buffer with a given initial size. The perfect starting
-- point depends on the expected total size and the average size for a
-- single chunk written with appendBuffer. You can always start
-- with 1024 and optimize from there with benchmarks. Please note that
-- the SuperBuffer will no longer be valid after this function
-- terminates, so do NOT pass it to some other thread without waiting for
-- it to finish in the action.
withBuffer :: Int64 -> (SuperBuffer -> IO ()) -> IO ByteString
-- | Write a bytestring to the buffer and grow the buffer if needed. Note
-- that only one thread at any given time may call this function, so if
-- you are sharing the SuperBuffer between threads make sure you
-- place some type of guarding/locking around this function.
appendBuffer :: SuperBuffer -> ByteString -> IO ()