store-0.5.1.1: Fast binary serialization

Safe HaskellNone
LanguageHaskell2010

Data.Store

Contents

Description

This is the main public API of the store package. The functions exported here are more likely to be stable between versions.

Usually you won't need to write your own Store instances, and instead can rely on either using the Generic deriving approach or Data.Store.TH for defining Store instances for your datatypes. There are some tradeoffs here - the generics instances do not require -XTemplateHaskell, but they do not optimize as well for sum types that only require a constant number of bytes.

If you need streaming encode / decode of multiple store encoded messages, take a look at the store-streaming package.

Synopsis

Encoding and decoding strict ByteStrings.

encode :: Store a => a -> ByteString Source #

Serializes a value to a ByteString. In order to do this, it first allocates a ByteString of the correct size (based on size), and then uses poke to fill it.

Safety of this function depends on correctness of the Store instance. If size returns a. The good news is that this isn't an issue if you use well-tested manual instances (such as those from this package) combined with auomatic definition of instances.

decode :: Store a => ByteString -> Either PeekException a Source #

Decodes a value from a ByteString. Returns an exception if there's an error while decoding, or if decoding undershoots / overshoots the end of the buffer.

decodeWith :: Peek a -> ByteString -> Either PeekException a Source #

Decodes a value from a ByteString, potentially throwing exceptions, and taking a Peek to run. It is an exception to not consume all input.

decodeEx :: Store a => ByteString -> a Source #

Decodes a value from a ByteString, potentially throwing exceptions. It is an exception to not consume all input.

decodeExWith :: Peek a -> ByteString -> a Source #

Decodes a value from a ByteString, potentially throwing exceptions, and taking a Peek to run. It is an exception to not consume all input.

decodeExPortionWith :: Peek a -> ByteString -> (Offset, a) Source #

Similar to decodeExWith, but it allows there to be more of the buffer remaining. The Offset of the buffer contents immediately after the decoded value is returned.

decodeIO :: Store a => ByteString -> IO a Source #

Decodes a value from a ByteString, potentially throwing exceptions. It is an exception to not consume all input.

decodeIOWith :: Peek a -> ByteString -> IO a Source #

Decodes a value from a ByteString, potentially throwing exceptions, and taking a Peek to run. It is an exception to not consume all input.

decodeIOPortionWith :: Peek a -> ByteString -> IO (Offset, a) Source #

Similar to decodeExPortionWith, but runs in the IO monad.

Store class and related types.

class Store a where Source #

The Store typeclass provides efficient serialization and deserialization to raw pointer addresses.

The peek and poke methods should be defined such that decodeEx (encode x) == x .

Minimal complete definition

Nothing

Methods

size :: Size a Source #

Yields the Size of the buffer, in bytes, required to store the encoded representation of the type.

Note that the correctness of this function is crucial for the safety of poke, as it does not do any bounds checking. It is the responsibility of the invoker of poke (encode and similar functions) to ensure that there's enough space in the output buffer. If poke writes beyond, then arbitrary memory can be overwritten, causing undefined behavior and segmentation faults.

poke :: a -> Poke () Source #

Serializes a value to bytes. It is the responsibility of the caller to ensure that at least the number of bytes required by size are available. These details are handled by encode and similar utilities.

peek :: Peek a Source #

Serialized a value from bytes, throwing exceptions if it encounters invalid data or runs out of input bytes.

size :: (Generic a, GStoreSize (Rep a)) => Size a Source #

Yields the Size of the buffer, in bytes, required to store the encoded representation of the type.

Note that the correctness of this function is crucial for the safety of poke, as it does not do any bounds checking. It is the responsibility of the invoker of poke (encode and similar functions) to ensure that there's enough space in the output buffer. If poke writes beyond, then arbitrary memory can be overwritten, causing undefined behavior and segmentation faults.

poke :: (Generic a, GStorePoke (Rep a)) => a -> Poke () Source #

Serializes a value to bytes. It is the responsibility of the caller to ensure that at least the number of bytes required by size are available. These details are handled by encode and similar utilities.

peek :: (Generic a, GStorePeek (Rep a)) => Peek a Source #

Serialized a value from bytes, throwing exceptions if it encounters invalid data or runs out of input bytes.

Instances
Store Bool Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Bool Source #

poke :: Bool -> Poke () Source #

peek :: Peek Bool Source #

Store Char Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Char Source #

poke :: Char -> Poke () Source #

peek :: Peek Char Source #

Store Double Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Double Source #

poke :: Double -> Poke () Source #

peek :: Peek Double Source #

Store Float Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Float Source #

poke :: Float -> Poke () Source #

peek :: Peek Float Source #

Store Int Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Int Source #

poke :: Int -> Poke () Source #

peek :: Peek Int Source #

Store Int8 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Int8 Source #

poke :: Int8 -> Poke () Source #

peek :: Peek Int8 Source #

Store Int16 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Int16 Source #

poke :: Int16 -> Poke () Source #

peek :: Peek Int16 Source #

Store Int32 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Int32 Source #

poke :: Int32 -> Poke () Source #

peek :: Peek Int32 Source #

Store Int64 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Int64 Source #

poke :: Int64 -> Poke () Source #

peek :: Peek Int64 Source #

Store Integer Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Integer Source #

poke :: Integer -> Poke () Source #

peek :: Peek Integer Source #

Store Word Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Word Source #

poke :: Word -> Poke () Source #

peek :: Peek Word Source #

Store Word8 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Word8 Source #

poke :: Word8 -> Poke () Source #

peek :: Peek Word8 Source #

Store Word16 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Word16 Source #

poke :: Word16 -> Poke () Source #

peek :: Peek Word16 Source #

Store Word32 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Word32 Source #

poke :: Word32 -> Poke () Source #

peek :: Peek Word32 Source #

Store Word64 Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Word64 Source #

poke :: Word64 -> Poke () Source #

peek :: Peek Word64 Source #

Store Exp Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Exp Source #

poke :: Exp -> Poke () Source #

peek :: Peek Exp Source #

Store Match Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Match Source #

poke :: Match -> Poke () Source #

peek :: Peek Match Source #

Store Clause Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Clause Source #

poke :: Clause -> Poke () Source #

peek :: Peek Clause Source #

Store Pat Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Pat Source #

poke :: Pat -> Poke () Source #

peek :: Peek Pat Source #

Store Type Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Type Source #

poke :: Type -> Poke () Source #

peek :: Peek Type Source #

Store Dec Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Dec Source #

poke :: Dec -> Poke () Source #

peek :: Peek Dec Source #

Store Name Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Name Source #

poke :: Name -> Poke () Source #

peek :: Peek Name Source #

Store FunDep Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size FunDep Source #

poke :: FunDep -> Poke () Source #

peek :: Peek FunDep Source #

Store InjectivityAnn Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size InjectivityAnn Source #

poke :: InjectivityAnn -> Poke () Source #

peek :: Peek InjectivityAnn Source #

Store Overlap Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Overlap Source #

poke :: Overlap -> Poke () Source #

peek :: Peek Overlap Source #

Store () Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size () Source #

poke :: () -> Poke () Source #

peek :: Peek () Source #

Store ByteString Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size ByteString Source #

poke :: ByteString -> Poke () Source #

peek :: Peek ByteString Source #

Store Info Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Info Source #

poke :: Info -> Poke () Source #

peek :: Peek Info Source #

Store Con Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Con Source #

poke :: Con -> Poke () Source #

peek :: Peek Con Source #

Store NameFlavour Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size NameFlavour Source #

poke :: NameFlavour -> Poke () Source #

peek :: Peek NameFlavour Source #

Store TyVarBndr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size TyVarBndr Source #

poke :: TyVarBndr -> Poke () Source #

peek :: Peek TyVarBndr Source #

Store CSize Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CSize Source #

poke :: CSize -> Poke () Source #

peek :: Peek CSize Source #

Store CChar Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CChar Source #

poke :: CChar -> Poke () Source #

peek :: Peek CChar Source #

Store Text Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Text Source #

poke :: Text -> Poke () Source #

peek :: Peek Text Source #

Store Fingerprint Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Fingerprint Source #

poke :: Fingerprint -> Poke () Source #

peek :: Peek Fingerprint Source #

Store CInt Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CInt Source #

poke :: CInt -> Poke () Source #

peek :: Peek CInt Source #

Store Any Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Any Source #

poke :: Any -> Poke () Source #

peek :: Peek Any Source #

Store ByteString Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size ByteString Source #

poke :: ByteString -> Poke () Source #

peek :: Peek ByteString Source #

Store All Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size All Source #

poke :: All -> Poke () Source #

peek :: Peek All Source #

Store Void Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Void Source #

poke :: Void -> Poke () Source #

peek :: Peek Void Source #

Store CULong Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CULong Source #

poke :: CULong -> Poke () Source #

peek :: Peek CULong Source #

Store CBool Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CBool Source #

poke :: CBool -> Poke () Source #

peek :: Peek CBool Source #

Store CClock Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CClock Source #

poke :: CClock -> Poke () Source #

peek :: Peek CClock Source #

Store CDouble Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CDouble Source #

poke :: CDouble -> Poke () Source #

peek :: Peek CDouble Source #

Store CFloat Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CFloat Source #

poke :: CFloat -> Poke () Source #

peek :: Peek CFloat Source #

Store CIntMax Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CIntMax Source #

poke :: CIntMax -> Poke () Source #

peek :: Peek CIntMax Source #

Store CIntPtr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CIntPtr Source #

poke :: CIntPtr -> Poke () Source #

peek :: Peek CIntPtr Source #

Store CLLong Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CLLong Source #

poke :: CLLong -> Poke () Source #

peek :: Peek CLLong Source #

Store CLong Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CLong Source #

poke :: CLong -> Poke () Source #

peek :: Peek CLong Source #

Store CPtrdiff Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CPtrdiff Source #

poke :: CPtrdiff -> Poke () Source #

peek :: Peek CPtrdiff Source #

Store CSChar Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CSChar Source #

poke :: CSChar -> Poke () Source #

peek :: Peek CSChar Source #

Store CSUSeconds Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CSUSeconds Source #

poke :: CSUSeconds -> Poke () Source #

peek :: Peek CSUSeconds Source #

Store CShort Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CShort Source #

poke :: CShort -> Poke () Source #

peek :: Peek CShort Source #

Store CSigAtomic Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CSigAtomic Source #

poke :: CSigAtomic -> Poke () Source #

peek :: Peek CSigAtomic Source #

Store CTime Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CTime Source #

poke :: CTime -> Poke () Source #

peek :: Peek CTime Source #

Store CUChar Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUChar Source #

poke :: CUChar -> Poke () Source #

peek :: Peek CUChar Source #

Store CUInt Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUInt Source #

poke :: CUInt -> Poke () Source #

peek :: Peek CUInt Source #

Store CUIntMax Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUIntMax Source #

poke :: CUIntMax -> Poke () Source #

peek :: Peek CUIntMax Source #

Store CUIntPtr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUIntPtr Source #

poke :: CUIntPtr -> Poke () Source #

peek :: Peek CUIntPtr Source #

Store CULLong Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CULLong Source #

poke :: CULLong -> Poke () Source #

peek :: Peek CULLong Source #

Store CUSeconds Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUSeconds Source #

poke :: CUSeconds -> Poke () Source #

peek :: Peek CUSeconds Source #

Store CUShort Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CUShort Source #

poke :: CUShort -> Poke () Source #

peek :: Peek CUShort Source #

Store CWchar Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size CWchar Source #

poke :: CWchar -> Poke () Source #

peek :: Peek CWchar Source #

Store AnnTarget Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size AnnTarget Source #

poke :: AnnTarget -> Poke () Source #

peek :: Peek AnnTarget Source #

Store Bang Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Bang Source #

poke :: Bang -> Poke () Source #

peek :: Peek Bang Source #

Store Body Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Body Source #

poke :: Body -> Poke () Source #

peek :: Peek Body Source #

Store Callconv Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Callconv Source #

poke :: Callconv -> Poke () Source #

peek :: Peek Callconv Source #

Store DerivClause Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size DerivClause Source #

poke :: DerivClause -> Poke () Source #

peek :: Peek DerivClause Source #

Store DerivStrategy Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size DerivStrategy Source #

poke :: DerivStrategy -> Poke () Source #

peek :: Peek DerivStrategy Source #

Store FamilyResultSig Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size FamilyResultSig Source #

poke :: FamilyResultSig -> Poke () Source #

peek :: Peek FamilyResultSig Source #

Store Fixity Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Fixity Source #

poke :: Fixity -> Poke () Source #

peek :: Peek Fixity Source #

Store FixityDirection Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size FixityDirection Source #

poke :: FixityDirection -> Poke () Source #

peek :: Peek FixityDirection Source #

Store Foreign Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Foreign Source #

poke :: Foreign -> Poke () Source #

peek :: Peek Foreign Source #

Store Guard Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Guard Source #

poke :: Guard -> Poke () Source #

peek :: Peek Guard Source #

Store Inline Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Inline Source #

poke :: Inline -> Poke () Source #

peek :: Peek Inline Source #

Store Lit Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Lit Source #

poke :: Lit -> Poke () Source #

peek :: Peek Lit Source #

Store NameSpace Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size NameSpace Source #

poke :: NameSpace -> Poke () Source #

peek :: Peek NameSpace Source #

Store PatSynArgs Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size PatSynArgs Source #

poke :: PatSynArgs -> Poke () Source #

peek :: Peek PatSynArgs Source #

Store PatSynDir Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size PatSynDir Source #

poke :: PatSynDir -> Poke () Source #

peek :: Peek PatSynDir Source #

Store Phases Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Phases Source #

poke :: Phases -> Poke () Source #

peek :: Peek Phases Source #

Store Pragma Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Pragma Source #

poke :: Pragma -> Poke () Source #

peek :: Peek Pragma Source #

Store Range Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Range Source #

poke :: Range -> Poke () Source #

peek :: Peek Range Source #

Store Role Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Role Source #

poke :: Role -> Poke () Source #

peek :: Peek Role Source #

Store RuleBndr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size RuleBndr Source #

poke :: RuleBndr -> Poke () Source #

peek :: Peek RuleBndr Source #

Store RuleMatch Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size RuleMatch Source #

poke :: RuleMatch -> Poke () Source #

peek :: Peek RuleMatch Source #

Store Safety Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Safety Source #

poke :: Safety -> Poke () Source #

peek :: Peek Safety Source #

Store SourceStrictness Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size SourceStrictness Source #

poke :: SourceStrictness -> Poke () Source #

peek :: Peek SourceStrictness Source #

Store SourceUnpackedness Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size SourceUnpackedness Source #

poke :: SourceUnpackedness -> Poke () Source #

peek :: Peek SourceUnpackedness Source #

Store Stmt Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Stmt Source #

poke :: Stmt -> Poke () Source #

peek :: Peek Stmt Source #

Store TyLit Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size TyLit Source #

poke :: TyLit -> Poke () Source #

peek :: Peek TyLit Source #

Store TySynEqn Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size TySynEqn Source #

poke :: TySynEqn -> Poke () Source #

peek :: Peek TySynEqn Source #

Store TypeFamilyHead Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size TypeFamilyHead Source #

poke :: TypeFamilyHead -> Poke () Source #

peek :: Peek TypeFamilyHead Source #

Store ModName Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size ModName Source #

poke :: ModName -> Poke () Source #

peek :: Peek ModName Source #

Store OccName Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size OccName Source #

poke :: OccName -> Poke () Source #

peek :: Peek OccName Source #

Store PkgName Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size PkgName Source #

poke :: PkgName -> Poke () Source #

peek :: Peek PkgName Source #

Store IntSet Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size IntSet Source #

poke :: IntSet -> Poke () Source #

peek :: Peek IntSet Source #

Store IntPtr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size IntPtr Source #

poke :: IntPtr -> Poke () Source #

peek :: Peek IntPtr Source #

Store WordPtr Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size WordPtr Source #

poke :: WordPtr -> Poke () Source #

peek :: Peek WordPtr Source #

Store Day Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size Day Source #

poke :: Day -> Poke () Source #

peek :: Peek Day Source #

Store UTCTime Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size UTCTime Source #

poke :: UTCTime -> Poke () Source #

peek :: Peek UTCTime Source #

Store DiffTime Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size DiffTime Source #

poke :: DiffTime -> Poke () Source #

peek :: Peek DiffTime Source #

Store TimeSpec Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size TimeSpec Source #

poke :: TimeSpec -> Poke () Source #

peek :: Peek TimeSpec Source #

Store ShortByteString Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size ShortByteString Source #

poke :: ShortByteString -> Poke () Source #

peek :: Peek ShortByteString Source #

Store PortNumber Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size PortNumber Source #

poke :: PortNumber -> Poke () Source #

peek :: Peek PortNumber Source #

Store TypeHash Source # 
Instance details

Defined in Data.Store.TypeHash.Internal

Store StoreVersion Source # 
Instance details

Defined in Data.Store.Version

Deriver (Store a) Source # 
Instance details

Defined in Data.Store.TH.Internal

Methods

runDeriver :: Proxy (Store a) -> Cxt -> Type -> Q [Dec] Source #

Store a => Store [a] Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size [a] Source #

poke :: [a] -> Poke () Source #

peek :: Peek [a] Source #

Store a => Store (Maybe a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Maybe a) Source #

poke :: Maybe a -> Poke () Source #

peek :: Peek (Maybe a) Source #

Store a => Store (Ratio a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Ratio a) Source #

poke :: Ratio a -> Poke () Source #

peek :: Peek (Ratio a) Source #

Store (StablePtr a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (StablePtr a) Source #

poke :: StablePtr a -> Poke () Source #

peek :: Peek (StablePtr a) Source #

Store (Ptr a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Ptr a) Source #

poke :: Ptr a -> Poke () Source #

peek :: Peek (Ptr a) Source #

Store (FunPtr a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (FunPtr a) Source #

poke :: FunPtr a -> Poke () Source #

peek :: Peek (FunPtr a) Source #

Store a => Store (NonEmpty a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (NonEmpty a) Source #

poke :: NonEmpty a -> Poke () Source #

peek :: Peek (NonEmpty a) Source #

Store a => Store (Dual a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Dual a) Source #

poke :: Dual a -> Poke () Source #

peek :: Peek (Dual a) Source #

Store a => Store (Product a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Product a) Source #

poke :: Product a -> Poke () Source #

peek :: Peek (Product a) Source #

Store a => Store (Sum a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Sum a) Source #

poke :: Sum a -> Poke () Source #

peek :: Peek (Sum a) Source #

Storable a => Store (Identity a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Identity a) Source #

poke :: Identity a -> Poke () Source #

peek :: Peek (Identity a) Source #

Storable a => Store (Complex a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Complex a) Source #

poke :: Complex a -> Poke () Source #

peek :: Peek (Complex a) Source #

Prim a => Store (PrimStorable a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (PrimStorable a) Source #

poke :: PrimStorable a -> Poke () Source #

peek :: Peek (PrimStorable a) Source #

Store a => Store (First a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (First a) Source #

poke :: First a -> Poke () Source #

peek :: Peek (First a) Source #

Store a => Store (Last a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Last a) Source #

poke :: Last a -> Poke () Source #

peek :: Peek (Last a) Source #

Store (Vector Char) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Char) Source #

poke :: Vector Char -> Poke () Source #

peek :: Peek (Vector Char) Source #

Store (Vector Double) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Double) Source #

poke :: Vector Double -> Poke () Source #

peek :: Peek (Vector Double) Source #

Store (Vector Float) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Float) Source #

poke :: Vector Float -> Poke () Source #

peek :: Peek (Vector Float) Source #

Store (Vector Int) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int) Source #

poke :: Vector Int -> Poke () Source #

peek :: Peek (Vector Int) Source #

Store (Vector Int8) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int8) Source #

poke :: Vector Int8 -> Poke () Source #

peek :: Peek (Vector Int8) Source #

Store (Vector Int16) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int16) Source #

poke :: Vector Int16 -> Poke () Source #

peek :: Peek (Vector Int16) Source #

Store (Vector Int32) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int32) Source #

poke :: Vector Int32 -> Poke () Source #

peek :: Peek (Vector Int32) Source #

Store (Vector Int64) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int64) Source #

poke :: Vector Int64 -> Poke () Source #

peek :: Peek (Vector Int64) Source #

Store (Vector Word) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word) Source #

poke :: Vector Word -> Poke () Source #

peek :: Peek (Vector Word) Source #

Store (Vector Word8) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word8) Source #

poke :: Vector Word8 -> Poke () Source #

peek :: Peek (Vector Word8) Source #

Store (Vector Word16) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word16) Source #

poke :: Vector Word16 -> Poke () Source #

peek :: Peek (Vector Word16) Source #

Store (Vector Word32) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word32) Source #

poke :: Vector Word32 -> Poke () Source #

peek :: Peek (Vector Word32) Source #

Store (Vector Word64) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word64) Source #

poke :: Vector Word64 -> Poke () Source #

peek :: Peek (Vector Word64) Source #

Store (Vector (Ptr a)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (Ptr a)) Source #

poke :: Vector (Ptr a) -> Poke () Source #

peek :: Peek (Vector (Ptr a)) Source #

Store (Vector (FunPtr a)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (FunPtr a)) Source #

poke :: Vector (FunPtr a) -> Poke () Source #

peek :: Peek (Vector (FunPtr a)) Source #

Store (Vector CSize) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSize) Source #

poke :: Vector CSize -> Poke () Source #

peek :: Peek (Vector CSize) Source #

Store (Vector CChar) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CChar) Source #

poke :: Vector CChar -> Poke () Source #

peek :: Peek (Vector CChar) Source #

Store (Vector CInt) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CInt) Source #

poke :: Vector CInt -> Poke () Source #

peek :: Peek (Vector CInt) Source #

Store (Vector CULong) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CULong) Source #

poke :: Vector CULong -> Poke () Source #

peek :: Peek (Vector CULong) Source #

Store (Vector Addr) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Addr) Source #

poke :: Vector Addr -> Poke () Source #

peek :: Peek (Vector Addr) Source #

Store (Vector CBlkCnt) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CBlkCnt) Source #

poke :: Vector CBlkCnt -> Poke () Source #

peek :: Peek (Vector CBlkCnt) Source #

Store (Vector CBlkSize) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CBlkSize) Source #

poke :: Vector CBlkSize -> Poke () Source #

peek :: Peek (Vector CBlkSize) Source #

Store (Vector CBool) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CBool) Source #

poke :: Vector CBool -> Poke () Source #

peek :: Peek (Vector CBool) Source #

Store (Vector CCc) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CCc) Source #

poke :: Vector CCc -> Poke () Source #

peek :: Peek (Vector CCc) Source #

Store (Vector CClock) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CClock) Source #

poke :: Vector CClock -> Poke () Source #

peek :: Peek (Vector CClock) Source #

Store (Vector CClockId) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CClockId) Source #

poke :: Vector CClockId -> Poke () Source #

peek :: Peek (Vector CClockId) Source #

Store (Vector CDev) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CDev) Source #

poke :: Vector CDev -> Poke () Source #

peek :: Peek (Vector CDev) Source #

Store (Vector CDouble) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CDouble) Source #

poke :: Vector CDouble -> Poke () Source #

peek :: Peek (Vector CDouble) Source #

Store (Vector CFloat) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CFloat) Source #

poke :: Vector CFloat -> Poke () Source #

peek :: Peek (Vector CFloat) Source #

Store (Vector CFsBlkCnt) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CFsBlkCnt) Source #

poke :: Vector CFsBlkCnt -> Poke () Source #

peek :: Peek (Vector CFsBlkCnt) Source #

Store (Vector CFsFilCnt) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CFsFilCnt) Source #

poke :: Vector CFsFilCnt -> Poke () Source #

peek :: Peek (Vector CFsFilCnt) Source #

Store (Vector CGid) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CGid) Source #

poke :: Vector CGid -> Poke () Source #

peek :: Peek (Vector CGid) Source #

Store (Vector CId) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CId) Source #

poke :: Vector CId -> Poke () Source #

peek :: Peek (Vector CId) Source #

Store (Vector CIno) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CIno) Source #

poke :: Vector CIno -> Poke () Source #

peek :: Peek (Vector CIno) Source #

Store (Vector CIntMax) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CIntMax) Source #

poke :: Vector CIntMax -> Poke () Source #

peek :: Peek (Vector CIntMax) Source #

Store (Vector CIntPtr) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CIntPtr) Source #

poke :: Vector CIntPtr -> Poke () Source #

peek :: Peek (Vector CIntPtr) Source #

Store (Vector CKey) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CKey) Source #

poke :: Vector CKey -> Poke () Source #

peek :: Peek (Vector CKey) Source #

Store (Vector CLLong) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CLLong) Source #

poke :: Vector CLLong -> Poke () Source #

peek :: Peek (Vector CLLong) Source #

Store (Vector CLong) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CLong) Source #

poke :: Vector CLong -> Poke () Source #

peek :: Peek (Vector CLong) Source #

Store (Vector CMode) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CMode) Source #

poke :: Vector CMode -> Poke () Source #

peek :: Peek (Vector CMode) Source #

Store (Vector CNlink) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CNlink) Source #

poke :: Vector CNlink -> Poke () Source #

peek :: Peek (Vector CNlink) Source #

Store (Vector COff) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector COff) Source #

poke :: Vector COff -> Poke () Source #

peek :: Peek (Vector COff) Source #

Store (Vector CPid) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CPid) Source #

poke :: Vector CPid -> Poke () Source #

peek :: Peek (Vector CPid) Source #

Store (Vector CPtrdiff) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CPtrdiff) Source #

poke :: Vector CPtrdiff -> Poke () Source #

peek :: Peek (Vector CPtrdiff) Source #

Store (Vector CRLim) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CRLim) Source #

poke :: Vector CRLim -> Poke () Source #

peek :: Peek (Vector CRLim) Source #

Store (Vector CSChar) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSChar) Source #

poke :: Vector CSChar -> Poke () Source #

peek :: Peek (Vector CSChar) Source #

Store (Vector CSUSeconds) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSUSeconds) Source #

poke :: Vector CSUSeconds -> Poke () Source #

peek :: Peek (Vector CSUSeconds) Source #

Store (Vector CShort) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CShort) Source #

poke :: Vector CShort -> Poke () Source #

peek :: Peek (Vector CShort) Source #

Store (Vector CSigAtomic) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSigAtomic) Source #

poke :: Vector CSigAtomic -> Poke () Source #

peek :: Peek (Vector CSigAtomic) Source #

Store (Vector CSpeed) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSpeed) Source #

poke :: Vector CSpeed -> Poke () Source #

peek :: Peek (Vector CSpeed) Source #

Store (Vector CSsize) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CSsize) Source #

poke :: Vector CSsize -> Poke () Source #

peek :: Peek (Vector CSsize) Source #

Store (Vector CTcflag) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CTcflag) Source #

poke :: Vector CTcflag -> Poke () Source #

peek :: Peek (Vector CTcflag) Source #

Store (Vector CTime) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CTime) Source #

poke :: Vector CTime -> Poke () Source #

peek :: Peek (Vector CTime) Source #

Store (Vector CTimer) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CTimer) Source #

poke :: Vector CTimer -> Poke () Source #

peek :: Peek (Vector CTimer) Source #

Store (Vector CUChar) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUChar) Source #

poke :: Vector CUChar -> Poke () Source #

peek :: Peek (Vector CUChar) Source #

Store (Vector CUInt) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUInt) Source #

poke :: Vector CUInt -> Poke () Source #

peek :: Peek (Vector CUInt) Source #

Store (Vector CUIntMax) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUIntMax) Source #

poke :: Vector CUIntMax -> Poke () Source #

peek :: Peek (Vector CUIntMax) Source #

Store (Vector CUIntPtr) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUIntPtr) Source #

poke :: Vector CUIntPtr -> Poke () Source #

peek :: Peek (Vector CUIntPtr) Source #

Store (Vector CULLong) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CULLong) Source #

poke :: Vector CULLong -> Poke () Source #

peek :: Peek (Vector CULLong) Source #

Store (Vector CUSeconds) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUSeconds) Source #

poke :: Vector CUSeconds -> Poke () Source #

peek :: Peek (Vector CUSeconds) Source #

Store (Vector CUShort) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUShort) Source #

poke :: Vector CUShort -> Poke () Source #

peek :: Peek (Vector CUShort) Source #

Store (Vector CUid) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CUid) Source #

poke :: Vector CUid -> Poke () Source #

peek :: Peek (Vector CUid) Source #

Store (Vector CWchar) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector CWchar) Source #

poke :: Vector CWchar -> Poke () Source #

peek :: Peek (Vector CWchar) Source #

Store (Vector Fd) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Fd) Source #

poke :: Vector Fd -> Poke () Source #

peek :: Peek (Vector Fd) Source #

Store (Vector Bool) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Bool) Source #

poke :: Vector Bool -> Poke () Source #

peek :: Peek (Vector Bool) Source #

Store (Vector Char) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Char) Source #

poke :: Vector Char -> Poke () Source #

peek :: Peek (Vector Char) Source #

Store (Vector Double) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Double) Source #

poke :: Vector Double -> Poke () Source #

peek :: Peek (Vector Double) Source #

Store (Vector Float) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Float) Source #

poke :: Vector Float -> Poke () Source #

peek :: Peek (Vector Float) Source #

Store (Vector Int) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int) Source #

poke :: Vector Int -> Poke () Source #

peek :: Peek (Vector Int) Source #

Store (Vector Int8) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int8) Source #

poke :: Vector Int8 -> Poke () Source #

peek :: Peek (Vector Int8) Source #

Store (Vector Int16) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int16) Source #

poke :: Vector Int16 -> Poke () Source #

peek :: Peek (Vector Int16) Source #

Store (Vector Int32) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int32) Source #

poke :: Vector Int32 -> Poke () Source #

peek :: Peek (Vector Int32) Source #

Store (Vector Int64) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Int64) Source #

poke :: Vector Int64 -> Poke () Source #

peek :: Peek (Vector Int64) Source #

Store (Vector Word) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word) Source #

poke :: Vector Word -> Poke () Source #

peek :: Peek (Vector Word) Source #

Store (Vector Word8) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word8) Source #

poke :: Vector Word8 -> Poke () Source #

peek :: Peek (Vector Word8) Source #

Store (Vector Word16) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word16) Source #

poke :: Vector Word16 -> Poke () Source #

peek :: Peek (Vector Word16) Source #

Store (Vector Word32) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word32) Source #

poke :: Vector Word32 -> Poke () Source #

peek :: Peek (Vector Word32) Source #

Store (Vector Word64) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector Word64) Source #

poke :: Vector Word64 -> Poke () Source #

peek :: Peek (Vector Word64) Source #

Store (Vector ()) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector ()) Source #

poke :: Vector () -> Poke () Source #

peek :: Peek (Vector ()) Source #

(Store (Vector a), Store (Vector b)) => Store (Vector (a, b)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (a, b)) Source #

poke :: Vector (a, b) -> Poke () Source #

peek :: Peek (Vector (a, b)) Source #

(Store (Vector a), Store (Vector b), Store (Vector c)) => Store (Vector (a, b, c)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (a, b, c)) Source #

poke :: Vector (a, b, c) -> Poke () Source #

peek :: Peek (Vector (a, b, c)) Source #

(Store (Vector a), Store (Vector b), Store (Vector c), Store (Vector d)) => Store (Vector (a, b, c, d)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (a, b, c, d)) Source #

poke :: Vector (a, b, c, d) -> Poke () Source #

peek :: Peek (Vector (a, b, c, d)) Source #

(Store (Vector a), Store (Vector b), Store (Vector c), Store (Vector d), Store (Vector e)) => Store (Vector (a, b, c, d, e)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (a, b, c, d, e)) Source #

poke :: Vector (a, b, c, d, e) -> Poke () Source #

peek :: Peek (Vector (a, b, c, d, e)) Source #

(Store (Vector a), Store (Vector b), Store (Vector c), Store (Vector d), Store (Vector e), Store (Vector f)) => Store (Vector (a, b, c, d, e, f)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (a, b, c, d, e, f)) Source #

poke :: Vector (a, b, c, d, e, f) -> Poke () Source #

peek :: Peek (Vector (a, b, c, d, e, f)) Source #

Store (Vector a) => Store (Vector (Complex a)) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector (Complex a)) Source #

poke :: Vector (Complex a) -> Poke () Source #

peek :: Peek (Vector (Complex a)) Source #

Store a => Store (IntMap a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (IntMap a) Source #

poke :: IntMap a -> Poke () Source #

peek :: Peek (IntMap a) Source #

Store a => Store (Seq a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Seq a) Source #

poke :: Seq a -> Poke () Source #

peek :: Peek (Seq a) Source #

(Store a, Ord a) => Store (Set a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Set a) Source #

poke :: Set a -> Poke () Source #

peek :: Peek (Set a) Source #

Store a => Store (Vector a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector a) Source #

poke :: Vector a -> Poke () Source #

peek :: Peek (Vector a) Source #

Storable a => Store (Vector a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Vector a) Source #

poke :: Vector a -> Poke () Source #

peek :: Peek (Vector a) Source #

Store (Fixed a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Fixed a) Source #

poke :: Fixed a -> Poke () Source #

peek :: Peek (Fixed a) Source #

(Eq a, Hashable a, Store a) => Store (HashSet a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (HashSet a) Source #

poke :: HashSet a -> Poke () Source #

peek :: Peek (HashSet a) Source #

(Store a, HasTypeHash a) => Store (Tagged a) Source # 
Instance details

Defined in Data.Store.TypeHash.Internal

Methods

size :: Size (Tagged a) Source #

poke :: Tagged a -> Poke () Source #

peek :: Peek (Tagged a) Source #

(Store a, Store b) => Store (Either a b) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Either a b) Source #

poke :: Either a b -> Poke () Source #

peek :: Peek (Either a b) Source #

(Store a, Store b) => Store (a, b) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b) Source #

poke :: (a, b) -> Poke () Source #

peek :: Peek (a, b) Source #

(Ix i, Store i, Store e) => Store (Array i e) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Array i e) Source #

poke :: Array i e -> Poke () Source #

peek :: Peek (Array i e) Source #

(Ord k, Store k, Store a) => Store (Map k a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Map k a) Source #

poke :: Map k a -> Poke () Source #

peek :: Peek (Map k a) Source #

(Ix i, IArray UArray e, Store i, Store e) => Store (UArray i e) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (UArray i e) Source #

poke :: UArray i e -> Poke () Source #

peek :: Peek (UArray i e) Source #

(Eq k, Hashable k, Store k, Store a) => Store (HashMap k a) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (HashMap k a) Source #

poke :: HashMap k a -> Poke () Source #

peek :: Peek (HashMap k a) Source #

KnownNat n => Store (StaticSize n ByteString) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (StaticSize n ByteString) Source #

poke :: StaticSize n ByteString -> Poke () Source #

peek :: Peek (StaticSize n ByteString) Source #

(Store a, Store b, Store c) => Store (a, b, c) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b, c) Source #

poke :: (a, b, c) -> Poke () Source #

peek :: Peek (a, b, c) Source #

Storable a => Store (Const a b) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (Const a b) Source #

poke :: Const a b -> Poke () Source #

peek :: Peek (Const a b) Source #

(Store a, Store b, Store c, Store d) => Store (a, b, c, d) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b, c, d) Source #

poke :: (a, b, c, d) -> Poke () Source #

peek :: Peek (a, b, c, d) Source #

(Store a, Store b, Store c, Store d, Store e) => Store (a, b, c, d, e) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b, c, d, e) Source #

poke :: (a, b, c, d, e) -> Poke () Source #

peek :: Peek (a, b, c, d, e) Source #

(Store a, Store b, Store c, Store d, Store e, Store f) => Store (a, b, c, d, e, f) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b, c, d, e, f) Source #

poke :: (a, b, c, d, e, f) -> Poke () Source #

peek :: Peek (a, b, c, d, e, f) Source #

(Store a, Store b, Store c, Store d, Store e, Store f, Store g) => Store (a, b, c, d, e, f, g) Source # 
Instance details

Defined in Data.Store.Internal

Methods

size :: Size (a, b, c, d, e, f, g) Source #

poke :: (a, b, c, d, e, f, g) -> Poke () Source #

peek :: Peek (a, b, c, d, e, f, g) Source #

data Size a Source #

Info about a type's serialized length. Either the length is known independently of the value, or the length depends on the value.

Constructors

VarSize (a -> Int) 
ConstSize !Int 
Instances
Contravariant Size Source # 
Instance details

Defined in Data.Store.Impl

Methods

contramap :: (a -> b) -> Size b -> Size a

(>$) :: b -> Size b -> Size a

data Poke a Source #

Poke actions are useful for building sequential serializers.

They are actions which write values to bytes into memory specified by a Ptr base. The Applicative and Monad instances make it easy to write serializations, by keeping track of the Offset of the current byte. They allow you to chain Poke action such that subsequent Pokes write into subsequent portions of the output.

Instances
Monad Poke 
Instance details

Defined in Data.Store.Core

Methods

(>>=) :: Poke a -> (a -> Poke b) -> Poke b

(>>) :: Poke a -> Poke b -> Poke b

return :: a -> Poke a

fail :: String -> Poke a

Functor Poke 
Instance details

Defined in Data.Store.Core

Methods

fmap :: (a -> b) -> Poke a -> Poke b

(<$) :: a -> Poke b -> Poke a

MonadFail Poke 
Instance details

Defined in Data.Store.Core

Methods

fail :: String -> Poke a

Applicative Poke 
Instance details

Defined in Data.Store.Core

Methods

pure :: a -> Poke a

(<*>) :: Poke (a -> b) -> Poke a -> Poke b

liftA2 :: (a -> b -> c) -> Poke a -> Poke b -> Poke c

(*>) :: Poke a -> Poke b -> Poke b

(<*) :: Poke a -> Poke b -> Poke a

MonadIO Poke 
Instance details

Defined in Data.Store.Core

Methods

liftIO :: IO a -> Poke a

data Peek a Source #

Peek actions are useful for building sequential deserializers.

They are actions which read from memory and construct values from it. The Applicative and Monad instances make it easy to chain these together to get more complicated deserializers. This machinery keeps track of the current Ptr and end-of-buffer Ptr.

Instances
Monad Peek 
Instance details

Defined in Data.Store.Core

Methods

(>>=) :: Peek a -> (a -> Peek b) -> Peek b

(>>) :: Peek a -> Peek b -> Peek b

return :: a -> Peek a

fail :: String -> Peek a

Functor Peek 
Instance details

Defined in Data.Store.Core

Methods

fmap :: (a -> b) -> Peek a -> Peek b

(<$) :: a -> Peek b -> Peek a

MonadFail Peek 
Instance details

Defined in Data.Store.Core

Methods

fail :: String -> Peek a

Applicative Peek 
Instance details

Defined in Data.Store.Core

Methods

pure :: a -> Peek a

(<*>) :: Peek (a -> b) -> Peek a -> Peek b

liftA2 :: (a -> b -> c) -> Peek a -> Peek b -> Peek c

(*>) :: Peek a -> Peek b -> Peek b

(<*) :: Peek a -> Peek b -> Peek a

MonadIO Peek 
Instance details

Defined in Data.Store.Core

Methods

liftIO :: IO a -> Peek a

PrimMonad Peek 
Instance details

Defined in Data.Store.Core

Associated Types

type PrimState Peek :: Type

Methods

primitive :: (State# (PrimState Peek) -> (#State# (PrimState Peek), a#)) -> Peek a

type PrimState Peek 
Instance details

Defined in Data.Store.Core

type PrimState Peek = RealWorld

class GStoreSize f Source #

Minimal complete definition

gsize

Instances
GStoreSize (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size (V1 a)

GStoreSize (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size (U1 a)

Store a => GStoreSize (K1 i a :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size (K1 i a a0)

(FitsInByte (SumArity (a :+: b)), GStoreSizeSum 0 (a :+: b)) => GStoreSize (a :+: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size ((a :+: b) a0)

(GStoreSize a, GStoreSize b) => GStoreSize (a :*: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size ((a :*: b) a0)

GStoreSize f => GStoreSize (M1 i c f) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gsize :: Size (M1 i c f a)

class GStorePoke f Source #

Minimal complete definition

gpoke

Instances
GStorePoke (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: V1 a -> Poke ()

GStorePoke (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: U1 a -> Poke ()

Store a => GStorePoke (K1 i a :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: K1 i a a0 -> Poke ()

(FitsInByte (SumArity (a :+: b)), GStorePokeSum 0 (a :+: b)) => GStorePoke (a :+: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: (a :+: b) a0 -> Poke ()

(GStorePoke a, GStorePoke b) => GStorePoke (a :*: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: (a :*: b) a0 -> Poke ()

GStorePoke f => GStorePoke (M1 i c f) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpoke :: M1 i c f a -> Poke ()

class GStorePeek f Source #

Minimal complete definition

gpeek

Instances
GStorePeek (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek (V1 a)

GStorePeek (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek (U1 a)

Store a => GStorePeek (K1 i a :: Type -> Type) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek (K1 i a a0)

(FitsInByte (SumArity (a :+: b)), GStorePeekSum 0 (a :+: b)) => GStorePeek (a :+: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek ((a :+: b) a0)

(GStorePeek a, GStorePeek b) => GStorePeek (a :*: b) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek ((a :*: b) a0)

GStorePeek f => GStorePeek (M1 i c f) Source # 
Instance details

Defined in Data.Store.Impl

Methods

gpeek :: Peek (M1 i c f a)

Exceptions thrown by Peek

data PeekException Source #

Exception thrown while running peek. Note that other types of exceptions can also be thrown. Invocations of fail in the Poke monad causes this exception to be thrown.

PeekException is thrown when the data being decoded is invalid.

Constructors

PeekException 
Instances
Eq PeekException 
Instance details

Defined in Data.Store.Core

Show PeekException 
Instance details

Defined in Data.Store.Core

Methods

showsPrec :: Int -> PeekException -> ShowS

show :: PeekException -> String

showList :: [PeekException] -> ShowS

Exception PeekException 
Instance details

Defined in Data.Store.Core

Methods

toException :: PeekException -> SomeException

fromException :: SomeException -> Maybe PeekException

displayException :: PeekException -> String

peekException :: Text -> Peek a Source #

Throws a PeekException.