| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Bytezap.Write.Internal
Synopsis
- data Write (lt :: LengthType) s = Write {
- writeLength :: Int
- writeOp :: Poke s
- data LengthType
- writeMax :: Write 'ExactLength s -> Write 'MaxLength s
- writeMaxExact :: Write 'MaxLength s -> Write 'ExactLength s -> Write 'MaxLength s
- writeExactMax :: Write 'ExactLength s -> Write 'MaxLength s -> Write 'MaxLength s
- writeCombine :: forall (ltl :: LengthType) s (ltr :: LengthType) (lt :: LengthType). Write ltl s -> Write ltr s -> Write lt s
Documentation
data Write (lt :: LengthType) s Source #
A Poke buffer write operation with the associated length to be written.
The length may be either exact or a maximum.
TODO strictness?
Constructors
| Write | |
Fields
| |
data LengthType Source #
What a buffer write length field means.
Constructors
| ExactLength | Exact length to be written. |
| MaxLength | Maximum length to be written. |
writeMax :: Write 'ExactLength s -> Write 'MaxLength s Source #
Turn a into a Write ExactLength.Write MaxLength
writeMaxExact :: Write 'MaxLength s -> Write 'ExactLength s -> Write 'MaxLength s Source #
Sequence a and a Write MaxLength
left-to-right.Write ExactLength
writeExactMax :: Write 'ExactLength s -> Write 'MaxLength s -> Write 'MaxLength s Source #
Sequence a and a Write MaxLength
left-to-right.Write ExactLength
writeCombine :: forall (ltl :: LengthType) s (ltr :: LengthType) (lt :: LengthType). Write ltl s -> Write ltr s -> Write lt s Source #
Sequence two Writes left-to-right.
Unsafe, as it ignores LengthTypes.
TODO strictness? INLINE[1]? INLINE[0]?