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 | Safe-Inferred |
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 where
- class GSerialiseDecode f where
- class GSerialiseProd f where
- nFields :: Proxy f -> Word
- encodeSeq :: f a -> Encoding
- gdecodeSeq :: Decoder s (f a)
- class GSerialiseSum f where
- conNumber :: f a -> Word
- numOfFields :: f a -> Word
- encodeSum :: f a -> Encoding
- decodeSum :: 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
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
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 #
Definition of a given
for a type.Decoder
Since: 0.2.0.0
default decode :: (Generic a, GSerialiseDecode (Rep a)) => Decoder s a #
encodeList :: [a] -> Encoding #
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] #
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 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Any # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise SomeTypeRep # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Version # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CChar # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CClock # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CDouble # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CFloat # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CInt # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CIntMax # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CIntPtr # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CLLong # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CLong # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CPtrdiff # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CSChar # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CSUSeconds # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CShort # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CSigAtomic # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CSize # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CTime # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUChar # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUInt # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUIntMax # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUIntPtr # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CULLong # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CULong # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUSeconds # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CUShort # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise CWchar # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Void # | Since: 0.2.4.0 |
Defined in Codec.Serialise.Class | |
Serialise Fingerprint # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise ExitCode # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Int16 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Int32 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Int64 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Int8 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Word16 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Word32 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Word64 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Word8 # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise ByteString # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise ByteString # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise ShortByteString # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Term # | Since: 0.2.0.0 |
Serialise IntSet # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise KindRep # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Ordering # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise TyCon # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise TypeLitSort # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Half # | Since: 0.2.0.0 |
Serialise Text # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Text # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise UTCTime # |
Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Integer # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Natural # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise () # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Bool # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Char # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Double # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Float # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Int # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Levity # | Since: 0.2.6.0 |
Defined in Codec.Serialise.Class | |
Serialise RuntimeRep # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise VecCount # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise VecElem # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise Word # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (ZipList a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Complex a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Identity a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (First a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Last a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Down a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (First a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Last a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Max a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Min a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (WrappedMonoid a) # | |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Dual a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Product a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Sum a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (NonEmpty a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Integral a) => Serialise (Ratio a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (IntMap a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Seq a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Ord a, Serialise a) => Serialise (Set a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Tree a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Maybe a) # | Since: 0.2.4.0 |
(Serialise a, Hashable a, Eq a) => Serialise (HashSet a) # | Since: 0.2.0.0 |
Serialise a => Serialise (Vector a) # | Since: 0.2.0.0 |
(Serialise a, Prim a) => Serialise (Vector a) # | Since: 0.2.0.0 |
(Serialise a, Storable a) => Serialise (Vector a) # | Since: 0.2.0.0 |
(Serialise a, Unbox a) => Serialise (Vector a) # | Since: 0.2.0.0 |
Serialise a => Serialise (Maybe a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise [a] # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b) => Serialise (Either a b) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise (Fixed e) # | Values are serialised in units of least precision represented as
Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise (Proxy a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Typeable a => Serialise (TypeRep a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Ord k, Serialise k, Serialise v) => Serialise (Map k v) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b) => Serialise (Either a b) # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (These a b) # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (Pair a b) # | Since: 0.2.4.0 |
(Serialise a, Serialise b) => Serialise (These a b) # | Since: 0.2.4.0 |
(Serialise k, Hashable k, Eq k, Serialise v) => Serialise (HashMap k v) # | Since: 0.2.0.0 |
(Serialise a, Serialise b) => Serialise (a, b) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => Serialise (Const a b) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise (f a) => Serialise (Alt f a) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b, Serialise c) => Serialise (a, b, c) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b, Serialise c, Serialise d) => Serialise (a, b, c, d) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e) => Serialise (a, b, c, d, e) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f) => Serialise (a, b, c, d, e, f) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g) => Serialise (a, b, c, d, e, f, g) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(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) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(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) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseEncode f where #
Since: 0.2.0.0
Instances
GSerialiseEncode (U1 :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseEncode (V1 :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseEncode (f :*: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseSum f, GSerialiseSum g) => GSerialiseEncode (f :+: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => GSerialiseEncode (K1 i a :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseEncode a => GSerialiseEncode (M1 i c a :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseDecode f where #
Since: 0.2.0.0
Instances
GSerialiseDecode (U1 :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseDecode (V1 :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseDecode (f :*: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseSum f, GSerialiseSum g) => GSerialiseDecode (f :+: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => GSerialiseDecode (K1 i a :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
GSerialiseDecode a => GSerialiseDecode (M1 i c a :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseProd f where #
Serialization of product types
Methods
Number of fields in product type
encodeSeq :: f a -> Encoding #
Encode fields sequentially without writing header
gdecodeSeq :: Decoder s (f a) #
Decode fields sequentially without reading header
Instances
GSerialiseProd (U1 :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(GSerialiseProd f, GSerialiseProd g) => GSerialiseProd (f :*: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
Serialise a => GSerialiseProd (K1 i a :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class | |
(i ~ S, GSerialiseProd f) => GSerialiseProd (M1 i c f :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class |
class GSerialiseSum f where #
Serialization of sum types
Since: 0.2.0.0
Methods
Number of constructor of given value
numOfFields :: f a -> Word #
Number of fields of given value
encodeSum :: f a -> Encoding #
Encode field
decodeSum :: Word -> Decoder s (f a) #
Decode field
nConstructors :: Proxy f -> Word #
Number of constructors
fieldsForCon :: Proxy f -> Word -> Decoder s Word #
Number of fields for given constructor number
Instances
(GSerialiseSum f, GSerialiseSum g) => GSerialiseSum (f :+: g :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class Methods conNumber :: forall (a :: k0). (f :+: g) a -> Word # numOfFields :: forall (a :: k0). (f :+: g) a -> Word # encodeSum :: forall (a :: k0). (f :+: g) a -> Encoding # decodeSum :: forall s (a :: k0). Word -> Decoder s ((f :+: g) a) # nConstructors :: Proxy (f :+: g) -> Word # fieldsForCon :: Proxy (f :+: g) -> Word -> Decoder s Word # | |
(i ~ C, GSerialiseProd f) => GSerialiseSum (M1 i c f :: k -> Type) # | Since: 0.2.0.0 |
Defined in Codec.Serialise.Class Methods conNumber :: forall (a :: k0). M1 i c f a -> Word # numOfFields :: forall (a :: k0). M1 i c f a -> Word # encodeSum :: forall (a :: k0). M1 i c f a -> Encoding # decodeSum :: forall s (a :: k0). Word -> Decoder s (M1 i c f a) # nConstructors :: Proxy (M1 i c f) -> Word # fieldsForCon :: Proxy (M1 i c f) -> Word -> Decoder s Word # |
encodeVector :: (Serialise a, Vector v a) => v a -> Encoding #
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) #
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.