Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Serializer
Description
Serialization monoid and serializable types.
Synopsis
- class (Semigroup s, Monoid s) => Serializer s where
- endian :: Proxy s -> Endian
- word8 :: Word8 -> s
- word16 :: Word16 -> s
- word32 :: Word32 -> s
- word64 :: Word64 -> s
- word16L :: Word16 -> s
- word16B :: Word16 -> s
- word32L :: Word32 -> s
- word32B :: Word32 -> s
- word64L :: Word64 -> s
- word64B :: Word64 -> s
- byteString :: ByteString -> s
- shortByteString :: ShortByteString -> s
- lazyByteString :: ByteString -> s
- builder :: Builder -> s
- buildBytes :: Builder -> [Word8]
- buildByteString :: Builder -> ByteString
- buildLazyByteString :: Builder -> ByteString
- newtype BinarySerializer = BinarySerializer {}
- newtype CerealSerializer = CerealSerializer {}
- word16H :: Serializer s => Word16 -> s
- word32H :: Serializer s => Word32 -> s
- word64H :: Serializer s => Word64 -> s
- word :: Serializer s => Word -> s
- wordL :: Serializer s => Word -> s
- wordB :: Serializer s => Word -> s
- wordH :: Serializer s => Word -> s
- int8 :: Serializer s => Int8 -> s
- int16 :: Serializer s => Int16 -> s
- int16L :: Serializer s => Int16 -> s
- int16B :: Serializer s => Int16 -> s
- int16H :: Serializer s => Int16 -> s
- int32 :: Serializer s => Int32 -> s
- int32L :: Serializer s => Int32 -> s
- int32B :: Serializer s => Int32 -> s
- int32H :: Serializer s => Int32 -> s
- int64 :: Serializer s => Int64 -> s
- int64L :: Serializer s => Int64 -> s
- int64B :: Serializer s => Int64 -> s
- int64H :: Serializer s => Int64 -> s
- int :: Serializer s => Int -> s
- intL :: Serializer s => Int -> s
- intB :: Serializer s => Int64 -> s
- intH :: Serializer s => Int -> s
- newtype LittleEndianSerializer s = LittleEndianSerializer {
- serializeL :: s
- newtype BigEndianSerializer s = BigEndianSerializer {
- serializeB :: s
- serializeIn :: Serializer s => Endian -> (forall s'. Serializer s' => s') -> s
- serializeH :: Serializer s => (forall s'. Serializer s' => s') -> s
- class Serializable α where
- put :: Serializer s => α -> s
- putIn :: (Serializer s, Serializable α) => Endian -> α -> s
- putL :: (Serializer s, Serializable α) => α -> s
- putB :: (Serializer s, Serializable α) => α -> s
- putH :: (Serializer s, Serializable α) => α -> s
- toBytes :: Serializable α => α -> [Word8]
- toByteString :: Serializable α => α -> ByteString
- toLazyByteString :: Serializable α => α -> ByteString
- class Serializable α => SizedSerializable α where
- class RestSerializable α where
- putRest :: Serializer s => α -> s
Serialization monoid
class (Semigroup s, Monoid s) => Serializer s where Source #
Serialization monoid.
Minimal complete definition
Methods
endian :: Proxy s -> Endian Source #
Default byte order of the serializer.
Serialize a byte. word8
x = byteString
(singleton
x)
word16 :: Word16 -> s Source #
Serialize an unsigned 16-bit integer in the default byte order.
word32 :: Word32 -> s Source #
Serialize an unsigned 32-bit integer in the default byte order.
word64 :: Word64 -> s Source #
Serialize an unsigned 64-bit integer in the default byte order.
word16L :: Word16 -> s Source #
Serialize an unsigned 16-bit integer in little endian.
word16B :: Word16 -> s Source #
Serialize an unsigned 16-bit integer in big endian.
word32L :: Word32 -> s Source #
Serialize an unsigned 32-bit integer in little endian.
word32B :: Word32 -> s Source #
Serialize an unsigned 32-bit integer in big endian.
word64L :: Word64 -> s Source #
Serialize an unsigned 64-bit integer in little endian.
word64B :: Word64 -> s Source #
Serialize an unsigned 64-bit integer in big endian.
byteString :: ByteString -> s Source #
Serialize a ByteString
. Must be a monoid homomorphism.
shortByteString :: ShortByteString -> s Source #
Serialize a ShortByteString
. Must be a monoid homomorphism.
lazyByteString :: ByteString -> s Source #
Serialize a lazy ByteString
. Must be a monoid homomorphism.
builder :: Builder -> s Source #
Serialize a Builder
. Must be a monoid homomorphism.
Instances
buildBytes :: Builder -> [Word8] Source #
A shorthand for "LBS.unpack' .
.toLazyByteString
buildByteString :: Builder -> ByteString Source #
A shorthand for
.toStrict
. toLazyByteString
buildLazyByteString :: Builder -> ByteString Source #
An alias for
.toLazyByteString
newtype BinarySerializer Source #
A wrapper around the Put
monoid (to avoid orphan instances).
Constructors
BinarySerializer | |
Fields |
Instances
newtype CerealSerializer Source #
A wrapper around the Put
monoid (to avoid orphan instances).
Constructors
CerealSerializer | |
Fields |
Instances
Monoid CerealSerializer Source # | |||||
Defined in Data.Serializer Methods mappend :: CerealSerializer -> CerealSerializer -> CerealSerializer # mconcat :: [CerealSerializer] -> CerealSerializer # | |||||
Semigroup CerealSerializer Source # | |||||
Defined in Data.Serializer Methods (<>) :: CerealSerializer -> CerealSerializer -> CerealSerializer # sconcat :: NonEmpty CerealSerializer -> CerealSerializer # stimes :: Integral b => b -> CerealSerializer -> CerealSerializer # | |||||
Generic CerealSerializer Source # | |||||
Defined in Data.Serializer Associated Types
Methods from :: CerealSerializer -> Rep CerealSerializer x # to :: Rep CerealSerializer x -> CerealSerializer # | |||||
Serializer CerealSerializer Source # | |||||
Defined in Data.Serializer Methods endian :: Proxy CerealSerializer -> Endian Source # word8 :: Word8 -> CerealSerializer Source # word16 :: Word16 -> CerealSerializer Source # word32 :: Word32 -> CerealSerializer Source # word64 :: Word64 -> CerealSerializer Source # word16L :: Word16 -> CerealSerializer Source # word16B :: Word16 -> CerealSerializer Source # word32L :: Word32 -> CerealSerializer Source # word32B :: Word32 -> CerealSerializer Source # word64L :: Word64 -> CerealSerializer Source # word64B :: Word64 -> CerealSerializer Source # byteString :: ByteString -> CerealSerializer Source # shortByteString :: ShortByteString -> CerealSerializer Source # lazyByteString :: ByteString -> CerealSerializer Source # builder :: Builder -> CerealSerializer Source # | |||||
type Rep CerealSerializer Source # | |||||
Defined in Data.Serializer type Rep CerealSerializer = D1 ('MetaData "CerealSerializer" "Data.Serializer" "data-serializer-0.3.5-Jz2S5vZTSlWmtSo2LC0yN" 'True) (C1 ('MetaCons "CerealSerializer" 'PrefixI 'True) (S1 ('MetaSel ('Just "cerealSerializer") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Put))) |
Binary words serialization
word16H :: Serializer s => Word16 -> s Source #
Serialize an usigned 16-bit integer in host byte order.
word32H :: Serializer s => Word32 -> s Source #
Serialize an unsigned 32-bit integer in host byte order.
word64H :: Serializer s => Word64 -> s Source #
Serialize an unsigned 64-bit integer in host byte order.
word :: Serializer s => Word -> s Source #
Serialize an unsigned native-sized integer in serializer default byte order.
wordL :: Serializer s => Word -> s Source #
Serialize an unsigned native-sized integer in little endian.
wordB :: Serializer s => Word -> s Source #
Serialize an unsigned native-sized integer in big endian.
wordH :: Serializer s => Word -> s Source #
Serialize an unsigned native-sized integer in host byte order.
int8 :: Serializer s => Int8 -> s Source #
Serialize a signed 8-bit integer.
int16 :: Serializer s => Int16 -> s Source #
Serialize a signed 16-bit integer in serializer default byte order.
int16L :: Serializer s => Int16 -> s Source #
Serialize a signed 16-bit integer in little endian.
int16B :: Serializer s => Int16 -> s Source #
Serialize a signed 16-bit integer in big endian.
int16H :: Serializer s => Int16 -> s Source #
Serialize a signed 16-bit integer in host byte order.
int32 :: Serializer s => Int32 -> s Source #
Serialize a signed 32-bit integer in serializer default byte order.
int32L :: Serializer s => Int32 -> s Source #
Serialize a signed 32-bit integer in little endian.
int32B :: Serializer s => Int32 -> s Source #
Serialize a signed 32-bit integer in big endian.
int32H :: Serializer s => Int32 -> s Source #
Serialize a signed 32-bit integer in host byte order.
int64 :: Serializer s => Int64 -> s Source #
Serialize a signed 64-bit integer in serializer default byte order.
int64L :: Serializer s => Int64 -> s Source #
Serialize a signed 64-bit integer in little endian.
int64B :: Serializer s => Int64 -> s Source #
Serialize a signed 64-bit integer in big endian.
int64H :: Serializer s => Int64 -> s Source #
Serialize a signed 64-bit integer in host byte order.
int :: Serializer s => Int -> s Source #
Serialize a signed native-sized integer in serializer default byte order.
intL :: Serializer s => Int -> s Source #
Serialize a signed native-sized integer in little endian.
intB :: Serializer s => Int64 -> s Source #
Serialize a signed native-sized integer in big endian.
intH :: Serializer s => Int -> s Source #
Serialize a signed native-sized integer in host byte order.
Endian serializers
newtype LittleEndianSerializer s Source #
Serializer wrapper with little endian default byte order.
Constructors
LittleEndianSerializer | |
Fields
|
Instances
Data s => Data (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> LittleEndianSerializer s -> c (LittleEndianSerializer s) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (LittleEndianSerializer s) # toConstr :: LittleEndianSerializer s -> Constr # dataTypeOf :: LittleEndianSerializer s -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (LittleEndianSerializer s)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (LittleEndianSerializer s)) # gmapT :: (forall b. Data b => b -> b) -> LittleEndianSerializer s -> LittleEndianSerializer s # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> LittleEndianSerializer s -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> LittleEndianSerializer s -> r # gmapQ :: (forall d. Data d => d -> u) -> LittleEndianSerializer s -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> LittleEndianSerializer s -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> LittleEndianSerializer s -> m (LittleEndianSerializer s) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> LittleEndianSerializer s -> m (LittleEndianSerializer s) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> LittleEndianSerializer s -> m (LittleEndianSerializer s) # | |||||
Monoid s => Monoid (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods mempty :: LittleEndianSerializer s # mappend :: LittleEndianSerializer s -> LittleEndianSerializer s -> LittleEndianSerializer s # mconcat :: [LittleEndianSerializer s] -> LittleEndianSerializer s # | |||||
Semigroup s => Semigroup (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods (<>) :: LittleEndianSerializer s -> LittleEndianSerializer s -> LittleEndianSerializer s # sconcat :: NonEmpty (LittleEndianSerializer s) -> LittleEndianSerializer s # stimes :: Integral b => b -> LittleEndianSerializer s -> LittleEndianSerializer s # | |||||
Generic (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer Associated Types
Methods from :: LittleEndianSerializer s -> Rep (LittleEndianSerializer s) x # to :: Rep (LittleEndianSerializer s) x -> LittleEndianSerializer s # | |||||
Serializer s => Serializer (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods endian :: Proxy (LittleEndianSerializer s) -> Endian Source # word8 :: Word8 -> LittleEndianSerializer s Source # word16 :: Word16 -> LittleEndianSerializer s Source # word32 :: Word32 -> LittleEndianSerializer s Source # word64 :: Word64 -> LittleEndianSerializer s Source # word16L :: Word16 -> LittleEndianSerializer s Source # word16B :: Word16 -> LittleEndianSerializer s Source # word32L :: Word32 -> LittleEndianSerializer s Source # word32B :: Word32 -> LittleEndianSerializer s Source # word64L :: Word64 -> LittleEndianSerializer s Source # word64B :: Word64 -> LittleEndianSerializer s Source # byteString :: ByteString -> LittleEndianSerializer s Source # shortByteString :: ShortByteString -> LittleEndianSerializer s Source # lazyByteString :: ByteString -> LittleEndianSerializer s Source # builder :: Builder -> LittleEndianSerializer s Source # | |||||
type Rep (LittleEndianSerializer s) Source # | |||||
Defined in Data.Serializer type Rep (LittleEndianSerializer s) = D1 ('MetaData "LittleEndianSerializer" "Data.Serializer" "data-serializer-0.3.5-Jz2S5vZTSlWmtSo2LC0yN" 'True) (C1 ('MetaCons "LittleEndianSerializer" 'PrefixI 'True) (S1 ('MetaSel ('Just "serializeL") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 s))) |
newtype BigEndianSerializer s Source #
Serializer wrapper with big endian default byte order.
Constructors
BigEndianSerializer | |
Fields
|
Instances
Data s => Data (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> BigEndianSerializer s -> c (BigEndianSerializer s) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (BigEndianSerializer s) # toConstr :: BigEndianSerializer s -> Constr # dataTypeOf :: BigEndianSerializer s -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (BigEndianSerializer s)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (BigEndianSerializer s)) # gmapT :: (forall b. Data b => b -> b) -> BigEndianSerializer s -> BigEndianSerializer s # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> BigEndianSerializer s -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> BigEndianSerializer s -> r # gmapQ :: (forall d. Data d => d -> u) -> BigEndianSerializer s -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> BigEndianSerializer s -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> BigEndianSerializer s -> m (BigEndianSerializer s) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> BigEndianSerializer s -> m (BigEndianSerializer s) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> BigEndianSerializer s -> m (BigEndianSerializer s) # | |||||
Monoid s => Monoid (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods mempty :: BigEndianSerializer s # mappend :: BigEndianSerializer s -> BigEndianSerializer s -> BigEndianSerializer s # mconcat :: [BigEndianSerializer s] -> BigEndianSerializer s # | |||||
Semigroup s => Semigroup (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods (<>) :: BigEndianSerializer s -> BigEndianSerializer s -> BigEndianSerializer s # sconcat :: NonEmpty (BigEndianSerializer s) -> BigEndianSerializer s # stimes :: Integral b => b -> BigEndianSerializer s -> BigEndianSerializer s # | |||||
Generic (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer Associated Types
Methods from :: BigEndianSerializer s -> Rep (BigEndianSerializer s) x # to :: Rep (BigEndianSerializer s) x -> BigEndianSerializer s # | |||||
Serializer s => Serializer (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer Methods endian :: Proxy (BigEndianSerializer s) -> Endian Source # word8 :: Word8 -> BigEndianSerializer s Source # word16 :: Word16 -> BigEndianSerializer s Source # word32 :: Word32 -> BigEndianSerializer s Source # word64 :: Word64 -> BigEndianSerializer s Source # word16L :: Word16 -> BigEndianSerializer s Source # word16B :: Word16 -> BigEndianSerializer s Source # word32L :: Word32 -> BigEndianSerializer s Source # word32B :: Word32 -> BigEndianSerializer s Source # word64L :: Word64 -> BigEndianSerializer s Source # word64B :: Word64 -> BigEndianSerializer s Source # byteString :: ByteString -> BigEndianSerializer s Source # shortByteString :: ShortByteString -> BigEndianSerializer s Source # lazyByteString :: ByteString -> BigEndianSerializer s Source # builder :: Builder -> BigEndianSerializer s Source # | |||||
type Rep (BigEndianSerializer s) Source # | |||||
Defined in Data.Serializer type Rep (BigEndianSerializer s) = D1 ('MetaData "BigEndianSerializer" "Data.Serializer" "data-serializer-0.3.5-Jz2S5vZTSlWmtSo2LC0yN" 'True) (C1 ('MetaCons "BigEndianSerializer" 'PrefixI 'True) (S1 ('MetaSel ('Just "serializeB") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 s))) |
serializeIn :: Serializer s => Endian -> (forall s'. Serializer s' => s') -> s Source #
Force the default byte order.
serializeH :: Serializer s => (forall s'. Serializer s' => s') -> s Source #
Force the default byte order to be the host byte order.
Serializable types
class Serializable α where Source #
Serializable type. put
must work under assumption that it will be
followed by more output.
Methods
put :: Serializer s => α -> s Source #
Instances
Serializable Int16 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Int16 -> s Source # | |
Serializable Int32 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Int32 -> s Source # | |
Serializable Int64 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Int64 -> s Source # | |
Serializable Int8 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Int8 -> s Source # | |
Serializable Word16 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Word16 -> s Source # | |
Serializable Word32 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Word32 -> s Source # | |
Serializable Word64 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Word64 -> s Source # | |
Serializable Word8 Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Word8 -> s Source # | |
Serializable ByteString Source # | |
Defined in Data.Serializer Methods put :: Serializer s => ByteString -> s Source # | |
Serializable ShortByteString Source # | |
Defined in Data.Serializer Methods put :: Serializer s => ShortByteString -> s Source # | |
Serializable Bool Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Bool -> s Source # | |
Serializable Int Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Int -> s Source # | |
Serializable Word Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Word -> s Source # | |
Serializable α => Serializable (Maybe α) Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Maybe α -> s Source # | |
(Serializable α, Serializable β) => Serializable (Either α β) Source # | |
Defined in Data.Serializer Methods put :: Serializer s => Either α β -> s Source # | |
(Serializable α, Serializable β) => Serializable (α, β) Source # | |
Defined in Data.Serializer Methods put :: Serializer s => (α, β) -> s Source # |
putIn :: (Serializer s, Serializable α) => Endian -> α -> s Source #
Serialize a value using the provided default byte order.
putL :: (Serializer s, Serializable α) => α -> s Source #
Serialize a value using little endian as the default byte order.
putB :: (Serializer s, Serializable α) => α -> s Source #
Serialize a value using big endian as the default byte order.
putH :: (Serializer s, Serializable α) => α -> s Source #
Serialize a value using host byte order as the default byte order.
toBytes :: Serializable α => α -> [Word8] Source #
A shorthand for
.buildBytes
. put
toByteString :: Serializable α => α -> ByteString Source #
A shorthand for
.buildByteString
. put
toLazyByteString :: Serializable α => α -> ByteString Source #
A shorthand for
.buildLazyByteString
. put
class Serializable α => SizedSerializable α where Source #
Types with fixed serialized size.
Instances
SizedSerializable Int16 Source # | |
SizedSerializable Int32 Source # | |
SizedSerializable Int64 Source # | |
SizedSerializable Int8 Source # | |
SizedSerializable Word16 Source # | |
SizedSerializable Word32 Source # | |
SizedSerializable Word64 Source # | |
SizedSerializable Word8 Source # | |
SizedSerializable Bool Source # | |
SizedSerializable Int Source # | |
SizedSerializable Word Source # | |
(SizedSerializable α, SizedSerializable β) => SizedSerializable (α, β) Source # | |
class RestSerializable α where Source #
Serializable type. putRest
must work under assumption that it will not
be followed by any more output.
Methods
putRest :: Serializer s => α -> s Source #
Instances
RestSerializable Builder Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => Builder -> s Source # | |
RestSerializable ByteString Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => ByteString -> s Source # | |
RestSerializable ByteString Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => ByteString -> s Source # | |
RestSerializable ShortByteString Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => ShortByteString -> s Source # | |
Serializable α => RestSerializable [α] Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => [α] -> s Source # | |
(Serializable α, RestSerializable β) => RestSerializable (α, β) Source # | |
Defined in Data.Serializer Methods putRest :: Serializer s => (α, β) -> s Source # |