| 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 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 Void Source # | Since: 0.2.4.0 |
| 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 Fingerprint 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 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 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 (Complex 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 (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 (NonEmpty 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 (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 (ZipList a) Source # | Since: 0.2.0.0 |
| (Serialise a, Integral a) => Serialise (Ratio 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 (Fixed e) Source # | Values are serialised in units of least precision represented as
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.0.0 |
| Serialise (Proxy a) Source # | Since: 0.2.0.0 |
| Typeable a => Serialise (TypeRep a) 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.