-- | 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. module Data.Store ( -- * Encoding and decoding strict ByteStrings. encode, decode, decodeWith, decodeEx, decodeExWith, decodeExPortionWith, decodeIO, decodeIOWith, decodeIOPortionWith -- * Store class and related types. , Store(..), Size(..), Poke, Peek , GStoreSize, GStorePoke, GStorePeek -- ** Exceptions thrown by Peek , PeekException(..), peekException ) where import Data.Store.Internal