cereal 0.2 → 0.3.0.0
raw patch · 3 files changed
+13/−20 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Data.Serialize: data Get a
- Data.Serialize: getWord8 :: Get Word8
- Data.Serialize: instance (Serialize a) => Serialize (Maybe a)
- Data.Serialize: instance (Serialize a) => Serialize [a]
- Data.Serialize: instance (Serialize e) => Serialize (IntMap e)
- Data.Serialize: instance (Serialize e) => Serialize (Seq e)
- Data.Serialize: instance (Serialize e) => Serialize (Tree e)
- Data.Serialize: putWord8 :: Putter Word8
- Data.Serialize: type Put = PutM ()
- Data.Serialize: type Putter a = a -> Put
+ Data.Serialize: instance Serialize a => Serialize (Maybe a)
+ Data.Serialize: instance Serialize a => Serialize [a]
+ Data.Serialize: instance Serialize e => Serialize (IntMap e)
+ Data.Serialize: instance Serialize e => Serialize (Seq e)
+ Data.Serialize: instance Serialize e => Serialize (Tree e)
- Data.Serialize: decode :: (Serialize a) => ByteString -> Either String a
+ Data.Serialize: decode :: Serialize a => ByteString -> Either String a
- Data.Serialize: encode :: (Serialize a) => a -> ByteString
+ Data.Serialize: encode :: Serialize a => a -> ByteString
- Data.Serialize: get :: (Serialize t) => Get t
+ Data.Serialize: get :: Serialize t => Get t
- Data.Serialize: put :: (Serialize t) => Putter t
+ Data.Serialize: put :: Serialize t => Putter t
- Data.Serialize.Get: getMapOf :: (Ord k) => Get k -> Get a -> Get (Map k a)
+ Data.Serialize.Get: getMapOf :: Ord k => Get k -> Get a -> Get (Map k a)
- Data.Serialize.Get: getSetOf :: (Ord a) => Get a -> Get (Set a)
+ Data.Serialize.Get: getSetOf :: Ord a => Get a -> Get (Set a)
- Data.Serialize.Get: isolate :: String -> Int -> Get a -> Get a
+ Data.Serialize.Get: isolate :: Int -> Get a -> Get a
- Data.Serialize.Put: putMapOf :: (Ord k) => Putter k -> Putter a -> Putter (Map k a)
+ Data.Serialize.Put: putMapOf :: Ord k => Putter k -> Putter a -> Putter (Map k a)
Files
- cereal.cabal +1/−1
- src/Data/Serialize.hs +5/−12
- src/Data/Serialize/Get.hs +7/−7
cereal.cabal view
@@ -1,5 +1,5 @@ name: cereal-version: 0.2+version: 0.3.0.0 license: BSD3 license-file: LICENSE author: Lennart Kolmodin <kolmodin@dtek.chalmers.se>, Galois Inc.
src/Data/Serialize.hs view
@@ -20,20 +20,12 @@ -- $example - -- * The Get and Put monads- , Get- , Put- , Putter-- -- * Useful helpers for writing instances- , putWord8- , getWord8- -- * Serialize serialisation , encode , decode - , module Data.Word -- useful+ , module Data.Serialize.Get+ , module Data.Serialize.Put ) where @@ -70,12 +62,13 @@ ------------------------------------------------------------------------ -- Wrappers to run the underlying monad --- | Encode a value using binary serialisation to a lazy ByteString.+-- | Encode a value using binary serialisation to a strict ByteString. -- encode :: Serialize a => a -> ByteString encode = runPut . put --- | Decode a value from a lazy ByteString, reconstructing the original structure.+-- | Decode a value from a strict ByteString, reconstructing the original+-- structure. -- decode :: Serialize a => ByteString -> Either String a decode = runGet get
src/Data/Serialize/Get.hs view
@@ -149,7 +149,7 @@ put s = Get (\_ _ k -> k s ()) label :: String -> Get a -> Get a-label l m = Get (\s0 f k -> unGet m s0 (\ls s -> f (l:ls) s) k)+label l m = Get (\s0 f k -> unGet m s0 (\ls -> f (l:ls)) k) finalK :: Success a a finalK s a = Right (a,s)@@ -179,8 +179,8 @@ -- | Isolate an action to operating within a fixed block of bytes. The action -- is required to consume all the bytes that it is isolated to.-isolate :: String -> Int -> Get a -> Get a-isolate l n m = label l $ do+isolate :: Int -> Get a -> Get a+isolate n m = do when (n < 0) (fail "Attempted to isolate a negative number of bytes") s <- get let left = B.length s@@ -272,7 +272,7 @@ return $! B.copy bs getLazyByteString :: Int64 -> Get L.ByteString-getLazyByteString n = f `fmap` getBytes (fromIntegral n)+getLazyByteString n = f `fmap` getByteString (fromIntegral n) where f bs = L.fromChunks [bs] @@ -293,13 +293,13 @@ -- Primtives -- helper, get a raw Ptr onto a strict ByteString copied out of the--- underlying lazy byteString. So many indirections from the raw parser--- state that my head hurts...+-- underlying strict byteString. getPtr :: Storable a => Int -> Get a getPtr n = do (fp,o,_) <- B.toForeignPtr `fmap` getBytes n- return . B.inlinePerformIO $ withForeignPtr fp $ \p -> peek (castPtr $ p `plusPtr` o)+ let k p = peek (castPtr (p `plusPtr` o))+ return (B.inlinePerformIO (withForeignPtr fp k)) ------------------------------------------------------------------------