Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- newtype BitBuilder = BitBuilder {}
- data BitBuilderState where
- BitBuilderState :: !Builder -> !BitBuffer64 -> !Word64 -> BitBuilderState
- data BuilderWithSize where
- MkBuilderWithSize :: !Word64 -> !Builder -> BuilderWithSize
- bitBuilderWithSize :: forall (struct :: Extends (Structure sizeType)). HasFunctionBuilder BitBuilder (Proxy struct) => Proxy struct -> ToFunction BitBuilder (Proxy struct) BuilderWithSize
- wrapBitBuilderWithSize :: forall (struct :: Extends (Structure sizeType)) wrapped. HasFunctionBuilder BitBuilder (Proxy struct) => (BuilderWithSize -> wrapped) -> Proxy struct -> ToFunction BitBuilder (Proxy struct) wrapped
- builderBoxConstructor :: forall (struct :: Extends (Structure sizeType)) r. HasFunctionBuilder BitBuilder (Proxy struct) => Proxy struct -> FunctionBuilder BuilderWithSize r (ToFunction BitBuilder (Proxy struct) r)
- runBitBuilder :: BitBuilder -> Builder
- bitBuffer64Builder :: (BitBuilderState -> BitBuilderState) -> BitBuilder
- appBitBuilder :: BitBuilder -> BitBuilderState -> BitBuilderState
- getBitBuilderStateBuilder :: BitBuilderState -> Builder
- initialBitBuilderState :: BitBuilderState
- flushBitBuilder :: BitBuilderState -> BitBuilderState
- appendBitBuffer64 :: BitBuffer64 -> BitBuilder
- appendStrictByteString :: ByteString -> BitBuilder
- runBitBuilderHoley :: FunctionBuilder BitBuilder Builder a -> a
- printBuilder :: Builder -> String
- bitBuffer64Printer :: HasFunctionBuilder BitBuilder a => a -> ToFunction BitBuilder a String
BitBuffer64
construction from 'Extends (Structure sizeType's)
newtype BitBuilder Source #
Instances
Semigroup BitBuilder Source # | |
Defined in Data.Type.BitRecords.Writer.ByteStringBuilder (<>) :: BitBuilder -> BitBuilder -> BitBuilder # sconcat :: NonEmpty BitBuilder -> BitBuilder # stimes :: Integral b => b -> BitBuilder -> BitBuilder # | |
Monoid BitBuilder Source # | |
Defined in Data.Type.BitRecords.Writer.ByteStringBuilder mempty :: BitBuilder # mappend :: BitBuilder -> BitBuilder -> BitBuilder # mconcat :: [BitBuilder] -> BitBuilder # | |
HasFunctionBuilder BitBuilder BitBuffer64 Source # | |
Defined in Data.Type.BitRecords.Writer.ByteStringBuilder type ToFunction BitBuilder BitBuffer64 r :: Type # | |
type ToFunction BitBuilder BitBuffer64 r Source # | |
data BitBuilderState where Source #
BitBuilderState :: !Builder -> !BitBuffer64 -> !Word64 -> BitBuilderState |
data BuilderWithSize where Source #
A wrapper around a builder derived from a BitBuilderState
MkBuilderWithSize :: !Word64 -> !Builder -> BuilderWithSize |
Instances
Semigroup BuilderWithSize Source # | |
Defined in Data.Type.BitRecords.Writer.ByteStringBuilder (<>) :: BuilderWithSize -> BuilderWithSize -> BuilderWithSize # sconcat :: NonEmpty BuilderWithSize -> BuilderWithSize # stimes :: Integral b => b -> BuilderWithSize -> BuilderWithSize # | |
Monoid BuilderWithSize Source # | |
Defined in Data.Type.BitRecords.Writer.ByteStringBuilder mappend :: BuilderWithSize -> BuilderWithSize -> BuilderWithSize # mconcat :: [BuilderWithSize] -> BuilderWithSize # |
bitBuilderWithSize :: forall (struct :: Extends (Structure sizeType)). HasFunctionBuilder BitBuilder (Proxy struct) => Proxy struct -> ToFunction BitBuilder (Proxy struct) BuilderWithSize Source #
Create a Builder
from a ('Structur sizeTypee') and store it in a BuilderWithSize
wrapBitBuilderWithSize :: forall (struct :: Extends (Structure sizeType)) wrapped. HasFunctionBuilder BitBuilder (Proxy struct) => (BuilderWithSize -> wrapped) -> Proxy struct -> ToFunction BitBuilder (Proxy struct) wrapped Source #
Like bitBuilderWithSize
, but toFunction
the result and accept as an additional
parameter a wrapper function to wrap the final result (the BuilderWithSize
) and
toFunction
the whole machiner.
builderBoxConstructor :: forall (struct :: Extends (Structure sizeType)) r. HasFunctionBuilder BitBuilder (Proxy struct) => Proxy struct -> FunctionBuilder BuilderWithSize r (ToFunction BitBuilder (Proxy struct) r) Source #
Create a Builder
from a 'Extends (Structure sizeType') and store it in a BuilderWithSize
;
return a FunctionBuilder
monoid that does that on toFunction
Low-level interface to building 'Extends (Structure sizeType's) and other things
runBitBuilder :: BitBuilder -> Builder Source #
flushBitBuilder :: BitBuilderState -> BitBuilderState Source #
Write the partial buffer contents using any number of word8
The unwritten
parts of the bittr buffer are at the top. If the
63 ... (63-off-1)(63-off) ... 0 ^^^^^^^^^^^^^^^^^^^ Relevant bits start to the top!
appendBitBuffer64 :: BitBuffer64 -> BitBuilder Source #
Write all the bits, in chunks, filling and writing the BitBuffer64
in the BitBuilderState
as often as necessary.
appendStrictByteString :: ByteString -> BitBuilder Source #
Write all the bytes, into the BitBuilderState
this allows general
purposes non-byte aligned builders.
runBitBuilderHoley :: FunctionBuilder BitBuilder Builder a -> a Source #
Tracing/Debug Printing
printBuilder :: Builder -> String Source #
Print a Builder
to a space seperated series of hexa-decimal bytes.
bitBuffer64Printer :: HasFunctionBuilder BitBuilder a => a -> ToFunction BitBuilder a String Source #