store-0.5.1.1: Fast binary serialization

Safe Haskell | None
Language | Haskell2010

Data.Store

Contents

- Encoding and decoding strict ByteStrings.
- Store class and related types.
  - Exceptions thrown by Peek

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

- encode :: Store a => a -> ByteString
- decode :: Store a => ByteString -> Either PeekException a
- decodeWith :: Peek a -> ByteString -> Either PeekException a
- decodeEx :: Store a => ByteString -> a
- decodeExWith :: Peek a -> ByteString -> a
- decodeExPortionWith :: Peek a -> ByteString -> (Offset, a)
- decodeIO :: Store a => ByteString -> IO a
- decodeIOWith :: Peek a -> ByteString -> IO a
- decodeIOPortionWith :: Peek a -> ByteString -> IO (Offset, a)
- class Store a where
  - size :: Size a
  - poke :: a -> Poke ()
  - peek :: Peek a
- data Size a
  - = VarSize (a -> Int)
  - | ConstSize !Int
- data Poke a
- data Peek a
- class GStoreSize f
- class GStorePoke f
- class GStorePeek f
- data PeekException = PeekException {
  - peekExBytesFromEnd :: Offset
  - peekExMessage :: Text
  }
- peekException :: Text -> Peek a

# 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 Void Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Void Source # poke :: Void -> Poke () Source # peek :: Peek Void 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 Any Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Any Source # poke :: Any -> Poke () Source # peek :: Peek Any 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 CSChar Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CSChar Source # poke :: CSChar -> Poke () Source # peek :: Peek CSChar 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 CShort Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CShort Source # poke :: CShort -> Poke () Source # peek :: Peek CShort 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 CInt Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CInt Source # poke :: CInt -> Poke () Source # peek :: Peek CInt 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 CLong Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CLong Source # poke :: CLong -> Poke () Source # peek :: Peek CLong 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 CLLong Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CLLong Source # poke :: CLLong -> Poke () Source # peek :: Peek CLLong 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 CBool Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CBool Source # poke :: CBool -> Poke () Source # peek :: Peek CBool 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 CDouble Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CDouble Source # poke :: CDouble -> Poke () Source # peek :: Peek CDouble 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 CSize Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CSize Source # poke :: CSize -> Poke () Source # peek :: Peek CSize 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 CSigAtomic Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CSigAtomic Source # poke :: CSigAtomic -> Poke () Source # peek :: Peek CSigAtomic 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 CTime Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CTime Source # poke :: CTime -> Poke () Source # peek :: Peek CTime 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 CSUSeconds Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CSUSeconds Source # poke :: CSUSeconds -> Poke () Source # peek :: Peek CSUSeconds 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 CUIntPtr Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CUIntPtr Source # poke :: CUIntPtr -> Poke () Source # peek :: Peek CUIntPtr 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 CUIntMax Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size CUIntMax Source # poke :: CUIntMax -> Poke () Source # peek :: Peek CUIntMax 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 IntPtr Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size IntPtr Source # poke :: IntPtr -> Poke () Source # peek :: Peek IntPtr 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 ShortByteString Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size ShortByteString Source # poke :: ShortByteString -> Poke () Source # peek :: Peek ShortByteString 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 ByteString Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size ByteString Source # poke :: ByteString -> Poke () Source # peek :: Peek ByteString 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 PortNumber Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size PortNumber Source # poke :: PortNumber -> Poke () Source # peek :: Peek PortNumber 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 PkgName Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size PkgName Source # poke :: PkgName -> Poke () Source # peek :: Peek PkgName 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 NameFlavour Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size NameFlavour Source # poke :: NameFlavour -> Poke () Source # peek :: Peek NameFlavour 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 Info Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Info Source # poke :: Info -> Poke () Source # peek :: Peek Info 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 Lit Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Lit Source # poke :: Lit -> Poke () Source # peek :: Peek Lit 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 Guard Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Guard Source # poke :: Guard -> Poke () Source # peek :: Peek Guard 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 Range Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Range Source # poke :: Range -> Poke () Source # peek :: Peek Range 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 TypeFamilyHead Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size TypeFamilyHead Source # poke :: TypeFamilyHead -> Poke () Source # peek :: Peek TypeFamilyHead 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 Foreign Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Foreign Source # poke :: Foreign -> Poke () Source # peek :: Peek Foreign 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 Safety Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Safety Source # poke :: Safety -> Poke () Source # peek :: Peek Safety 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 Inline Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Inline Source # poke :: Inline -> Poke () Source # peek :: Peek Inline 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 Phases Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Phases Source # poke :: Phases -> Poke () Source # peek :: Peek Phases 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 AnnTarget Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size AnnTarget Source # poke :: AnnTarget -> Poke () Source # peek :: Peek AnnTarget 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 SourceStrictness Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size SourceStrictness Source # poke :: SourceStrictness -> Poke () Source # peek :: Peek SourceStrictness 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 Bang Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Bang Source # poke :: Bang -> Poke () Source # peek :: Peek Bang 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 PatSynArgs Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size PatSynArgs Source # poke :: PatSynArgs -> Poke () Source # peek :: Peek PatSynArgs 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 FamilyResultSig Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size FamilyResultSig Source # poke :: FamilyResultSig -> Poke () Source # peek :: Peek FamilyResultSig 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 Role Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Role Source # poke :: Role -> Poke () Source # peek :: Peek Role 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 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 Day Source # |
Instance details Defined in Data.Store.Internal Methods size :: Size Day Source # poke :: Day -> Poke () Source # peek :: Peek Day 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 TypeHash Source # |
Instance details Defined in Data.Store.TypeHash.Internal Methods size :: Size TypeHash Source # poke :: TypeHash -> Poke () Source # peek :: Peek TypeHash Source #
Store StoreVersion Source # |
Instance details Defined in Data.Store.Version Methods size :: Size StoreVersion Source # poke :: StoreVersion -> Poke () Source # peek :: Peek StoreVersion Source #
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 #
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 #
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 #
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 #
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 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 (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 #
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 (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 (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 #
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 #
(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 (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 #
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 (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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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, 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 #
(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 #
(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 Source # (>$) :: b -> Size b -> Size a Source #

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 `Poke`s 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 Source # (>>) :: Poke a -> Poke b -> Poke b Source # return :: a -> Poke a Source # fail :: String -> Poke a Source #
Functor Poke |
Instance details Defined in Data.Store.Core Methods fmap :: (a -> b) -> Poke a -> Poke b Source # (<$) :: a -> Poke b -> Poke a Source #
MonadFail Poke |
Instance details Defined in Data.Store.Core Methods fail :: String -> Poke a Source #
Applicative Poke |
Instance details Defined in Data.Store.Core Methods pure :: a -> Poke a Source # (<*>) :: Poke (a -> b) -> Poke a -> Poke b Source # liftA2 :: (a -> b -> c) -> Poke a -> Poke b -> Poke c Source # (*>) :: Poke a -> Poke b -> Poke b Source # (<*) :: Poke a -> Poke b -> Poke a Source #
MonadIO Poke |
Instance details Defined in Data.Store.Core Methods liftIO :: IO a -> Poke a Source #

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 Source # (>>) :: Peek a -> Peek b -> Peek b Source # return :: a -> Peek a Source # fail :: String -> Peek a Source #
Functor Peek |
Instance details Defined in Data.Store.Core Methods fmap :: (a -> b) -> Peek a -> Peek b Source # (<$) :: a -> Peek b -> Peek a Source #
MonadFail Peek |
Instance details Defined in Data.Store.Core Methods fail :: String -> Peek a Source #
Applicative Peek |
Instance details Defined in Data.Store.Core Methods pure :: a -> Peek a Source # (<*>) :: Peek (a -> b) -> Peek a -> Peek b Source # liftA2 :: (a -> b -> c) -> Peek a -> Peek b -> Peek c Source # (*>) :: Peek a -> Peek b -> Peek b Source # (<*) :: Peek a -> Peek b -> Peek a Source #
MonadIO Peek |
Instance details Defined in Data.Store.Core Methods liftIO :: IO a -> Peek a Source #
PrimMonad Peek |
Instance details Defined in Data.Store.Core Associated Types type PrimState Peek :: Type Source # Methods primitive :: (State# (PrimState Peek) -> (#State# (PrimState Peek), a#)) -> Peek a Source #
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 |

Fields

- peekExBytesFromEnd :: Offset
- peekExMessage :: Text

Instances

Eq PeekException |
Instance details Defined in Data.Store.Core Methods (==) :: PeekException -> PeekException -> Bool Source # (/=) :: PeekException -> PeekException -> Bool Source #
Show PeekException |
Instance details Defined in Data.Store.Core Methods showsPrec :: Int -> PeekException -> ShowS Source # show :: PeekException -> String Source # showList :: [PeekException] -> ShowS Source #
Exception PeekException |
Instance details Defined in Data.Store.Core Methods toException :: PeekException -> SomeException Source # fromException :: SomeException -> Maybe PeekException Source # displayException :: PeekException -> String Source #

peekException :: Text -> Peek a Source #

Throws a `PeekException`.