-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Sustainable serialisation library
--
-- Please see the README on Github at
-- https://github.com/fumieval/winery#readme
@package winery
@version 0
module Data.Winery.Internal
type Encoding = (Sum Int, Builder)
encodeMulti :: [Encoding] -> Encoding
encodeVarInt :: (Integral a, Bits a) => a -> Encoding
type Decoder = (->) ByteString
decodeAt :: Int -> Decoder a -> Decoder a
decodeVarInt :: (Num a, Bits a) => ContT r Decoder a
decodeOffsets :: Int -> ContT r Decoder [Int]
getWord8 :: ContT r Decoder Word8
getBytes :: Decoder ByteString
word16be :: ByteString -> Word16
word32be :: ByteString -> Word32
word64be :: ByteString -> Word64
unsafeIndex :: String -> [a] -> Int -> a
newtype Strategy a
Strategy :: ([Decoder Dynamic] -> Either StrategyError a) -> Strategy a
[unStrategy] :: Strategy a -> [Decoder Dynamic] -> Either StrategyError a
type StrategyError = Doc AnsiStyle
errorStrategy :: Doc AnsiStyle -> Strategy a
instance GHC.Base.Functor Data.Winery.Internal.Strategy
instance GHC.Base.Applicative Data.Winery.Internal.Strategy
instance GHC.Base.Monad Data.Winery.Internal.Strategy
instance GHC.Base.Alternative Data.Winery.Internal.Strategy
instance Control.Monad.Fix.MonadFix Data.Winery.Internal.Strategy
module Data.Winery
data Schema
SSchema :: !Word8 -> Schema
SUnit :: Schema
SBool :: Schema
SChar :: Schema
SWord8 :: Schema
SWord16 :: Schema
SWord32 :: Schema
SWord64 :: Schema
SInt8 :: Schema
SInt16 :: Schema
SInt32 :: Schema
SInt64 :: Schema
SInteger :: Schema
SFloat :: Schema
SDouble :: Schema
SBytes :: Schema
SText :: Schema
SList :: !Schema -> Schema
SArray :: !(VarInt Int) -> !Schema -> Schema
SProduct :: [Schema] -> Schema
SProductFixed :: [(VarInt Int, Schema)] -> Schema
SRecord :: [(Text, Schema)] -> Schema
SVariant :: [(Text, [Schema])] -> Schema
-- | binds a fixpoint
SFix :: Schema -> Schema
-- | SSelf n refers to the n-th innermost fixpoint
SSelf :: !Word8 -> Schema
-- | Serialisable datatype
class Typeable a => Serialise a
-- | Obtain the schema of the datatype. [TypeRep] is for handling
-- recursion.
schemaVia :: Serialise a => Proxy a -> [TypeRep] -> Schema
-- | Serialise a value.
toEncoding :: Serialise a => a -> Encoding
-- | The Deserialiser
deserialiser :: Serialise a => Deserialiser a
-- | If this is Just x, the size of toEncoding must
-- be x. deserialiser must not depend on this value.
constantSize :: Serialise a => Proxy a -> Maybe Int
-- | Obtain the schema of the datatype. [TypeRep] is for handling
-- recursion.
schemaVia :: (Serialise a, Generic a, GSerialiseVariant (Rep a)) => Proxy a -> [TypeRep] -> Schema
-- | Serialise a value.
toEncoding :: (Serialise a, Generic a, GSerialiseVariant (Rep a)) => a -> Encoding
-- | The Deserialiser
deserialiser :: (Serialise a, Generic a, GSerialiseVariant (Rep a)) => Deserialiser a
-- | Obtain the schema of the datatype.
schema :: forall proxy a. Serialise a => proxy a -> Schema
-- | Serialise a value along with its schema.
serialise :: Serialise a => a -> ByteString
-- | Deserialise a serialised Bytestring.
deserialise :: Serialise a => ByteString -> Either StrategyError a
-- | Deserialiser is a Plan that creates a Decoder.
newtype Deserialiser a
Deserialiser :: Plan (Decoder a) -> Deserialiser a
[getDeserialiser] :: Deserialiser a -> Plan (Decoder a)
type Decoder = (->) ByteString
-- | Serialise a value without its schema.
serialiseOnly :: Serialise a => a -> ByteString
-- | Obtain a decoder from a schema.
getDecoder :: Serialise a => Schema -> Either StrategyError (Decoder a)
-- | Get a decoder from a Deserialiser and a schema.
getDecoderBy :: Deserialiser a -> Schema -> Either StrategyError (Decoder a)
type Encoding = (Sum Int, Builder)
encodeMulti :: [Encoding] -> Encoding
newtype Plan a
Plan :: (Schema -> Strategy a) -> Plan a
[unPlan] :: Plan a -> Schema -> Strategy a
-- | Extract a list or an array of values.
extractListWith :: Deserialiser a -> Deserialiser [a]
-- | Extract a field of a record.
extractField :: Serialise a => Text -> Deserialiser a
-- | Extract a field using the supplied Deserialiser.
extractFieldWith :: Typeable a => Deserialiser a -> Text -> Deserialiser a
extractConstructor :: (Serialise a) => Text -> Deserialiser (Maybe a)
-- | Tries to extract a specific constructor of a variant. Useful for
-- implementing backward-compatible deserialisers.
extractConstructorWith :: Typeable a => Deserialiser a -> Text -> Deserialiser (Maybe a)
-- | Encoded in variable-length quantity.
newtype VarInt a
VarInt :: a -> VarInt a
[getVarInt] :: VarInt a -> a
unwrapDeserialiser :: Deserialiser a -> Schema -> Strategy (Decoder a)
data Strategy a
type StrategyError = Doc AnsiStyle
class GSerialiseRecord f
-- | Generic implementation of schemaVia for a record.
gschemaViaRecord :: forall proxy a. (GSerialiseRecord (Rep a), Generic a, Typeable a) => proxy a -> [TypeRep] -> Schema
-- | Generic implementation of toEncoding for a record.
gtoEncodingRecord :: (GSerialiseRecord (Rep a), Generic a) => a -> Encoding
-- | Generic implementation of deserialiser for a record.
gdeserialiserRecord :: forall a. (GSerialiseRecord (Rep a), Generic a, Typeable a) => Maybe a -> Deserialiser a
class GSerialiseVariant f
-- | Generic implementation of schemaVia for an ADT.
gschemaViaVariant :: forall proxy a. (GSerialiseVariant (Rep a), Typeable a, Generic a) => proxy a -> [TypeRep] -> Schema
-- | Generic implementation of toEncoding for an ADT.
gtoEncodingVariant :: (GSerialiseVariant (Rep a), Generic a) => a -> Encoding
-- | Generic implementation of deserialiser for an ADT.
gdeserialiserVariant :: forall a. (GSerialiseVariant (Rep a), Generic a, Typeable a) => Deserialiser a
bootstrapSchema :: Word8 -> Either StrategyError Schema
instance GHC.Base.Functor Data.Winery.Deserialiser
instance GHC.Base.Functor Data.Winery.Plan
instance GHC.Generics.Generic Data.Winery.Schema
instance GHC.Classes.Eq Data.Winery.Schema
instance GHC.Read.Read Data.Winery.Schema
instance GHC.Show.Show Data.Winery.Schema
instance Data.Bits.Bits a => Data.Bits.Bits (Data.Winery.VarInt a)
instance GHC.Real.Integral a => GHC.Real.Integral (Data.Winery.VarInt a)
instance GHC.Real.Real a => GHC.Real.Real (Data.Winery.VarInt a)
instance GHC.Num.Num a => GHC.Num.Num (Data.Winery.VarInt a)
instance GHC.Enum.Bounded a => GHC.Enum.Bounded (Data.Winery.VarInt a)
instance GHC.Enum.Enum a => GHC.Enum.Enum (Data.Winery.VarInt a)
instance GHC.Classes.Ord a => GHC.Classes.Ord (Data.Winery.VarInt a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Data.Winery.VarInt a)
instance GHC.Read.Read a => GHC.Read.Read (Data.Winery.VarInt a)
instance GHC.Show.Show a => GHC.Show.Show (Data.Winery.VarInt a)
instance GHC.Base.Functor (Data.Winery.RecordDecoder i)
instance Data.Winery.Serialise Data.Winery.Schema
instance Data.Winery.Serialise ()
instance Data.Winery.Serialise GHC.Types.Bool
instance Data.Winery.Serialise GHC.Word.Word8
instance Data.Winery.Serialise GHC.Word.Word16
instance Data.Winery.Serialise GHC.Word.Word32
instance Data.Winery.Serialise GHC.Word.Word64
instance Data.Winery.Serialise GHC.Types.Word
instance Data.Winery.Serialise GHC.Int.Int8
instance Data.Winery.Serialise GHC.Int.Int16
instance Data.Winery.Serialise GHC.Int.Int32
instance Data.Winery.Serialise GHC.Int.Int64
instance Data.Winery.Serialise GHC.Types.Int
instance Data.Winery.Serialise GHC.Types.Float
instance Data.Winery.Serialise GHC.Types.Double
instance Data.Winery.Serialise Data.Text.Internal.Text
instance (Data.Typeable.Internal.Typeable a, GHC.Real.Integral a, Data.Bits.Bits a) => Data.Winery.Serialise (Data.Winery.VarInt a)
instance Data.Winery.Serialise GHC.Integer.Type.Integer
instance Data.Winery.Serialise GHC.Types.Char
instance Data.Winery.Serialise a => Data.Winery.Serialise (GHC.Base.Maybe a)
instance Data.Winery.Serialise Data.ByteString.Internal.ByteString
instance Data.Winery.Serialise a => Data.Winery.Serialise [a]
instance Data.Winery.Serialise a => Data.Winery.Serialise (Data.Vector.Vector a)
instance (Foreign.Storable.Storable a, Data.Winery.Serialise a) => Data.Winery.Serialise (Data.Vector.Storable.Vector a)
instance (Data.Vector.Unboxed.Base.Unbox a, Data.Winery.Serialise a) => Data.Winery.Serialise (Data.Vector.Unboxed.Base.Vector a)
instance (GHC.Classes.Ord k, Data.Winery.Serialise k, Data.Winery.Serialise v) => Data.Winery.Serialise (Data.Map.Internal.Map k v)
instance (GHC.Classes.Eq k, Data.Hashable.Class.Hashable k, Data.Winery.Serialise k, Data.Winery.Serialise v) => Data.Winery.Serialise (Data.HashMap.Base.HashMap k v)
instance Data.Winery.Serialise v => Data.Winery.Serialise (Data.IntMap.Internal.IntMap v)
instance (GHC.Classes.Ord a, Data.Winery.Serialise a) => Data.Winery.Serialise (Data.Set.Internal.Set a)
instance Data.Winery.Serialise Data.IntSet.Internal.IntSet
instance Data.Winery.Serialise a => Data.Winery.Serialise (Data.Sequence.Internal.Seq a)
instance Data.Winery.Serialise a => Data.Winery.Serialise (Data.Functor.Identity.Identity a)
instance (Data.Winery.Serialise a, Data.Winery.Serialise b) => Data.Winery.Serialise (a, b)
instance (Data.Winery.Serialise a, Data.Winery.Serialise b, Data.Winery.Serialise c) => Data.Winery.Serialise (a, b, c)
instance (Data.Winery.Serialise a, Data.Winery.Serialise b, Data.Winery.Serialise c, Data.Winery.Serialise d) => Data.Winery.Serialise (a, b, c, d)
instance (Data.Winery.Serialise a, Data.Winery.Serialise b) => Data.Winery.Serialise (Data.Either.Either a b)
instance (Data.Winery.Serialise a, GHC.Generics.Selector c) => Data.Winery.GSerialiseRecord (GHC.Generics.S1 c (GHC.Generics.K1 i a))
instance Data.Winery.Serialise a => Data.Winery.GSerialiseProduct (GHC.Generics.K1 i a)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Winery.GSerialiseVariant f, Data.Winery.GSerialiseVariant g) => Data.Winery.GSerialiseVariant (f GHC.Generics.:+: g)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). (Data.Winery.GSerialiseProduct f, GHC.Generics.Constructor c) => Data.Winery.GSerialiseVariant (GHC.Generics.C1 c f)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). Data.Winery.GSerialiseVariant f => Data.Winery.GSerialiseVariant (GHC.Generics.S1 c f)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). Data.Winery.GSerialiseVariant f => Data.Winery.GSerialiseVariant (GHC.Generics.D1 c f)
instance Data.Winery.GSerialiseProduct GHC.Generics.U1
instance forall k (f :: k -> *) i (c :: GHC.Generics.Meta). Data.Winery.GSerialiseProduct f => Data.Winery.GSerialiseProduct (GHC.Generics.M1 i c f)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Winery.GSerialiseProduct f, Data.Winery.GSerialiseProduct g) => Data.Winery.GSerialiseProduct (f GHC.Generics.:*: g)
instance forall k (f :: k -> *) (g :: k -> *). (Data.Winery.GSerialiseRecord f, Data.Winery.GSerialiseRecord g) => Data.Winery.GSerialiseRecord (f GHC.Generics.:*: g)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). Data.Winery.GSerialiseRecord f => Data.Winery.GSerialiseRecord (GHC.Generics.C1 c f)
instance forall k (f :: k -> *) (c :: GHC.Generics.Meta). Data.Winery.GSerialiseRecord f => Data.Winery.GSerialiseRecord (GHC.Generics.D1 c f)
instance GHC.Base.Applicative (Data.Winery.RecordDecoder i)
instance GHC.Base.Applicative Data.Winery.Deserialiser
instance GHC.Base.Applicative Data.Winery.Plan
instance GHC.Base.Monad Data.Winery.Plan
instance GHC.Base.Alternative Data.Winery.Plan
instance Data.Text.Prettyprint.Doc.Internal.Pretty Data.Winery.Schema
module Data.Winery.Term
-- | Common representation for any winery data. Handy for prettyprinting
-- winery-serialised data.
data Term
TUnit :: Term
TBool :: !Bool -> Term
TChar :: !Char -> Term
TWord8 :: !Word8 -> Term
TWord16 :: !Word16 -> Term
TWord32 :: !Word32 -> Term
TWord64 :: !Word64 -> Term
TInt8 :: !Int8 -> Term
TInt16 :: !Int16 -> Term
TInt32 :: !Int32 -> Term
TInt64 :: !Int64 -> Term
TInteger :: !Integer -> Term
TFloat :: !Float -> Term
TDouble :: !Double -> Term
TBytes :: !ByteString -> Term
TText :: !Text -> Term
TList :: [Term] -> Term
TProduct :: [Term] -> Term
TRecord :: [(Text, Term)] -> Term
TVariant :: !Text -> [Term] -> Term
-- | Deserialiser for a Term.
decodeTerm :: Deserialiser Term
-- | Deserialise a serialised Bytestring.
deserialiseTerm :: ByteString -> Either (Doc AnsiStyle) (Schema, Term)
instance GHC.Show.Show Data.Winery.Term.Term
instance Data.Text.Prettyprint.Doc.Internal.Pretty Data.Winery.Term.Term