License | BSD-style |
---|---|
Maintainer | capsjac <capsjac at gmail dot com> |
Stability | Experimental |
Portability | Portable |
Safe Haskell | None |
Language | Haskell2010 |
- type Packer a = a -> Packet String a
- newtype Packet e a = Packet {}
- dimapP :: (b -> a) -> (a -> b) -> (a -> Packet e a) -> b -> Packet e b
- simple :: Storable a => Int -> (a -> b) -> (b -> a) -> Packer b
- fixedPacket :: (ByteString -> Ptr a -> IO a) -> (Ptr a -> a -> IO ()) -> Int -> (a -> b) -> (b -> a) -> Packer b
- asymmPacket :: (ByteString -> IO (Int, Either String a)) -> (Ptr a -> IO ()) -> Int -> Packet String a
- checkBdr :: Int -> Ptr () -> Ptr () -> IO a -> IO (Either String a)
- getTop :: ByteString -> IO (Ptr a)
Documentation
Bidirectional packing/unpacking Monad.
dimapP :: (b -> a) -> (a -> b) -> (a -> Packet e a) -> b -> Packet e b Source
Derived from lens package. Bidirectional mapping.
simple :: Storable a => Int -> (a -> b) -> (b -> a) -> Packer b Source
fixedPacket
for Storable types.
fixedPacket :: (ByteString -> Ptr a -> IO a) -> (Ptr a -> a -> IO ()) -> Int -> (a -> b) -> (b -> a) -> Packer b Source
Generate a fixed-length Packer
.
asymmPacket :: (ByteString -> IO (Int, Either String a)) -> (Ptr a -> IO ()) -> Int -> Packet String a Source
Generate a variable-length Packer
.
checkBdr :: Int -> Ptr () -> Ptr () -> IO a -> IO (Either String a) Source
Unpackers should not read out of memory, so check the border here.
getTop :: ByteString -> IO (Ptr a) Source
Get a pointer to the head of given ByteString
.