-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Instances of Data.Binary and Data.Serialize for vector
--   
--   Instances for Binary for the types defined in the vector package,
--   making it easy to serialize vectors to and from disk. We use the
--   generic interface to vectors, so all vector types are supported.
--   Specific instances are provided for unboxed, boxed and storable
--   vectors.
--   
--   To serialize a vector:
--   
--   <pre>
--   *Data.Vector.Binary&gt; let v = Data.Vector.fromList [1..10]
--   *Data.Vector.Binary&gt; v
--   fromList [1,2,3,4,5,6,7,8,9,10] :: Data.Vector.Vector
--   *Data.Vector.Binary&gt; encode v
--   Chunk "\NUL\NUL\NUL\NUL\NUL...\NUL\NUL\NUL\t\NUL\NUL\NUL\NUL\n" Empty
--   </pre>
--   
--   Which you can in turn compress before writing to disk:
--   
--   <pre>
--   compress . encode $ v
--   Chunk "\US\139\b\NUL\NUL\N...\229\240,\254:\NUL\NUL\NUL" Empty
--   </pre>
@package vector-binary-instances
@version 0.2.3.3


module Data.Vector.Binary

-- | Generic function for vector deserialization.
genericGetVector :: (Vector v a, Binary a) => Get (v a)

-- | Deserialize vector using custom parsers.
genericGetVectorWith :: (Vector v a, Binary a) => Get Int -> Get a -> Get (v a)

-- | Generic put for anything in the G.Vector class.
genericPutVector :: (Vector v a, Binary a) => v a -> Put

-- | Generic put for anything in the G.Vector class which uses custom
--   encoders.
genericPutVectorWith :: (Vector v a, Binary a) => (Int -> Put) -> (a -> Put) -> v a -> Put
instance Data.Binary.Class.Binary a => Data.Binary.Class.Binary (Data.Vector.Vector a)
instance (Data.Vector.Unboxed.Base.Unbox a, Data.Binary.Class.Binary a) => Data.Binary.Class.Binary (Data.Vector.Unboxed.Base.Vector a)
instance (Data.Primitive.Types.Prim a, Data.Binary.Class.Binary a) => Data.Binary.Class.Binary (Data.Vector.Primitive.Vector a)
instance (Foreign.Storable.Storable a, Data.Binary.Class.Binary a) => Data.Binary.Class.Binary (Data.Vector.Storable.Vector a)
