Copyright | (c) Duncan Coutts 2015-2017 |
---|---|
License | BSD3-style (see LICENSE.txt) |
Maintainer | duncan@community.haskell.org |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Codec.Serialise.Class
Contents
Description
The
class allows you to encode a given type into a
CBOR object, or decode a CBOR object into the user-specified type.Serialise
Synopsis
- class Serialise a where
- encode :: a -> Encoding
- decode :: Decoder s a
- encodeList :: [a] -> Encoding
- decodeList :: Decoder s [a]
- class GSerialiseEncode (f :: k -> Type) where
- class GSerialiseDecode (f :: k -> Type) where
- class GSerialiseProd (f :: k -> Type) where
- nFields :: Proxy f -> Word
- encodeSeq :: forall (a :: k). f a -> Encoding
- gdecodeSeq :: forall s (a :: k). Decoder s (f a)
- class GSerialiseSum (f :: k -> Type) where
- conNumber :: forall (a :: k). f a -> Word
- numOfFields :: forall (a :: k). f a -> Word
- encodeSum :: forall (a :: k). f a -> Encoding
- decodeSum :: forall s (a :: k). Word -> Decoder s (f a)
- nConstructors :: Proxy f -> Word
- fieldsForCon :: Proxy f -> Word -> Decoder s Word
- encodeVector :: (Serialise a, Vector v a) => v a -> Encoding
- decodeVector :: (Serialise a, Vector v a) => Decoder s (v a)
- encodeContainerSkel :: (Word -> Encoding) -> (container -> Int) -> (accumFunc -> Encoding -> container -> Encoding) -> accumFunc -> container -> Encoding
- encodeMapSkel :: (Serialise k, Serialise v) => (m -> Int) -> ((k -> v -> Encoding -> Encoding) -> Encoding -> m -> Encoding) -> m -> Encoding
- decodeMapSkel :: (Serialise k, Serialise v) => ([(k, v)] -> m) -> Decoder s m
The Serialise class
class Serialise a where Source #
Types that are instances of the
class allow values
to be quickly encoded or decoded directly to a CBOR representation,
for object transmission or storage.Serialise
Since: 0.2.0.0
Minimal complete definition
Nothing
Methods
encode :: a -> Encoding Source #
Definition for encoding a given type into a binary
representation, using the Encoding
.Monoid
Since: 0.2.0.0
default encode :: (Generic a, GSerialiseEncode (Rep a)) => a -> Encoding Source #
decode :: Decoder s a Source #
Definition of a given
for a type.Decoder
Since: 0.2.0.0
default decode :: (Generic a, GSerialiseDecode (Rep a)) => Decoder s a Source #
encodeList :: [a] -> Encoding Source #
Utility to support specialised encoding for some list type -
used for
/Char
instances in this package.String
Since: 0.2.0.0
decodeList :: Decoder s [a] Source #
Utility to support specialised decoding for some list type -
used for
/Char
instances in this package.String
Since: 0.2.0.0
Instances
Serialise All Source # | Since: 0.2.0.0 |
Serialise Any Source # | Since: 0.2.0.0 |
Serialise SomeTypeRep Source # | Since: 0.2.0.0 |
Serialise Version Source # | Since: 0.2.0.0 |
Serialise CChar Source # | Since: 0.2.0.0 |
Serialise CClock Source # | Since: 0.2.0.0 |
Serialise CDouble Source # | Since: 0.2.0.0 |
Serialise CFloat Source # | Since: 0.2.0.0 |
Serialise CInt Source # | Since: 0.2.0.0 |
Serialise CIntMax Source # | Since: 0.2.0.0 |
Serialise CIntPtr Source # | Since: 0.2.0.0 |
Serialise CLLong Source # | Since: 0.2.0.0 |
Serialise CLong Source # | Since: 0.2.0.0 |
Serialise CPtrdiff Source # | Since: 0.2.0.0 |
Serialise CSChar Source # | Since: 0.2.0.0 |
Serialise CSUSeconds Source # | Since: 0.2.0.0 |
Serialise CShort Source # | Since: 0.2.0.0 |
Serialise CSigAtomic Source # | Since: 0.2.0.0 |
Serialise CSize Source # | Since: 0.2.0.0 |
Serialise CTime Source # | Since: 0.2.0.0 |
Serialise CUChar Source # | Since: 0.2.0.0 |
Serialise CUInt Source # | Since: 0.2.0.0 |
Serialise CUIntMax Source # | Since: 0.2.0.0 |
Serialise CUIntPtr Source # | Since: 0.2.0.0 |
Serialise CULLong Source # | Since: 0.2.0.0 |
Serialise CULong Source # | Since: 0.2.0.0 |
Serialise CUSeconds Source # | Since: 0.2.0.0 |
Serialise CUShort Source # | Since: 0.2.0.0 |
Serialise CWchar Source # | Since: 0.2.0.0 |
Serialise Void Source # | Since: 0.2.4.0 |
Serialise Fingerprint Source # | Since: 0.2.0.0 |
Serialise ExitCode Source # | Since: 0.2.0.0 |
Serialise Int16 Source # | Since: 0.2.0.0 |
Serialise Int32 Source # | Since: 0.2.0.0 |
Serialise Int64 Source # | Since: 0.2.0.0 |
Serialise Int8 Source # | Since: 0.2.0.0 |
Serialise Word16 Source # | Since: 0.2.0.0 |
Serialise Word32 Source # | Since: 0.2.0.0 |
Serialise Word64 Source # | Since: 0.2.0.0 |
Serialise Word8 Source # | Since: 0.2.0.0 |
Serialise ByteString Source # | Since: 0.2.0.0 |
Serialise ByteString Source # | Since: 0.2.0.0 |
Serialise ShortByteString Source # | Since: 0.2.0.0 |
Serialise Term Source # | Since: 0.2.0.0 |
Serialise IntSet Source # | Since: 0.2.0.0 |
Serialise KindRep Source # | Since: 0.2.0.0 |
Serialise Ordering Source # | Since: 0.2.0.0 |
Serialise TyCon Source # | Since: 0.2.0.0 |
Serialise TypeLitSort Source # | Since: 0.2.0.0 |
Serialise Half Source # | Since: 0.2.0.0 |
Serialise Text Source # | Since: 0.2.0.0 |
Serialise Text Source # | Since: 0.2.0.0 |
Serialise UTCTime Source # |
Since: 0.2.0.0 |
Serialise Integer Source # | Since: 0.2.0.0 |
Serialise Natural Source # | Since: 0.2.0.0 |
Serialise () Source # | Since: 0.2.0.0 |
Serialise Bool Source # | Since: 0.2.0.0 |
Serialise Char Source # | Since: 0.2.0.0 |
Serialise Double Source # | Since: 0.2.0.0 |
Serialise Float Source # | Since: 0.2.0.0 |
Serialise Int Source # | Since: 0.2.0.0 |
Serialise Levity Source # | Since: 0.2.6.0 |
Serialise RuntimeRep Source # | Since: 0.2.0.0 |
Serialise VecCount Source # | Since: 0.2.0.0 |
Serialise VecElem Source # | Since: 0.2.0.0 |
Serialise Word Source # | Since: 0.2.0.0 |
Serialise a => Serialise (ZipList a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Complex a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Identity a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (First a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Last a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Down a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (First a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Last a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Max a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Min a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (WrappedMonoid a) Source # | |
Serialise a => Serialise (Dual a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Product a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Sum a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (NonEmpty a) Source # | Since: 0.2.0.0 |
(Serialise a, Integral a) => Serialise (Ratio a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (IntMap a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Seq a) Source # | Since: 0.2.0.0 |
(Ord a, Serialise a) => Serialise (Set a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Tree a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Maybe a) Source # | Since: 0.2.4.0 |
(Serialise a, Hashable a, Eq a) => Serialise (HashSet a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Vector a) Source # | Since: 0.2.0.0 |
(Serialise a, Prim a) => Serialise (Vector a) Source # | Since: 0.2.0.0 |
(Serialise a, Storable a) => Serialise (Vector a) Source # | Since: 0.2.0.0 |
(Serialise a, Unbox a) => Serialise (Vector a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Maybe a) Source # | Since: 0.2.0.0 |
Serialise a => Serialise [a] Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b) => Serialise (Either a b) Source # | Since: 0.2.0.0 |
Serialise (Fixed e) Source # | Values are serialised in units of least precision represented as
Since: 0.2.0.0 |
Serialise (Proxy a) Source # | Since: 0.2.0.0 |
Typeable a => Serialise (TypeRep a) Source # | Since: 0.2.0.0 |
(Ord k, Serialise k, Serialise v) => Serialise (Map k v) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b) => Serialise (Either a b) Source # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (These a b) Source # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (Pair a b) Source # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (These a b) Source # | Since: 0.2.4.0 |
(Serialise k, Hashable k, Eq k, Serialise v) => Serialise (HashMap k v) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b) => Serialise (a, b) Source # | Since: 0.2.0.0 |
Serialise a => Serialise (Const a b) Source # | Since: 0.2.0.0 |
Serialise (f a) => Serialise (Alt f a) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c) => Serialise (a, b, c) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d) => Serialise (a, b, c, d) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e) => Serialise (a, b, c, d, e) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f) => Serialise (a, b, c, d, e, f) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g) => Serialise (a, b, c, d, e, f, g) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g, Serialise h) => Serialise (a, b, c, d, e, f, g, h) Source # | Since: 0.2.0.0 |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g, Serialise h, Serialise i) => Serialise (a, b, c, d, e, f, g, h, i) Source # | Since: 0.2.0.0 |
class GSerialiseEncode (f :: k -> Type) where Source #
Since: 0.2.0.0
Instances
GSerialiseEncode (U1 :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseEncode (V1 :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseEncode (f :*: g :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseSum f, GSerialiseSum g) => GSerialiseEncode (f :+: g :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => GSerialiseEncode (K1 i a :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseEncode a => GSerialiseEncode (M1 i c a :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseDecode (f :: k -> Type) where Source #
Since: 0.2.0.0
Instances
GSerialiseDecode (U1 :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseDecode (V1 :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseDecode (f :*: g :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseSum f, GSerialiseSum g) => GSerialiseDecode (f :+: g :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => GSerialiseDecode (K1 i a :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseDecode a => GSerialiseDecode (M1 i c a :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseProd (f :: k -> Type) where Source #
Serialization of product types
Methods
nFields :: Proxy f -> Word Source #
Number of fields in product type
encodeSeq :: forall (a :: k). f a -> Encoding Source #
Encode fields sequentially without writing header
gdecodeSeq :: forall s (a :: k). Decoder s (f a) Source #
Decode fields sequentially without reading header
Instances
GSerialiseProd (U1 :: k -> Type) Source # | Since: 0.2.0.0 |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseProd (f :*: g :: k -> Type) Source # | Since: 0.2.0.0 |
Serialise a => GSerialiseProd (K1 i a :: k -> Type) Source # | Since: 0.2.0.0 |
(i ~ S, GSerialiseProd f) => GSerialiseProd (M1 i c f :: k -> Type) Source # | Since: 0.2.0.0 |
class GSerialiseSum (f :: k -> Type) where Source #
Serialization of sum types
Since: 0.2.0.0
Methods
conNumber :: forall (a :: k). f a -> Word Source #
Number of constructor of given value
numOfFields :: forall (a :: k). f a -> Word Source #
Number of fields of given value
encodeSum :: forall (a :: k). f a -> Encoding Source #
Encode field
decodeSum :: forall s (a :: k). Word -> Decoder s (f a) Source #
Decode field
nConstructors :: Proxy f -> Word Source #
Number of constructors
fieldsForCon :: Proxy f -> Word -> Decoder s Word Source #
Number of fields for given constructor number
Instances
(GSerialiseSum f, GSerialiseSum g) => GSerialiseSum (f :+: g :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class Methods conNumber :: forall (a :: k). (f :+: g) a -> Word Source # numOfFields :: forall (a :: k). (f :+: g) a -> Word Source # encodeSum :: forall (a :: k). (f :+: g) a -> Encoding Source # decodeSum :: forall s (a :: k). Word -> Decoder s ((f :+: g) a) Source # nConstructors :: Proxy (f :+: g) -> Word Source # fieldsForCon :: Proxy (f :+: g) -> Word -> Decoder s Word Source # | |
(i ~ C, GSerialiseProd f) => GSerialiseSum (M1 i c f :: k -> Type) Source # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class Methods conNumber :: forall (a :: k). M1 i c f a -> Word Source # numOfFields :: forall (a :: k). M1 i c f a -> Word Source # encodeSum :: forall (a :: k). M1 i c f a -> Encoding Source # decodeSum :: forall s (a :: k). Word -> Decoder s (M1 i c f a) Source # nConstructors :: Proxy (M1 i c f) -> Word Source # fieldsForCon :: Proxy (M1 i c f) -> Word -> Decoder s Word Source # |
encodeVector :: (Serialise a, Vector v a) => v a -> Encoding Source #
Generic encoder for vectors. Its intended use is to allow easy
definition of Serialise
instances for custom vector
Since: 0.2.0.0
decodeVector :: (Serialise a, Vector v a) => Decoder s (v a) Source #
Generic decoder for vectors. Its intended use is to allow easy
definition of Serialise
instances for custom vector
Since: 0.2.0.0
Arguments
:: (Word -> Encoding) | encoder of the length |
-> (container -> Int) | length |
-> (accumFunc -> Encoding -> container -> Encoding) | foldr |
-> accumFunc | |
-> container | |
-> Encoding |
Patch functions together to obtain an Encoding
for a container.