-- 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