
Data.Binary.BitBuilder  Portability  portable to Hugs and GHC  Stability  experimental  Maintainer  Adam Langley <agl@imperialviolet.org> 





Description 
Efficient construction of lazy bytestrings, bit by bit.


Synopsis 




The Builder type



A BitBuilder is an efficient way to build lazy ByteStrings.
There are several functions for constructing BitBuilders, but only one
to inspect them: to extract any data, you have to turn them into lazy
ByteStrings using toLazyByteString.
Internally, a BitBuilder constructs a lazy L.Bytestring by filling byte
arrays piece by piece. As each buffer is filled, it is 'popped'
off, to become a new chunk of the resulting lazy ByteString.
All this is hidden from the user of the BitBuilder.
This is closely based on the Builder monad, but this one deals with
single bits at a time.
 Instances  



O(n). Extract a lazy ByteString from a BitBuilder.
The construction work takes place if and when the relevant part of
the lazy ByteString is demanded.


Constructing Builders



O(1). The empty BitBuilder, satisfying



O(1). A BitBuilder taking a single bit, satisfying



O(1). The concatenation of two BitBuilders, an associative operation
with identity empty, satisfying





O(1). A BitBuilder taking a lazy ByteString, satisfying



Construct a BitBuilder by taking the bottom n bits of a Bits instance. If
the instance has less than n bits, this acts as if there was an infinite
zero filled prefix


Flushing the buffer state



O(1). Pop the ByteString we have constructed so far, if any,
yielding a new chunk in the result lazy ByteString.


Produced by Haddock version 2.4.2 