Safe Haskell | None |
---|---|
Language | Haskell2010 |
Binary serialization of Haskell values
Synopsis
- class Monad m => PutMonad m where
- putWord8 :: Word8 -> m ()
- putWord16 :: Word16 -> m ()
- putWord32 :: Word32 -> m ()
- putWord64 :: Word64 -> m ()
- putWord8s :: [Word8] -> m ()
- putWord16s :: [Word16] -> m ()
- putWord32s :: [Word32] -> m ()
- putWord64s :: [Word64] -> m ()
- putBuffer :: Buffer mut pin gc heap -> m ()
- preAllocateAtLeast :: Word -> m ()
- class Monad m => GetMonad m where
- class Serializable a where
- data Size
- putWord16BE :: PutMonad m => Word16 -> m ()
- putWord32BE :: PutMonad m => Word32 -> m ()
- putWord64BE :: PutMonad m => Word64 -> m ()
- putWord16LE :: PutMonad m => Word16 -> m ()
- putWord32LE :: PutMonad m => Word32 -> m ()
- putWord64LE :: PutMonad m => Word64 -> m ()
- putWord16BEs :: PutMonad m => [Word16] -> m ()
- putWord32BEs :: PutMonad m => [Word32] -> m ()
- putWord64BEs :: PutMonad m => [Word64] -> m ()
- putWord16LEs :: PutMonad m => [Word16] -> m ()
- putWord32LEs :: PutMonad m => [Word32] -> m ()
- putWord64LEs :: PutMonad m => [Word64] -> m ()
- getWord16BE :: GetMonad m => m Word16
- getWord32BE :: GetMonad m => m Word32
- getWord64BE :: GetMonad m => m Word64
- getWord16LE :: GetMonad m => m Word16
- getWord32LE :: GetMonad m => m Word32
- getWord64LE :: GetMonad m => m Word64
- getWord16BEs :: GetMonad m => Word -> m [Word16]
- getWord32BEs :: GetMonad m => Word -> m [Word32]
- getWord64BEs :: GetMonad m => Word -> m [Word64]
- getWord16LEs :: GetMonad m => Word -> m [Word16]
- getWord32LEs :: GetMonad m => Word -> m [Word32]
- getWord64LEs :: GetMonad m => Word -> m [Word64]
Documentation
class Monad m => PutMonad m where Source #
Monad which can build a sequence of bytes
putWord8 :: Word8 -> m () Source #
Write a Word8
putWord16 :: Word16 -> m () Source #
Write a Word16
putWord32 :: Word32 -> m () Source #
Write a Word32
putWord64 :: Word64 -> m () Source #
Write a Word64
putWord8s :: [Word8] -> m () Source #
Write some Word8
putWord16s :: [Word16] -> m () Source #
Write some Word16
putWord32s :: [Word32] -> m () Source #
Write some Word32
putWord64s :: [Word64] -> m () Source #
Write some Word64
putBuffer :: Buffer mut pin gc heap -> m () Source #
Write the contents of a buffer
preAllocateAtLeast :: Word -> m () Source #
Pre-allocate at least the given amount of bytes
This is a hint for the putter to speed up the allocation of memory
Instances
(MonadIO m, MonadFail m) => PutMonad (BufferPutT (Buffer Mutable pin gc heap) m) Source # | |
Defined in Haskus.Format.Binary.Serialize.Buffer putWord8 :: Word8 -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord16 :: Word16 -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord32 :: Word32 -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord64 :: Word64 -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord8s :: [Word8] -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord16s :: [Word16] -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord32s :: [Word32] -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putWord64s :: [Word64] -> BufferPutT (Buffer Mutable pin gc heap) m () Source # putBuffer :: Buffer mut pin0 gc0 heap0 -> BufferPutT (Buffer Mutable pin gc heap) m () Source # preAllocateAtLeast :: Word -> BufferPutT (Buffer Mutable pin gc heap) m () Source # |
class Monad m => GetMonad m where Source #
Monad which can read a sequence of bytes
Read a Word8
getWord16 :: m Word16 Source #
Read a Word16 with host endianness
getWord32 :: m Word32 Source #
Read a Word32 with host endianness
getWord64 :: m Word64 Source #
Read a Word64 with host endianness
getWord8s :: Word -> m [Word8] Source #
Read some Word8
getWord16s :: Word -> m [Word16] Source #
Read some Word16 with host endianness
getWord32s :: Word -> m [Word32] Source #
Read some Word32 with host endianness
getWord64s :: Word -> m [Word64] Source #
Read some Word64 with host endianness
getBuffer :: Word -> m BufferI Source #
Read the given amount of bytes into a new buffer
getBufferInto :: Word -> Buffer Mutable pin gc heap -> m () Source #
Read the given amount of bytes into the specified buffer
class Serializable a where Source #
Binary serializable data
type SizeOf a :: Size Source #
Size of the data in bytes
type Endian a :: Bool Source #
Sensible to endianness
Dynamic size of the data in bytes
put :: PutMonad m => Endianness -> a -> m () Source #
Serialize a value
get :: GetMonad m => Endianness -> Word -> m a Source #
Deserialize a value
Instances
Serializable Int8 Source # | |
Serializable Int16 Source # | |
Serializable Int32 Source # | |
Serializable Int64 Source # | |
Serializable Word8 Source # | |
Serializable Word16 Source # | |
Serializable Word32 Source # | |
Serializable Word64 Source # | |
Serializable BufferI Source # | |
Serializable a => Serializable (AsLittleEndian a) Source # | |
Defined in Haskus.Format.Binary.Serialize type SizeOf (AsLittleEndian a) :: Size Source # type Endian (AsLittleEndian a) :: Bool Source # sizeOf :: AsLittleEndian a -> Word Source # put :: PutMonad m => Endianness -> AsLittleEndian a -> m () Source # get :: GetMonad m => Endianness -> Word -> m (AsLittleEndian a) Source # | |
Serializable a => Serializable (AsBigEndian a) Source # | |
Defined in Haskus.Format.Binary.Serialize type SizeOf (AsBigEndian a) :: Size Source # type Endian (AsBigEndian a) :: Bool Source # sizeOf :: AsBigEndian a -> Word Source # put :: PutMonad m => Endianness -> AsBigEndian a -> m () Source # get :: GetMonad m => Endianness -> Word -> m (AsBigEndian a) Source # |
Size in bytes
Endianness helpers
putWord16BE :: PutMonad m => Word16 -> m () Source #
Write a Word16 with big-endian order
putWord32BE :: PutMonad m => Word32 -> m () Source #
Write a Word32 with big-endian order
putWord64BE :: PutMonad m => Word64 -> m () Source #
Write a Word64 with big-endian order
putWord16LE :: PutMonad m => Word16 -> m () Source #
Write a Word16 with little-endian order
putWord32LE :: PutMonad m => Word32 -> m () Source #
Write a Word32 with little-endian order
putWord64LE :: PutMonad m => Word64 -> m () Source #
Write a Word64 with little-endian order
putWord16BEs :: PutMonad m => [Word16] -> m () Source #
Write some Word16 with big-endian order
putWord32BEs :: PutMonad m => [Word32] -> m () Source #
Write some Word32 with big-endian order
putWord64BEs :: PutMonad m => [Word64] -> m () Source #
Write some Word64 with big-endian order
putWord16LEs :: PutMonad m => [Word16] -> m () Source #
Write some Word16 with little-endian order
putWord32LEs :: PutMonad m => [Word32] -> m () Source #
Write some Word32 with little-endian order
putWord64LEs :: PutMonad m => [Word64] -> m () Source #
Write some Word64 with little-endian order
getWord16BE :: GetMonad m => m Word16 Source #
Read a Word16 with big-endian order
getWord32BE :: GetMonad m => m Word32 Source #
Read a Word32 with big-endian order
getWord64BE :: GetMonad m => m Word64 Source #
Read a Word64 with big-endian order
getWord16LE :: GetMonad m => m Word16 Source #
Read a Word16 with little-endian order
getWord32LE :: GetMonad m => m Word32 Source #
Read a Word32 with little-endian order
getWord64LE :: GetMonad m => m Word64 Source #
Read a Word64 with little-endian order