| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Persist
Synopsis
- class Persist t where
- type HostEndian = LittleEndian
- newtype BigEndian a = BigEndian {
- unBE :: a
- newtype LittleEndian a = LittleEndian {
- unLE :: a
- class HasEndianness a where
- unsafeGetLE :: Get a
- unsafePutLE :: a -> Put ()
- unsafeGetBE :: Get a
- unsafePutBE :: a -> Put ()
- endiannessSize :: Int
- class ReinterpretAs a where
- type ReinterpretTarget a
- class SerializeAs a where
- type SerializeTarget a
- castPut :: a -> SerializeTarget a
- castGet :: SerializeTarget a -> a
- newtype ViaReinterpretAs a = MkViaReinterpretAs a
- newtype ViaSerializeAs a = MkViaSerializeAs a
- encode :: Persist a => a -> ByteString
- encodeLazy :: Persist a => a -> ByteString
- decode :: Persist a => ByteString -> Either String a
- data Get a
- runGet :: Get a -> ByteString -> Either String a
- ensure :: Int -> Get ()
- skip :: Int -> Get ()
- getBytes :: Int -> Get ByteString
- getByteString :: Int -> Get ByteString
- remaining :: Get Int
- eof :: Get ()
- getPrefix :: Int -> Get a -> Get a
- getHE :: Persist (HostEndian a) => Get a
- getLE :: Persist (LittleEndian a) => Get a
- getBE :: Persist (BigEndian a) => Get a
- data Put a
- runPut :: Put a -> ByteString
- runPutLazy :: Put a -> ByteString
- evalPut :: Put a -> (a, ByteString)
- evalPutLazy :: Put a -> (a, ByteString)
- grow :: Int -> Put ()
- putByteString :: ByteString -> Put ()
- putHE :: Persist (HostEndian a) => a -> Put ()
- putLE :: Persist (LittleEndian a) => a -> Put ()
- putBE :: Persist (BigEndian a) => a -> Put ()
- reserveSize :: HasEndianness a => Put (PutSize a)
- resolveSizeExclusiveBE :: (Integral a, HasEndianness a) => PutSize a -> Put ()
- resolveSizeExclusiveLE :: (Integral a, HasEndianness a) => PutSize a -> Put ()
- resolveSizeInclusiveBE :: (Integral a, HasEndianness a) => PutSize a -> Put ()
- resolveSizeInclusiveLE :: (Integral a, HasEndianness a) => PutSize a -> Put ()
- resolveSizeLE :: (Integral a, HasEndianness a) => PutSize a -> a -> Put ()
- resolveSizeBE :: (Integral a, HasEndianness a) => PutSize a -> a -> Put ()
The Persist class
class Persist t where Source #
Minimal complete definition
Nothing
Methods
Encode a value in the Put monad.
Decode a value in the Get monad
unsafePut :: t -> Put () Source #
Encode a value without checking for sufficient size.
Decode a value without checking for sufficient size.
Instances
Endianness
type HostEndian = LittleEndian Source #
Instances
newtype LittleEndian a Source #
Constructors
| LittleEndian | |
Fields
| |
Instances
| Foldable LittleEndian Source # | |||||
Defined in Data.Persist Methods fold :: Monoid m => LittleEndian m -> m # foldMap :: Monoid m => (a -> m) -> LittleEndian a -> m # foldMap' :: Monoid m => (a -> m) -> LittleEndian a -> m # foldr :: (a -> b -> b) -> b -> LittleEndian a -> b # foldr' :: (a -> b -> b) -> b -> LittleEndian a -> b # foldl :: (b -> a -> b) -> b -> LittleEndian a -> b # foldl' :: (b -> a -> b) -> b -> LittleEndian a -> b # foldr1 :: (a -> a -> a) -> LittleEndian a -> a # foldl1 :: (a -> a -> a) -> LittleEndian a -> a # toList :: LittleEndian a -> [a] # null :: LittleEndian a -> Bool # length :: LittleEndian a -> Int # elem :: Eq a => a -> LittleEndian a -> Bool # maximum :: Ord a => LittleEndian a -> a # minimum :: Ord a => LittleEndian a -> a # sum :: Num a => LittleEndian a -> a # product :: Num a => LittleEndian a -> a # | |||||
| Traversable LittleEndian Source # | |||||
Defined in Data.Persist Methods traverse :: Applicative f => (a -> f b) -> LittleEndian a -> f (LittleEndian b) # sequenceA :: Applicative f => LittleEndian (f a) -> f (LittleEndian a) # mapM :: Monad m => (a -> m b) -> LittleEndian a -> m (LittleEndian b) # sequence :: Monad m => LittleEndian (m a) -> m (LittleEndian a) # | |||||
| Functor LittleEndian Source # | |||||
Defined in Data.Persist Methods fmap :: (a -> b) -> LittleEndian a -> LittleEndian b # (<$) :: a -> LittleEndian b -> LittleEndian a # | |||||
| Generic (LittleEndian a) Source # | |||||
Defined in Data.Persist Associated Types
Methods from :: LittleEndian a -> Rep (LittleEndian a) x # to :: Rep (LittleEndian a) x -> LittleEndian a # | |||||
| Show a => Show (LittleEndian a) Source # | |||||
Defined in Data.Persist Methods showsPrec :: Int -> LittleEndian a -> ShowS # show :: LittleEndian a -> String # showList :: [LittleEndian a] -> ShowS # | |||||
| Eq a => Eq (LittleEndian a) Source # | |||||
Defined in Data.Persist Methods (==) :: LittleEndian a -> LittleEndian a -> Bool # (/=) :: LittleEndian a -> LittleEndian a -> Bool # | |||||
| Ord a => Ord (LittleEndian a) Source # | |||||
Defined in Data.Persist Methods compare :: LittleEndian a -> LittleEndian a -> Ordering # (<) :: LittleEndian a -> LittleEndian a -> Bool # (<=) :: LittleEndian a -> LittleEndian a -> Bool # (>) :: LittleEndian a -> LittleEndian a -> Bool # (>=) :: LittleEndian a -> LittleEndian a -> Bool # max :: LittleEndian a -> LittleEndian a -> LittleEndian a # min :: LittleEndian a -> LittleEndian a -> LittleEndian a # | |||||
| HasEndianness a => Persist (LittleEndian a) Source # | |||||
Defined in Data.Persist Methods put :: LittleEndian a -> Put () Source # get :: Get (LittleEndian a) Source # unsafePut :: LittleEndian a -> Put () Source # unsafeGet :: Get (LittleEndian a) Source # | |||||
| type Rep (LittleEndian a) Source # | |||||
Defined in Data.Persist type Rep (LittleEndian a) = D1 ('MetaData "LittleEndian" "Data.Persist" "persist-1.0.0.0-2SxxRrWxjaDKIkq0kYJKRn" 'True) (C1 ('MetaCons "LittleEndian" 'PrefixI 'True) (S1 ('MetaSel ('Just "unLE") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) | |||||
Helpers for writing Persist instances
class HasEndianness a where Source #
Methods
unsafeGetLE :: Get a Source #
unsafePutLE :: a -> Put () Source #
unsafeGetBE :: Get a Source #
unsafePutBE :: a -> Put () Source #
endiannessSize :: Int Source #
Instances
| HasEndianness Int16 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Int16 Source # unsafePutLE :: Int16 -> Put () Source # unsafeGetBE :: Get Int16 Source # unsafePutBE :: Int16 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Int32 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Int32 Source # unsafePutLE :: Int32 -> Put () Source # unsafeGetBE :: Get Int32 Source # unsafePutBE :: Int32 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Int64 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Int64 Source # unsafePutLE :: Int64 -> Put () Source # unsafeGetBE :: Get Int64 Source # unsafePutBE :: Int64 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Int8 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Int8 Source # unsafePutLE :: Int8 -> Put () Source # unsafeGetBE :: Get Int8 Source # unsafePutBE :: Int8 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Word16 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Word16 Source # unsafePutLE :: Word16 -> Put () Source # unsafeGetBE :: Get Word16 Source # unsafePutBE :: Word16 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Word32 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Word32 Source # unsafePutLE :: Word32 -> Put () Source # unsafeGetBE :: Get Word32 Source # unsafePutBE :: Word32 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Word64 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Word64 Source # unsafePutLE :: Word64 -> Put () Source # unsafeGetBE :: Get Word64 Source # unsafePutBE :: Word64 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Word8 Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Word8 Source # unsafePutLE :: Word8 -> Put () Source # unsafeGetBE :: Get Word8 Source # unsafePutBE :: Word8 -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Double Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Double Source # unsafePutLE :: Double -> Put () Source # unsafeGetBE :: Get Double Source # unsafePutBE :: Double -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Float Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Float Source # unsafePutLE :: Float -> Put () Source # unsafeGetBE :: Get Float Source # unsafePutBE :: Float -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Int Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Int Source # unsafePutLE :: Int -> Put () Source # unsafeGetBE :: Get Int Source # unsafePutBE :: Int -> Put () Source # endiannessSize :: Int Source # | |
| HasEndianness Word Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get Word Source # unsafePutLE :: Word -> Put () Source # unsafeGetBE :: Get Word Source # unsafePutBE :: Word -> Put () Source # endiannessSize :: Int Source # | |
| (ReinterpretAs a, Storable a, Storable b, HasEndianness b, b ~ ReinterpretTarget a) => HasEndianness (ViaReinterpretAs a) Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get (ViaReinterpretAs a) Source # unsafePutLE :: ViaReinterpretAs a -> Put () Source # unsafeGetBE :: Get (ViaReinterpretAs a) Source # unsafePutBE :: ViaReinterpretAs a -> Put () Source # endiannessSize :: Int Source # | |
| (SerializeAs a, HasEndianness (SerializeTarget a)) => HasEndianness (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get (ViaSerializeAs a) Source # unsafePutLE :: ViaSerializeAs a -> Put () Source # unsafeGetBE :: Get (ViaSerializeAs a) Source # unsafePutBE :: ViaSerializeAs a -> Put () Source # endiannessSize :: Int Source # | |
class ReinterpretAs a Source #
Associated Types
type ReinterpretTarget a Source #
Instances
| ReinterpretAs Double Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| ReinterpretAs Float Source # | |||||
Defined in Data.Persist Associated Types
| |||||
class SerializeAs a where Source #
Associated Types
type SerializeTarget a Source #
Instances
| SerializeAs Int16 Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| SerializeAs Int32 Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| SerializeAs Int64 Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| SerializeAs Int8 Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| SerializeAs Int Source # | |||||
Defined in Data.Persist Associated Types
| |||||
| SerializeAs Word Source # | |||||
Defined in Data.Persist Associated Types
| |||||
newtype ViaReinterpretAs a Source #
Constructors
| MkViaReinterpretAs a |
Instances
| Show a => Show (ViaReinterpretAs a) Source # | |
Defined in Data.Persist Methods showsPrec :: Int -> ViaReinterpretAs a -> ShowS # show :: ViaReinterpretAs a -> String # showList :: [ViaReinterpretAs a] -> ShowS # | |
| Eq a => Eq (ViaReinterpretAs a) Source # | |
Defined in Data.Persist Methods (==) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # (/=) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # | |
| Ord a => Ord (ViaReinterpretAs a) Source # | |
Defined in Data.Persist Methods compare :: ViaReinterpretAs a -> ViaReinterpretAs a -> Ordering # (<) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # (<=) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # (>) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # (>=) :: ViaReinterpretAs a -> ViaReinterpretAs a -> Bool # max :: ViaReinterpretAs a -> ViaReinterpretAs a -> ViaReinterpretAs a # min :: ViaReinterpretAs a -> ViaReinterpretAs a -> ViaReinterpretAs a # | |
| (ReinterpretAs a, Storable a, Storable b, HasEndianness b, b ~ ReinterpretTarget a) => HasEndianness (ViaReinterpretAs a) Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get (ViaReinterpretAs a) Source # unsafePutLE :: ViaReinterpretAs a -> Put () Source # unsafeGetBE :: Get (ViaReinterpretAs a) Source # unsafePutBE :: ViaReinterpretAs a -> Put () Source # endiannessSize :: Int Source # | |
newtype ViaSerializeAs a Source #
Constructors
| MkViaSerializeAs a |
Instances
| Show a => Show (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods showsPrec :: Int -> ViaSerializeAs a -> ShowS # show :: ViaSerializeAs a -> String # showList :: [ViaSerializeAs a] -> ShowS # | |
| Eq a => Eq (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods (==) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # (/=) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # | |
| Ord a => Ord (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods compare :: ViaSerializeAs a -> ViaSerializeAs a -> Ordering # (<) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # (<=) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # (>) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # (>=) :: ViaSerializeAs a -> ViaSerializeAs a -> Bool # max :: ViaSerializeAs a -> ViaSerializeAs a -> ViaSerializeAs a # min :: ViaSerializeAs a -> ViaSerializeAs a -> ViaSerializeAs a # | |
| (SerializeAs a, HasEndianness (SerializeTarget a)) => HasEndianness (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods unsafeGetLE :: Get (ViaSerializeAs a) Source # unsafePutLE :: ViaSerializeAs a -> Put () Source # unsafeGetBE :: Get (ViaSerializeAs a) Source # unsafePutBE :: ViaSerializeAs a -> Put () Source # endiannessSize :: Int Source # | |
| (SerializeAs a, Persist (SerializeTarget a)) => Persist (ViaSerializeAs a) Source # | |
Defined in Data.Persist Methods put :: ViaSerializeAs a -> Put () Source # get :: Get (ViaSerializeAs a) Source # unsafePut :: ViaSerializeAs a -> Put () Source # unsafeGet :: Get (ViaSerializeAs a) Source # | |
Serialization
encode :: Persist a => a -> ByteString Source #
Encode a value using binary serialization to a strict ByteString.
encodeLazy :: Persist a => a -> ByteString Source #
Encode a value using binary serialization to a lazy ByteString.
decode :: Persist a => ByteString -> Either String a Source #
Decode a value from a strict ByteString, reconstructing the original structure.
The Get type
runGet :: Get a -> ByteString -> Either String a Source #
Run the Get monad applies a get-based parser on the input ByteString
ensure :: Int -> Get () Source #
Ensure that n bytes are available. Fails if fewer than n bytes are available.
getByteString :: Int -> Get ByteString Source #
An efficient get method for strict ByteStrings. Fails if fewer
than n bytes are left in the input. This function creates a fresh
copy of the underlying bytes.
Get the number of remaining unparsed bytes. Useful for checking whether all input has been consumed.
The Put type
runPut :: Put a -> ByteString Source #
runPutLazy :: Put a -> ByteString Source #
evalPut :: Put a -> (a, ByteString) Source #
evalPutLazy :: Put a -> (a, ByteString) Source #
putByteString :: ByteString -> Put () Source #
Size Reserve/Resolve
reserveSize :: HasEndianness a => Put (PutSize a) Source #
Reserve a length value that can be filled in later. The length value itself must have a fixed size.
resolveSizeExclusiveBE :: (Integral a, HasEndianness a) => PutSize a -> Put () Source #
resolveSizeExclusiveLE :: (Integral a, HasEndianness a) => PutSize a -> Put () Source #
resolveSizeInclusiveBE :: (Integral a, HasEndianness a) => PutSize a -> Put () Source #
resolveSizeInclusiveLE :: (Integral a, HasEndianness a) => PutSize a -> Put () Source #
resolveSizeLE :: (Integral a, HasEndianness a) => PutSize a -> a -> Put () Source #
resolveSizeBE :: (Integral a, HasEndianness a) => PutSize a -> a -> Put () Source #