bytes 0.7 → 0.8
raw patch · 5 files changed
+57/−1 lines, 5 filesdep +containersdep ~binaryPVP ok
version bump matches the API change (PVP)
Dependencies added: containers
Dependency ranges changed: binary
API changes (from Hackage documentation)
+ Data.Bytes.Serial: instance (Serial k, Serial v) => Serial (Map k v)
+ Data.Bytes.Serial: instance Serial IntSet
+ Data.Bytes.Serial: instance Serial a => Serial (Seq a)
+ Data.Bytes.Serial: instance Serial a => Serial (Set a)
+ Data.Bytes.Serial: instance Serial k => Serial1 (Map k)
+ Data.Bytes.Serial: instance Serial v => Serial (IntMap v)
+ Data.Bytes.Serial: instance Serial1 IntMap
+ Data.Bytes.Serial: instance Serial1 Seq
+ Data.Bytes.Serial: instance Serial1 Set
+ Data.Bytes.Serial: instance Serial2 Map
Files
- CHANGELOG.markdown +4/−0
- bytes.cabal +2/−1
- src/Data/Bytes/Get.hs +1/−0
- src/Data/Bytes/Put.hs +1/−0
- src/Data/Bytes/Serial.hs +49/−0
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+0.8+-----+* Trustworthiness+ 0.4 --- * Added a missing () instance
bytes.cabal view
@@ -1,6 +1,6 @@ name: bytes category: Data, Serialization-version: 0.7+version: 0.8 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE@@ -45,6 +45,7 @@ binary >= 0.5 && < 0.8, bytestring >= 0.9 && < 0.11, cereal >= 0.3.5 && < 0.4,+ containers >= 0.5 && < 1, ghc-prim, mtl >= 2.0 && < 2.2, text >= 0.2 && < 1,
src/Data/Bytes/Get.hs view
@@ -2,6 +2,7 @@ {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE DefaultSignatures #-}+{-# LANGUAGE Trustworthy #-} -------------------------------------------------------------------- -- | -- Copyright : (c) Edward Kmett 2013
src/Data/Bytes/Put.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE TypeOperators #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE Trustworthy #-} -------------------------------------------------------------------- -- | -- Copyright : (c) Edward Kmett 2013
src/Data/Bytes/Serial.hs view
@@ -34,12 +34,18 @@ ) where import Control.Monad+import qualified Data.Foldable as F import Data.Bytes.Get import Data.Bytes.Put import Data.ByteString.Internal import Data.ByteString.Lazy as Lazy import Data.ByteString as Strict import Data.Int+import qualified Data.IntMap as IMap+import qualified Data.IntSet as ISet+import qualified Data.Map as Map+import qualified Data.Sequence as Seq+import qualified Data.Set as Set import Data.Text as SText import Data.Text.Encoding as SText import Data.Text.Lazy as LText@@ -167,6 +173,26 @@ serialize = absurd deserialize = fail "I looked into the void." +instance Serial ISet.IntSet where+ serialize = serialize . ISet.toAscList+ deserialize = ISet.fromDistinctAscList `liftM` deserialize++instance Serial a => Serial (Seq.Seq a) where+ serialize = serializeWith serialize+ deserialize = deserializeWith deserialize++instance Serial a => Serial (Set.Set a) where+ serialize = serializeWith serialize+ deserialize = deserializeWith deserialize++instance Serial v => Serial (IMap.IntMap v) where+ serialize = serializeWith serialize+ deserialize = deserializeWith deserialize++instance (Serial k, Serial v) => Serial (Map.Map k v) where+ serialize = serializeWith serialize+ deserialize = deserializeWith deserialize+ ------------------------------------------------------------------------------ -- Generic Serialization ------------------------------------------------------------------------------@@ -253,6 +279,24 @@ serializeWith = serializeWith2 serialize deserializeWith = deserializeWith2 deserialize +instance Serial1 Seq.Seq where+ serializeWith pv = serializeWith pv . F.toList+ deserializeWith gv = Seq.fromList `liftM` deserializeWith gv++instance Serial1 Set.Set where+ serializeWith pv = serializeWith pv . Set.toAscList+ deserializeWith gv = Set.fromDistinctAscList `liftM` deserializeWith gv++instance Serial1 IMap.IntMap where+ serializeWith pv = serializeWith (serializeWith2 serialize pv)+ . IMap.toAscList+ deserializeWith gv = IMap.fromDistinctAscList+ `liftM` deserializeWith (deserializeWith2 deserialize gv)++instance Serial k => Serial1 (Map.Map k) where+ serializeWith = serializeWith2 serialize+ deserializeWith = deserializeWith2 deserialize+ serialize1 :: (MonadPut m, Serial1 f, Serial a) => f a -> m () serialize1 = serializeWith serialize {-# INLINE serialize1 #-}@@ -347,3 +391,8 @@ instance (Serial a, Serial b, Serial c) => Serial2 ((,,,,) a b c) where serializeWith2 f g (a, b, c, d, e) = serialize a >> serialize b >> serialize c >> f d >> g e deserializeWith2 m n = liftM5 (,,,,) deserialize deserialize deserialize m n++instance Serial2 Map.Map where+ serializeWith2 pk pv = serializeWith (serializeWith2 pk pv) . Map.toAscList+ deserializeWith2 gk gv = Map.fromDistinctAscList+ `liftM` deserializeWith (deserializeWith2 gk gv)