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 Write
s left-to-right.
Unsafe, as it ignores LengthType
s.
TODO strictness? INLINE[1]? INLINE[0]?